From 89a1a1b0a3f159372e9494cf2595b35e0dcd8a7b Mon Sep 17 00:00:00 2001 From: "kong[bot]" <123129154+kong[bot]@users.noreply.github.com> Date: Sat, 14 Nov 2026 19:29:52 +0000 Subject: [PATCH] chore(api): sync OpenAPI contract --- internal/apiclient/client.gen.go | 7926 ++++++++++++++++++++---------- openapi/cli-surface.yaml | 497 ++ openapi/openapi.yaml | 3867 ++++++++++----- 3 files changed, 8484 insertions(+), 3806 deletions(-) create mode 100644 openapi/cli-surface.yaml diff --git a/internal/apiclient/client.gen.go b/internal/apiclient/client.gen.go index 340fd175..916304f6 100644 --- a/internal/apiclient/client.gen.go +++ b/internal/apiclient/client.gen.go @@ -48,6 +48,54 @@ func (e AccountSessionKind) Valid() bool { } } +// Defines values for AikidoRegion. +const ( + Au AikidoRegion = "au" + Eu AikidoRegion = "eu" + Me AikidoRegion = "me" + Us AikidoRegion = "us" +) + +// Valid indicates whether the value is a known member of the AikidoRegion enum. +func (e AikidoRegion) Valid() bool { + switch e { + case Au: + return true + case Eu: + return true + case Me: + return true + case Us: + return true + default: + return false + } +} + +// Defines values for AikidoSeverity. +const ( + AikidoSeverityCritical AikidoSeverity = "critical" + AikidoSeverityHigh AikidoSeverity = "high" + AikidoSeverityLow AikidoSeverity = "low" + AikidoSeverityMedium AikidoSeverity = "medium" +) + +// Valid indicates whether the value is a known member of the AikidoSeverity enum. +func (e AikidoSeverity) Valid() bool { + switch e { + case AikidoSeverityCritical: + return true + case AikidoSeverityHigh: + return true + case AikidoSeverityLow: + return true + case AikidoSeverityMedium: + return true + default: + return false + } +} + // Defines values for AuthConfigAllowedEmailDomainsMode. const ( AuthConfigAllowedEmailDomainsModeDisabled AuthConfigAllowedEmailDomainsMode = "disabled" @@ -339,6 +387,39 @@ func (e CapabilityStatus) Valid() bool { } } +// Defines values for ConnectorCreateType. +const ( + ConnectorCreateTypeAikido ConnectorCreateType = "aikido" +) + +// Valid indicates whether the value is a known member of the ConnectorCreateType enum. +func (e ConnectorCreateType) Valid() bool { + switch e { + case ConnectorCreateTypeAikido: + return true + default: + return false + } +} + +// Defines values for ConnectorType. +const ( + ConnectorTypeAikido ConnectorType = "aikido" + ConnectorTypeSlack ConnectorType = "slack" +) + +// Valid indicates whether the value is a known member of the ConnectorType enum. +func (e ConnectorType) Valid() bool { + switch e { + case ConnectorTypeAikido: + return true + case ConnectorTypeSlack: + return true + default: + return false + } +} + // Defines values for CreateDatabaseRequestDatabaseType. const ( CreateDatabaseRequestDatabaseTypeVolcanoDb2xl CreateDatabaseRequestDatabaseType = "volcano-db-2xl" @@ -1610,16 +1691,16 @@ func (e FrontendVariableScope) Valid() bool { // Defines values for FrontendCandidateConfigurationStatus. const ( - Changed FrontendCandidateConfigurationStatus = "changed" - Current FrontendCandidateConfigurationStatus = "current" + FrontendCandidateConfigurationStatusChanged FrontendCandidateConfigurationStatus = "changed" + FrontendCandidateConfigurationStatusCurrent FrontendCandidateConfigurationStatus = "current" ) // Valid indicates whether the value is a known member of the FrontendCandidateConfigurationStatus enum. func (e FrontendCandidateConfigurationStatus) Valid() bool { switch e { - case Changed: + case FrontendCandidateConfigurationStatusChanged: return true - case Current: + case FrontendCandidateConfigurationStatusCurrent: return true default: return false @@ -1950,6 +2031,102 @@ func (e FunctionStatus) Valid() bool { } } +// Defines values for FunctionCandidateConfigurationStatus. +const ( + FunctionCandidateConfigurationStatusChanged FunctionCandidateConfigurationStatus = "changed" + FunctionCandidateConfigurationStatusCurrent FunctionCandidateConfigurationStatus = "current" +) + +// Valid indicates whether the value is a known member of the FunctionCandidateConfigurationStatus enum. +func (e FunctionCandidateConfigurationStatus) Valid() bool { + switch e { + case FunctionCandidateConfigurationStatusChanged: + return true + case FunctionCandidateConfigurationStatusCurrent: + return true + default: + return false + } +} + +// Defines values for FunctionCandidateExposure. +const ( + Private FunctionCandidateExposure = "private" +) + +// Valid indicates whether the value is a known member of the FunctionCandidateExposure enum. +func (e FunctionCandidateExposure) Valid() bool { + switch e { + case Private: + return true + default: + return false + } +} + +// Defines values for FunctionCandidateStatus. +const ( + FunctionCandidateStatusCreating FunctionCandidateStatus = "creating" + FunctionCandidateStatusDeleting FunctionCandidateStatus = "deleting" + FunctionCandidateStatusError FunctionCandidateStatus = "error" + FunctionCandidateStatusReady FunctionCandidateStatus = "ready" +) + +// Valid indicates whether the value is a known member of the FunctionCandidateStatus enum. +func (e FunctionCandidateStatus) Valid() bool { + switch e { + case FunctionCandidateStatusCreating: + return true + case FunctionCandidateStatusDeleting: + return true + case FunctionCandidateStatusError: + return true + case FunctionCandidateStatusReady: + return true + default: + return false + } +} + +// Defines values for FunctionCandidateDeploymentOperation. +const ( + FunctionCandidateDeploymentOperationDeploy FunctionCandidateDeploymentOperation = "deploy" + FunctionCandidateDeploymentOperationRedeploy FunctionCandidateDeploymentOperation = "redeploy" +) + +// Valid indicates whether the value is a known member of the FunctionCandidateDeploymentOperation enum. +func (e FunctionCandidateDeploymentOperation) Valid() bool { + switch e { + case FunctionCandidateDeploymentOperationDeploy: + return true + case FunctionCandidateDeploymentOperationRedeploy: + return true + default: + return false + } +} + +// Defines values for FunctionCandidateDeploymentStatus. +const ( + FunctionCandidateDeploymentStatusActive FunctionCandidateDeploymentStatus = "active" + FunctionCandidateDeploymentStatusFailed FunctionCandidateDeploymentStatus = "failed" + FunctionCandidateDeploymentStatusProvisioning FunctionCandidateDeploymentStatus = "provisioning" +) + +// Valid indicates whether the value is a known member of the FunctionCandidateDeploymentStatus enum. +func (e FunctionCandidateDeploymentStatus) Valid() bool { + switch e { + case FunctionCandidateDeploymentStatusActive: + return true + case FunctionCandidateDeploymentStatusFailed: + return true + case FunctionCandidateDeploymentStatusProvisioning: + return true + default: + return false + } +} + // Defines values for FunctionDeploymentDeploySource. const ( FunctionDeploymentDeploySourceApi FunctionDeploymentDeploySource = "api" @@ -2106,6 +2283,24 @@ func (e FunctionKindFilter) Valid() bool { } } +// Defines values for FunctionProductionEnvironmentStatus. +const ( + FunctionProductionEnvironmentStatusCurrent FunctionProductionEnvironmentStatus = "current" + FunctionProductionEnvironmentStatusOutOfDate FunctionProductionEnvironmentStatus = "out_of_date" +) + +// Valid indicates whether the value is a known member of the FunctionProductionEnvironmentStatus enum. +func (e FunctionProductionEnvironmentStatus) Valid() bool { + switch e { + case FunctionProductionEnvironmentStatusCurrent: + return true + case FunctionProductionEnvironmentStatusOutOfDate: + return true + default: + return false + } +} + // Defines values for FunctionSchedulerHealth. const ( FunctionSchedulerHealthFailing FunctionSchedulerHealth = "failing" @@ -2157,6 +2352,42 @@ func (e FunctionSchedulerScheduleKind) Valid() bool { } } +// Defines values for FunctionServingActivationKind. +const ( + FunctionServingActivationKindDeploy FunctionServingActivationKind = "deploy" + FunctionServingActivationKindPromotion FunctionServingActivationKind = "promotion" + FunctionServingActivationKindRollback FunctionServingActivationKind = "rollback" +) + +// Valid indicates whether the value is a known member of the FunctionServingActivationKind enum. +func (e FunctionServingActivationKind) Valid() bool { + switch e { + case FunctionServingActivationKindDeploy: + return true + case FunctionServingActivationKindPromotion: + return true + case FunctionServingActivationKindRollback: + return true + default: + return false + } +} + +// Defines values for FunctionServingActivationStatus. +const ( + Applied FunctionServingActivationStatus = "applied" +) + +// Valid indicates whether the value is a known member of the FunctionServingActivationStatus enum. +func (e FunctionServingActivationStatus) Valid() bool { + switch e { + case Applied: + return true + default: + return false + } +} + // Defines values for FunctionVisibility. const ( FunctionVisibilityAuthenticated FunctionVisibility = "authenticated" @@ -2309,6 +2540,7 @@ const ( IssueSourceBuild IssueSource = "build" IssueSourceCodeQuality IssueSource = "code_quality" IssueSourceReport IssueSource = "report" + IssueSourceRequest IssueSource = "request" IssueSourceRuntime IssueSource = "runtime" ) @@ -2321,6 +2553,8 @@ func (e IssueSource) Valid() bool { return true case IssueSourceReport: return true + case IssueSourceRequest: + return true case IssueSourceRuntime: return true default: @@ -2415,6 +2649,36 @@ func (e LavaflowDraftReason) Valid() bool { } } +// Defines values for LavaflowFixOutcomeState. +const ( + AwaitingDeploy LavaflowFixOutcomeState = "awaiting_deploy" + Effective LavaflowFixOutcomeState = "effective" + Ineffective LavaflowFixOutcomeState = "ineffective" + Regressed LavaflowFixOutcomeState = "regressed" + Reverted LavaflowFixOutcomeState = "reverted" + Watching LavaflowFixOutcomeState = "watching" +) + +// Valid indicates whether the value is a known member of the LavaflowFixOutcomeState enum. +func (e LavaflowFixOutcomeState) Valid() bool { + switch e { + case AwaitingDeploy: + return true + case Effective: + return true + case Ineffective: + return true + case Regressed: + return true + case Reverted: + return true + case Watching: + return true + default: + return false + } +} + // Defines values for LavaflowInvolvedResourceRoles. const ( LavaflowInvolvedResourceRolesCause LavaflowInvolvedResourceRoles = "cause" @@ -2436,6 +2700,129 @@ func (e LavaflowInvolvedResourceRoles) Valid() bool { } } +// Defines values for LavaflowIssueSummarySeverity. +const ( + LavaflowIssueSeverityCritical LavaflowIssueSummarySeverity = "critical" + LavaflowIssueSeverityMajor LavaflowIssueSummarySeverity = "major" + LavaflowIssueSeverityMinor LavaflowIssueSummarySeverity = "minor" + LavaflowIssueSeverityNit LavaflowIssueSummarySeverity = "nit" +) + +// Valid indicates whether the value is a known member of the LavaflowIssueSummarySeverity enum. +func (e LavaflowIssueSummarySeverity) Valid() bool { + switch e { + case LavaflowIssueSeverityCritical: + return true + case LavaflowIssueSeverityMajor: + return true + case LavaflowIssueSeverityMinor: + return true + case LavaflowIssueSeverityNit: + return true + default: + return false + } +} + +// Defines values for LavaflowLineageConfidence. +const ( + LavaflowLineageConfidenceStrong LavaflowLineageConfidence = "strong" + LavaflowLineageConfidenceWeak LavaflowLineageConfidence = "weak" +) + +// Valid indicates whether the value is a known member of the LavaflowLineageConfidence enum. +func (e LavaflowLineageConfidence) Valid() bool { + switch e { + case LavaflowLineageConfidenceStrong: + return true + case LavaflowLineageConfidenceWeak: + return true + default: + return false + } +} + +// Defines values for LavaflowLineageRelation. +const ( + Recurrence LavaflowLineageRelation = "recurrence" + Regression LavaflowLineageRelation = "regression" +) + +// Valid indicates whether the value is a known member of the LavaflowLineageRelation enum. +func (e LavaflowLineageRelation) Valid() bool { + switch e { + case Recurrence: + return true + case Regression: + return true + default: + return false + } +} + +// Defines values for LavaflowLineageRemedy. +const ( + LavaflowLineageRemedyFix LavaflowLineageRemedy = "fix" + LavaflowLineageRemedyNone LavaflowLineageRemedy = "none" + LavaflowLineageRemedyRevert LavaflowLineageRemedy = "revert" +) + +// Valid indicates whether the value is a known member of the LavaflowLineageRemedy enum. +func (e LavaflowLineageRemedy) Valid() bool { + switch e { + case LavaflowLineageRemedyFix: + return true + case LavaflowLineageRemedyNone: + return true + case LavaflowLineageRemedyRevert: + return true + default: + return false + } +} + +// Defines values for LavaflowLineageState. +const ( + LavaflowLineageStateActive LavaflowLineageState = "active" + LavaflowLineageStateHeld LavaflowLineageState = "held" + LavaflowLineageStateSettled LavaflowLineageState = "settled" +) + +// Valid indicates whether the value is a known member of the LavaflowLineageState enum. +func (e LavaflowLineageState) Valid() bool { + switch e { + case LavaflowLineageStateActive: + return true + case LavaflowLineageStateHeld: + return true + case LavaflowLineageStateSettled: + return true + default: + return false + } +} + +// Defines values for LavaflowLineageEvidenceConfidence. +const ( + LavaflowLineageEvidenceConfidenceDisplay LavaflowLineageEvidenceConfidence = "display" + LavaflowLineageEvidenceConfidenceStrong LavaflowLineageEvidenceConfidence = "strong" + LavaflowLineageEvidenceConfidenceWeak LavaflowLineageEvidenceConfidence = "weak" +) + +// Valid indicates whether the value is a known member of the LavaflowLineageEvidenceConfidence enum. +func (e LavaflowLineageEvidenceConfidence) Valid() bool { + switch e { + case LavaflowLineageEvidenceConfidenceDisplay: + return true + case LavaflowLineageEvidenceConfidenceStrong: + return true + case LavaflowLineageEvidenceConfidenceWeak: + return true + default: + return false + } +} + // Defines values for LavaflowMergeStatus. const ( LavaflowMergeStatusHeld LavaflowMergeStatus = "held" @@ -2463,6 +2850,63 @@ func (e LavaflowMergeStatus) Valid() bool { } } +// Defines values for LavaflowOutcomeCoverageEventTimeBasis. +const ( + ConfirmedMergeTime LavaflowOutcomeCoverageEventTimeBasis = "confirmed_merge_time" + FirstRecordedLiveConfirmation LavaflowOutcomeCoverageEventTimeBasis = "first_recorded_live_confirmation" + RecordedAutomaticResolution LavaflowOutcomeCoverageEventTimeBasis = "recorded_automatic_resolution" +) + +// Valid indicates whether the value is a known member of the LavaflowOutcomeCoverageEventTimeBasis enum. +func (e LavaflowOutcomeCoverageEventTimeBasis) Valid() bool { + switch e { + case ConfirmedMergeTime: + return true + case FirstRecordedLiveConfirmation: + return true + case RecordedAutomaticResolution: + return true + default: + return false + } +} + +// Defines values for LavaflowOutcomeCoverageStatus. +const ( + LavaflowOutcomeCoverageStatusComplete LavaflowOutcomeCoverageStatus = "complete" + LavaflowOutcomeCoverageStatusPartial LavaflowOutcomeCoverageStatus = "partial" + LavaflowOutcomeCoverageStatusUnavailable LavaflowOutcomeCoverageStatus = "unavailable" +) + +// Valid indicates whether the value is a known member of the LavaflowOutcomeCoverageStatus enum. +func (e LavaflowOutcomeCoverageStatus) Valid() bool { + switch e { + case LavaflowOutcomeCoverageStatusComplete: + return true + case LavaflowOutcomeCoverageStatusPartial: + return true + case LavaflowOutcomeCoverageStatusUnavailable: + return true + default: + return false + } +} + +// Defines values for LavaflowOutcomeCurrentScope. +const ( + ConfirmedCodeQuality LavaflowOutcomeCurrentScope = "confirmed_code_quality" +) + +// Valid indicates whether the value is a known member of the LavaflowOutcomeCurrentScope enum. +func (e LavaflowOutcomeCurrentScope) Valid() bool { + switch e { + case ConfirmedCodeQuality: + return true + default: + return false + } +} + // Defines values for LavaflowPullRequestState. const ( LavaflowPullRequestStateClosed LavaflowPullRequestState = "closed" @@ -2532,6 +2976,30 @@ func (e LavaflowReviewVerdict) Valid() bool { } } +// Defines values for LavaflowReviewFindingSeverity. +const ( + LavaflowReviewFindingSeverityCritical LavaflowReviewFindingSeverity = "critical" + LavaflowReviewFindingSeverityMajor LavaflowReviewFindingSeverity = "major" + LavaflowReviewFindingSeverityMinor LavaflowReviewFindingSeverity = "minor" + LavaflowReviewFindingSeverityNit LavaflowReviewFindingSeverity = "nit" +) + +// Valid indicates whether the value is a known member of the LavaflowReviewFindingSeverity enum. +func (e LavaflowReviewFindingSeverity) Valid() bool { + switch e { + case LavaflowReviewFindingSeverityCritical: + return true + case LavaflowReviewFindingSeverityMajor: + return true + case LavaflowReviewFindingSeverityMinor: + return true + case LavaflowReviewFindingSeverityNit: + return true + default: + return false + } +} + // Defines values for LavaflowReviewStop. const ( LavaflowReviewStopBudgetExhausted LavaflowReviewStop = "budget_exhausted" @@ -2745,198 +3213,6 @@ func (e LavaflowScanStatus) Valid() bool { } } -// Defines values for LavaflowSkillErrorRules. -const ( - Characters LavaflowSkillErrorRules = "characters" - Credential LavaflowSkillErrorRules = "credential" - CredentialScan LavaflowSkillErrorRules = "credential_scan" - Directive LavaflowSkillErrorRules = "directive" - Email LavaflowSkillErrorRules = "email" - Link LavaflowSkillErrorRules = "link" - Policy LavaflowSkillErrorRules = "policy" - ReadValue LavaflowSkillErrorRules = "read_value" - Sanitizer LavaflowSkillErrorRules = "sanitizer" - Secret LavaflowSkillErrorRules = "secret" - Shape LavaflowSkillErrorRules = "shape" -) - -// Valid indicates whether the value is a known member of the LavaflowSkillErrorRules enum. -func (e LavaflowSkillErrorRules) Valid() bool { - switch e { - case Characters: - return true - case Credential: - return true - case CredentialScan: - return true - case Directive: - return true - case Email: - return true - case Link: - return true - case Policy: - return true - case ReadValue: - return true - case Sanitizer: - return true - case Secret: - return true - case Shape: - return true - default: - return false - } -} - -// Defines values for LavaflowSkillLearning. -const ( - LavaflowSkillLearningAuto LavaflowSkillLearning = "auto" - LavaflowSkillLearningOff LavaflowSkillLearning = "off" - LavaflowSkillLearningReview LavaflowSkillLearning = "review" -) - -// Valid indicates whether the value is a known member of the LavaflowSkillLearning enum. -func (e LavaflowSkillLearning) Valid() bool { - switch e { - case LavaflowSkillLearningAuto: - return true - case LavaflowSkillLearningOff: - return true - case LavaflowSkillLearningReview: - return true - default: - return false - } -} - -// Defines values for LavaflowSkillRetiredReason. -const ( - LavaflowSkillRetiredReasonGate LavaflowSkillRetiredReason = "gate" - LavaflowSkillRetiredReasonHarmful LavaflowSkillRetiredReason = "harmful" - LavaflowSkillRetiredReasonOwner LavaflowSkillRetiredReason = "owner" - LavaflowSkillRetiredReasonRepositoryChanged LavaflowSkillRetiredReason = "repository_changed" - LavaflowSkillRetiredReasonStale LavaflowSkillRetiredReason = "stale" - LavaflowSkillRetiredReasonUnused LavaflowSkillRetiredReason = "unused" -) - -// Valid indicates whether the value is a known member of the LavaflowSkillRetiredReason enum. -func (e LavaflowSkillRetiredReason) Valid() bool { - switch e { - case LavaflowSkillRetiredReasonGate: - return true - case LavaflowSkillRetiredReasonHarmful: - return true - case LavaflowSkillRetiredReasonOwner: - return true - case LavaflowSkillRetiredReasonRepositoryChanged: - return true - case LavaflowSkillRetiredReasonStale: - return true - case LavaflowSkillRetiredReasonUnused: - return true - default: - return false - } -} - -// Defines values for LavaflowSkillScope. -const ( - LavaflowSkillScopeProject LavaflowSkillScope = "project" - LavaflowSkillScopeVolcano LavaflowSkillScope = "volcano" -) - -// Valid indicates whether the value is a known member of the LavaflowSkillScope enum. -func (e LavaflowSkillScope) Valid() bool { - switch e { - case LavaflowSkillScopeProject: - return true - case LavaflowSkillScopeVolcano: - return true - default: - return false - } -} - -// Defines values for LavaflowSkillSourceAct. -const ( - LavaflowSkillSourceActComment LavaflowSkillSourceAct = "comment" - LavaflowSkillSourceActCommit LavaflowSkillSourceAct = "commit" - LavaflowSkillSourceActReview LavaflowSkillSourceAct = "review" -) - -// Valid indicates whether the value is a known member of the LavaflowSkillSourceAct enum. -func (e LavaflowSkillSourceAct) Valid() bool { - switch e { - case LavaflowSkillSourceActComment: - return true - case LavaflowSkillSourceActCommit: - return true - case LavaflowSkillSourceActReview: - return true - default: - return false - } -} - -// Defines values for LavaflowSkillSourceKind. -const ( - Person LavaflowSkillSourceKind = "person" - Run LavaflowSkillSourceKind = "run" -) - -// Valid indicates whether the value is a known member of the LavaflowSkillSourceKind enum. -func (e LavaflowSkillSourceKind) Valid() bool { - switch e { - case Person: - return true - case Run: - return true - default: - return false - } -} - -// Defines values for LavaflowSkillStatus. -const ( - LavaflowSkillStatusActive LavaflowSkillStatus = "active" - LavaflowSkillStatusProposed LavaflowSkillStatus = "proposed" - LavaflowSkillStatusRetired LavaflowSkillStatus = "retired" -) - -// Valid indicates whether the value is a known member of the LavaflowSkillStatus enum. -func (e LavaflowSkillStatus) Valid() bool { - switch e { - case LavaflowSkillStatusActive: - return true - case LavaflowSkillStatusProposed: - return true - case LavaflowSkillStatusRetired: - return true - default: - return false - } -} - -// Defines values for LavaflowSkillUpdateStatus. -const ( - LavaflowSkillUpdateStatusActive LavaflowSkillUpdateStatus = "active" - LavaflowSkillUpdateStatusRetired LavaflowSkillUpdateStatus = "retired" -) - -// Valid indicates whether the value is a known member of the LavaflowSkillUpdateStatus enum. -func (e LavaflowSkillUpdateStatus) Valid() bool { - switch e { - case LavaflowSkillUpdateStatusActive: - return true - case LavaflowSkillUpdateStatusRetired: - return true - default: - return false - } -} - // Defines values for LavaflowSkipReason. const ( LavaflowSkipReasonConventionUnsatisfiable LavaflowSkipReason = "convention_unsatisfiable" @@ -3003,6 +3279,42 @@ func (e LavaflowSkipReason) Valid() bool { } } +// Defines values for LavaflowSourceUnavailableReason. +const ( + LavaflowSourceUnavailableReasonCommitNotOnProductionBranch LavaflowSourceUnavailableReason = "commit_not_on_production_branch" + LavaflowSourceUnavailableReasonDeploymentUnattributed LavaflowSourceUnavailableReason = "deployment_unattributed" + LavaflowSourceUnavailableReasonNoCommit LavaflowSourceUnavailableReason = "no_commit" + LavaflowSourceUnavailableReasonNoRepository LavaflowSourceUnavailableReason = "no_repository" + LavaflowSourceUnavailableReasonOtherRepository LavaflowSourceUnavailableReason = "other_repository" + LavaflowSourceUnavailableReasonRepositoryUnreadable LavaflowSourceUnavailableReason = "repository_unreadable" + LavaflowSourceUnavailableReasonUncommittedChanges LavaflowSourceUnavailableReason = "uncommitted_changes" + LavaflowSourceUnavailableReasonUnverifiedCommit LavaflowSourceUnavailableReason = "unverified_commit" +) + +// Valid indicates whether the value is a known member of the LavaflowSourceUnavailableReason enum. +func (e LavaflowSourceUnavailableReason) Valid() bool { + switch e { + case LavaflowSourceUnavailableReasonCommitNotOnProductionBranch: + return true + case LavaflowSourceUnavailableReasonDeploymentUnattributed: + return true + case LavaflowSourceUnavailableReasonNoCommit: + return true + case LavaflowSourceUnavailableReasonNoRepository: + return true + case LavaflowSourceUnavailableReasonOtherRepository: + return true + case LavaflowSourceUnavailableReasonRepositoryUnreadable: + return true + case LavaflowSourceUnavailableReasonUncommittedChanges: + return true + case LavaflowSourceUnavailableReasonUnverifiedCommit: + return true + default: + return false + } +} + // Defines values for LiveLogLevel. const ( LiveLogLevelDebug LiveLogLevel = "debug" @@ -3033,6 +3345,21 @@ func (e LiveLogLevel) Valid() bool { } } +// Defines values for LogAppRequestResourceType. +const ( + LogAppRequestResourceTypeApp LogAppRequestResourceType = "app" +) + +// Valid indicates whether the value is a known member of the LogAppRequestResourceType enum. +func (e LogAppRequestResourceType) Valid() bool { + switch e { + case LogAppRequestResourceTypeApp: + return true + default: + return false + } +} + // Defines values for LogDatabaseRequestResourceType. const ( LogDatabaseRequestResourceTypeDatabase LogDatabaseRequestResourceType = "database" @@ -3098,6 +3425,7 @@ func (e LogFunctionRequestResourceType) Valid() bool { // Defines values for LogResourceType. const ( + LogResourceTypeApp LogResourceType = "app" LogResourceTypeDatabase LogResourceType = "database" LogResourceTypeFrontend LogResourceType = "frontend" LogResourceTypeFunction LogResourceType = "function" @@ -3106,6 +3434,8 @@ const ( // Valid indicates whether the value is a known member of the LogResourceType enum. func (e LogResourceType) Valid() bool { switch e { + case LogResourceTypeApp: + return true case LogResourceTypeDatabase: return true case LogResourceTypeFrontend: @@ -3300,6 +3630,27 @@ func (e ProjectAccessTokenTokenSource) Valid() bool { } } +// Defines values for ProjectAccessTokenListedScope. +const ( + ProjectAccessTokenListedScopeDelegated ProjectAccessTokenListedScope = "delegated" + ProjectAccessTokenListedScopeFull ProjectAccessTokenListedScope = "full" + ProjectAccessTokenListedScopeReadOnly ProjectAccessTokenListedScope = "read_only" +) + +// Valid indicates whether the value is a known member of the ProjectAccessTokenListedScope enum. +func (e ProjectAccessTokenListedScope) Valid() bool { + switch e { + case ProjectAccessTokenListedScopeDelegated: + return true + case ProjectAccessTokenListedScopeFull: + return true + case ProjectAccessTokenListedScopeReadOnly: + return true + default: + return false + } +} + // Defines values for ProjectAccessTokenScope. const ( ProjectAccessTokenScopeFull ProjectAccessTokenScope = "full" @@ -4130,19 +4481,19 @@ func (e ProjectImportTarget) Valid() bool { // Defines values for ProjectMetricsDataStatus. const ( - Complete ProjectMetricsDataStatus = "complete" - NoData ProjectMetricsDataStatus = "no_data" - Partial ProjectMetricsDataStatus = "partial" + ProjectMetricsDataStatusComplete ProjectMetricsDataStatus = "complete" + ProjectMetricsDataStatusNoData ProjectMetricsDataStatus = "no_data" + ProjectMetricsDataStatusPartial ProjectMetricsDataStatus = "partial" ) // Valid indicates whether the value is a known member of the ProjectMetricsDataStatus enum. func (e ProjectMetricsDataStatus) Valid() bool { switch e { - case Complete: + case ProjectMetricsDataStatusComplete: return true - case NoData: + case ProjectMetricsDataStatusNoData: return true - case Partial: + case ProjectMetricsDataStatusPartial: return true default: return false @@ -4532,34 +4883,34 @@ func (e SandboxSessionDesiredState) Valid() bool { // Defines values for SandboxSessionState. const ( - SandboxSessionStateResuming SandboxSessionState = "resuming" - SandboxSessionStateRunning SandboxSessionState = "running" - SandboxSessionStateStarting SandboxSessionState = "starting" - SandboxSessionStateSuspended SandboxSessionState = "suspended" - SandboxSessionStateSuspending SandboxSessionState = "suspending" - SandboxSessionStateTerminated SandboxSessionState = "terminated" - SandboxSessionStateTerminating SandboxSessionState = "terminating" - SandboxSessionStateUnknown SandboxSessionState = "unknown" + Resuming SandboxSessionState = "resuming" + Running SandboxSessionState = "running" + Starting SandboxSessionState = "starting" + Suspended SandboxSessionState = "suspended" + Suspending SandboxSessionState = "suspending" + Terminated SandboxSessionState = "terminated" + Terminating SandboxSessionState = "terminating" + Unknown SandboxSessionState = "unknown" ) // Valid indicates whether the value is a known member of the SandboxSessionState enum. func (e SandboxSessionState) Valid() bool { switch e { - case SandboxSessionStateResuming: + case Resuming: return true - case SandboxSessionStateRunning: + case Running: return true - case SandboxSessionStateStarting: + case Starting: return true - case SandboxSessionStateSuspended: + case Suspended: return true - case SandboxSessionStateSuspending: + case Suspending: return true - case SandboxSessionStateTerminated: + case Terminated: return true - case SandboxSessionStateTerminating: + case Terminating: return true - case SandboxSessionStateUnknown: + case Unknown: return true default: return false @@ -4589,16 +4940,16 @@ func (e SandboxSessionNetworkApplied) Valid() bool { // Defines values for SandboxSessionNetworkEgress. const ( - SandboxSessionNetworkEgressDefault SandboxSessionNetworkEgress = "default" - SandboxSessionNetworkEgressDenyAll SandboxSessionNetworkEgress = "deny_all" + Default SandboxSessionNetworkEgress = "default" + DenyAll SandboxSessionNetworkEgress = "deny_all" ) // Valid indicates whether the value is a known member of the SandboxSessionNetworkEgress enum. func (e SandboxSessionNetworkEgress) Valid() bool { switch e { - case SandboxSessionNetworkEgressDefault: + case Default: return true - case SandboxSessionNetworkEgressDenyAll: + case DenyAll: return true default: return false @@ -6628,6 +6979,33 @@ type AccountSessionList struct { TotalPages *int `json:"total_pages,omitempty"` } +// AikidoConnector An `aikido` connector's workspace. Present when `type` is `aikido`. +type AikidoConnector struct { + // Region The Aikido region the workspace lives in: `eu` for app.aikido.dev, `us` for app.us.aikido.dev, `au` for app.au.aikido.dev, and `me` for app.me.aikido.dev. + Region AikidoRegion `json:"region"` + + // WorkspaceId The workspace's ID in Aikido, which its webhook deliveries name. + WorkspaceId int64 `json:"workspace_id"` +} + +// AikidoConnectorCreate The Aikido workspace's REST API client and webhook signing secret. +type AikidoConnectorCreate struct { + ClientId string `json:"client_id"` + ClientSecret string `json:"client_secret"` + + // Region The Aikido region the workspace lives in: `eu` for app.aikido.dev, `us` for app.us.aikido.dev, `au` for app.au.aikido.dev, and `me` for app.me.aikido.dev. + Region AikidoRegion `json:"region"` + + // WebhookSecret The signing secret from Aikido's webhooks page, which verifies its deliveries. + WebhookSecret string `json:"webhook_secret"` +} + +// AikidoRegion The Aikido region the workspace lives in: `eu` for app.aikido.dev, `us` for app.us.aikido.dev, `au` for app.au.aikido.dev, and `me` for app.me.aikido.dev. +type AikidoRegion string + +// AikidoSeverity An Aikido issue severity, lowest first. +type AikidoSeverity string + // AnonKey defines model for AnonKey. type AnonKey struct { CreatedAt *time.Time `json:"created_at,omitempty"` @@ -7265,6 +7643,46 @@ type ConnectProjectGitRequest struct { RootDirectory *string `json:"root_directory,omitempty"` } +// Connector A link from Volcano to an outside service. A `slack` connector is a Slack workspace the Volcano app is installed in, shared by every Volcano account with a Slack identity connected there. An `aikido` connector is an Aikido workspace one Volcano account connected with its own credentials. +type Connector struct { + // Aikido An `aikido` connector's workspace. Present when `type` is `aikido`. + Aikido *AikidoConnector `json:"aikido,omitempty"` + CreatedAt time.Time `json:"created_at"` + Id openapi_types.UUID `json:"id"` + + // Name The connector's name in its service, such as the Slack or Aikido workspace's name. + Name string `json:"name"` + + // Removable Whether the caller can remove the connector. Only the person who installed the Volcano app in a Slack workspace can; an `aikido` connector is always the caller's own. + Removable bool `json:"removable"` + + // Slack A `slack` connector's workspace. Present when `type` is `slack`. + Slack *SlackConnector `json:"slack,omitempty"` + + // Type The outside service a connector links to. + Type ConnectorType `json:"type"` +} + +// ConnectorCreate defines model for ConnectorCreate. +type ConnectorCreate struct { + // Aikido The Aikido workspace's REST API client and webhook signing secret. + Aikido AikidoConnectorCreate `json:"aikido"` + + // Type The service to connect. Slack installs with `POST /user/slack/installations`. + Type ConnectorCreateType `json:"type"` +} + +// ConnectorCreateType The service to connect. Slack installs with `POST /user/slack/installations`. +type ConnectorCreateType string + +// ConnectorType The outside service a connector links to. +type ConnectorType string + +// ConnectorsResponse defines model for ConnectorsResponse. +type ConnectorsResponse struct { + Connectors []Connector `json:"connectors"` +} + // CreateDatabaseBackupRequest defines model for CreateDatabaseBackupRequest. type CreateDatabaseBackupRequest struct { // Name Backup name, unique within the database. Names beginning with @@ -7411,6 +7829,18 @@ type CreateFunctionSchedulerRequest struct { Schedule ScheduleRequest `json:"schedule"` } +// CreateIssueRequest The project, and an issue a person writes on it, describing what to fix. +type CreateIssueRequest struct { + // Description What to fix, in your words, up to 4,000 characters. It can span lines. Leading and trailing whitespace is trimmed, and a description of only whitespace is refused. + Description string `json:"description"` + + // ProjectId The project to write the issue on. + ProjectId openapi_types.UUID `json:"project_id"` + + // Title A title, on one line, up to 200 characters; whitespace, line breaks included, collapses to single spaces. Omitted, the title is the description's first line, cut to 80 characters with an ellipsis. + Title *string `json:"title,omitempty"` +} + // CreateOAuthConfigRequest defines model for CreateOAuthConfigRequest. type CreateOAuthConfigRequest struct { // ClientId Required for non-device providers. Must not be provided for `provider=device`; server always auto-generates it. @@ -7470,9 +7900,6 @@ type CreateProjectRequest struct { // - `false`: project deploys only to `selected_regions` AllRegions *bool `json:"all_regions,omitempty"` - // InitialPrompt Optional initial builder prompt. Cannot be combined with template_id. - InitialPrompt *string `json:"initialPrompt,omitempty"` - // Name Project name. A name you already use is not refused: the project is // created with a short random suffix added to it. // Can only contain letters, numbers, underscores, and hyphens. @@ -7482,11 +7909,11 @@ type CreateProjectRequest struct { // Region names must be a subset of platform `AWS_REGIONS`. SelectedRegions *[]string `json:"selected_regions,omitempty"` - // TemplateId Optional trusted starter template identifier. The server resolves immutable source and database initialization artifacts. Callers cannot supply artifact locations or database credentials. Creation accepts an asynchronous installation; poll the individual project until template_installation.status is ready before using the app. Use pixel-board, trellini, or collab-pad for the configured starter bundles. The official-starter legacy identifier has environment-specific availability. Cannot be combined with initialPrompt. + // TemplateId Optional trusted starter template identifier. The server resolves immutable source and database initialization artifacts. Callers cannot supply artifact locations or database credentials. Creation accepts an asynchronous installation; poll the individual project until template_installation.status is ready before using the app. Use pixel-board, trellini, or collab-pad for the configured starter bundles. The official-starter legacy identifier has environment-specific availability. TemplateId *CreateProjectRequestTemplateId `json:"template_id,omitempty"` } -// CreateProjectRequestTemplateId Optional trusted starter template identifier. The server resolves immutable source and database initialization artifacts. Callers cannot supply artifact locations or database credentials. Creation accepts an asynchronous installation; poll the individual project until template_installation.status is ready before using the app. Use pixel-board, trellini, or collab-pad for the configured starter bundles. The official-starter legacy identifier has environment-specific availability. Cannot be combined with initialPrompt. +// CreateProjectRequestTemplateId Optional trusted starter template identifier. The server resolves immutable source and database initialization artifacts. Callers cannot supply artifact locations or database credentials. Creation accepts an asynchronous installation; poll the individual project until template_installation.status is ready before using the app. Use pixel-board, trellini, or collab-pad for the configured starter bundles. The official-starter legacy identifier has environment-specific availability. type CreateProjectRequestTemplateId string // CreateSandboxSessionRequest defines model for CreateSandboxSessionRequest. @@ -7627,26 +8054,13 @@ type CreatedProjectAccessToken struct { Name string `json:"name"` ProjectId openapi_types.UUID `json:"project_id"` - // Scope What a project access token may do within its project. - // - // `full` is everything you can do to that one project, up to and including - // deleting it. It cannot manage access tokens, so a leaked token cannot - // mint a replacement or erase the record of its own use, but for a CI or - // agent credential that only deploys, prefer `read_only` where the job - // allows it. - // - // `read_only` refuses mutations. It is enforced by route classification - // rather than HTTP method, so the log and metrics query endpoints remain - // available even though they are POST requests that carry body filters. + // Scope A listed token's scope. `full` and `read_only` are the scopes you + // choose when you create a token; see `ProjectAccessTokenScope`. // - // `read_only` also refuses the reads that return a credential — service - // keys, anon keys, variable values, and database connection strings. Those - // grant write access over the project's data and keep working after the - // token that fetched them is revoked, so returning one to a read-only - // credential would make the scope a formality. An anon key is included - // because its permissions are chosen per key and may include uploading, - // deleting, and publishing. - Scope ProjectAccessTokenScope `json:"scope"` + // `delegated` marks a delegated grant: a `pg-` token a first-party app + // minted for one run from the access you allowed it. It is listed only + // with `include_delegated=true`, and you cannot create one. + Scope ProjectAccessTokenListedScope `json:"scope"` // Status `revoked` means the token was deliberately revoked, by you or by the // deletion of its project. `expired` means it simply reached @@ -9756,7 +10170,7 @@ type Function struct { // `http` forwards HTTP request semantics to the function runtime. InvocationMode FunctionInvocationMode `json:"invocation_mode"` - // InvokeUrl Canonical geo-routed HTTPS endpoint for invoking this function. Use it as-is: it does not share a domain with the API, so a host derived from the API URL will not reach the function. Omitted when the deployment serves no public invocation domain, as in local development, so a client testing for an empty string never matches. + // InvokeUrl Canonical geo-routed HTTPS endpoint for invoking this function. Use it as-is: it does not share a domain with the API, so a host derived from the API URL will not reach the function. In local development it is `http://{id}.functions.localhost:8000/`, served by the local API. Omitted when the deployment serves no function invocation domain, so a client testing for an empty string never matches. InvokeUrl *string `json:"invoke_url,omitempty"` // IsPublic Deprecated. `true` exactly when `visibility` is `public`. @@ -9775,10 +10189,16 @@ type Function struct { ProjectId openapi_types.UUID `json:"project_id"` // ProvisioningStartedAt Timestamp when the current provisioning phase started - ProvisioningStartedAt *time.Time `json:"provisioning_started_at,omitempty"` - Runtime *string `json:"runtime,omitempty"` - Status FunctionStatus `json:"status"` - UpdatedAt time.Time `json:"updated_at"` + ProvisioningStartedAt *time.Time `json:"provisioning_started_at,omitempty"` + Runtime *string `json:"runtime,omitempty"` + + // ServingCandidateId The promoted preview whose runtime receives this function's traffic, the same as + // `candidate_id` in `serving`. Null when the function runs its own build. While it is set, + // `current_deployment_id` and `status` describe the function's own build, which receives no + // traffic until the function is rolled back. + ServingCandidateId *openapi_types.UUID `json:"serving_candidate_id,omitempty"` + Status FunctionStatus `json:"status"` + UpdatedAt time.Time `json:"updated_at"` // Visibility Who can invoke the function. Each level admits everything the one // before it does. @@ -9795,6 +10215,109 @@ type Function struct { // FunctionStatus defines model for Function.Status. type FunctionStatus string +// FunctionCandidate A copy of an ordinary function built from an uploaded source with the function's own variables, +// run on a runtime of its own and invoked at its own host with the project's service key only, so it +// can be checked before it is promoted. It has none of the function's schedules or warmers. Fields +// that do not apply yet are absent. +type FunctionCandidate struct { + // ConfigurationStatus Present while the preview serves a deployment. `current` means that deployment was built with + // the variables, runtime and handler the function would give that source now; `changed` means + // they differ, or can no longer be resolved. Promotion refuses a preview whose status is + // `changed`. + ConfigurationStatus *FunctionCandidateConfigurationStatus `json:"configuration_status,omitempty"` + CreatedAt time.Time `json:"created_at"` + + // CreatedBy The user who created the preview, when a user did. + CreatedBy *string `json:"created_by,omitempty"` + + // CurrentDeploymentId The deployment the preview serves. Absent until its first deployment succeeds. It differs from + // `deployment` while a redeploy runs or after one failed. + CurrentDeploymentId *openapi_types.UUID `json:"current_deployment_id,omitempty"` + Deployment *FunctionCandidateDeployment `json:"deployment,omitempty"` + + // ExpiresAt When the preview is deleted on its own. Absent when it is kept until deleted. A preview the function runs, or keeps for a rollback, is not deleted then; it expires once it is neither. + ExpiresAt *time.Time `json:"expires_at,omitempty"` + + // Exposure A function preview is always private. Only the project's service key, with `functions.invoke`, can invoke it; signed-in users, anon keys and access tokens are refused. + Exposure FunctionCandidateExposure `json:"exposure"` + FunctionId openapi_types.UUID `json:"function_id"` + Id openapi_types.UUID `json:"id"` + + // KeptForRollback A rollback of the function returns to this preview's build. + KeptForRollback bool `json:"kept_for_rollback"` + Name string `json:"name"` + + // Serving The function runs this preview's build. + Serving bool `json:"serving"` + Slug string `json:"slug"` + + // Status `creating` until its first deployment succeeds, `ready` while it serves, `deleting` while its + // runtime is removed, and `error` when its deletion gave up and needs an operator. A deleted + // preview answers `404`. + Status FunctionCandidateStatus `json:"status"` + UpdatedAt time.Time `json:"updated_at"` + + // Url Where the preview is invoked. Absent until its first deployment succeeds. + Url *string `json:"url,omitempty"` +} + +// FunctionCandidateConfigurationStatus Present while the preview serves a deployment. `current` means that deployment was built with +// the variables, runtime and handler the function would give that source now; `changed` means +// they differ, or can no longer be resolved. Promotion refuses a preview whose status is +// `changed`. +type FunctionCandidateConfigurationStatus string + +// FunctionCandidateExposure A function preview is always private. Only the project's service key, with `functions.invoke`, can invoke it; signed-in users, anon keys and access tokens are refused. +type FunctionCandidateExposure string + +// FunctionCandidateStatus `creating` until its first deployment succeeds, `ready` while it serves, `deleting` while its +// runtime is removed, and `error` when its deletion gave up and needs an operator. A deleted +// preview answers `404`. +type FunctionCandidateStatus string + +// FunctionCandidateDeployment defines model for FunctionCandidateDeployment. +type FunctionCandidateDeployment struct { + // CompletedAt Set once the deployment is no longer provisioning. + CompletedAt *time.Time `json:"completed_at,omitempty"` + + // ConfigurationDigest Identifies the variables the build used without carrying any value. + ConfigurationDigest string `json:"configuration_digest"` + CreatedAt time.Time `json:"created_at"` + + // ErrorMessage Why a failed deployment failed. + ErrorMessage *string `json:"error_message,omitempty"` + Id openapi_types.UUID `json:"id"` + + // ImageDigests The digest of the image this deployment published, per region. Present once the deployment + // succeeded. A promotion points the function at this image and deploys nothing. + ImageDigests *[]FunctionImageDigest `json:"image_digests,omitempty"` + Operation FunctionCandidateDeploymentOperation `json:"operation"` + Regions []string `json:"regions"` + + // Status `provisioning` while the build and deploy run, `active` once the preview serves this + // deployment, and `failed` when it could not be built or deployed. A failed deployment of a + // preview that already served keeps the previous deployment serving. + Status FunctionCandidateDeploymentStatus `json:"status"` +} + +// FunctionCandidateDeploymentOperation defines model for FunctionCandidateDeployment.Operation. +type FunctionCandidateDeploymentOperation string + +// FunctionCandidateDeploymentStatus `provisioning` while the build and deploy run, `active` once the preview serves this +// deployment, and `failed` when it could not be built or deployed. A failed deployment of a +// preview that already served keeps the previous deployment serving. +type FunctionCandidateDeploymentStatus string + +// FunctionCandidateDeploymentList defines model for FunctionCandidateDeploymentList. +type FunctionCandidateDeploymentList struct { + Data []FunctionCandidateDeployment `json:"data"` +} + +// FunctionCandidateList defines model for FunctionCandidateList. +type FunctionCandidateList struct { + Data []FunctionCandidate `json:"data"` +} + // FunctionDeployment defines model for FunctionDeployment. type FunctionDeployment struct { BatchId *openapi_types.UUID `json:"batch_id,omitempty"` @@ -9844,6 +10367,14 @@ type FunctionDeploymentStatus string // externally signed webhooks. type FunctionHTTPAuthMode string +// FunctionImageDigest The content digest of a function image in one region. It names no registry or account. +type FunctionImageDigest struct { + Digest string `json:"digest"` + + // Region The region the image was published to. Absent when the build published one image for every region. + Region *string `json:"region,omitempty"` +} + // FunctionInvocationMode Invocation contract. `rpc` preserves the existing POST `{payload: ...}` contract; // `http` forwards HTTP request semantics to the function runtime. type FunctionInvocationMode string @@ -9865,8 +10396,8 @@ type FunctionInvocationRequest struct { // } // ``` // - // The top-level `__volcano_auth` and `__volcano_http` keys are reserved; - // Volcano removes caller-supplied values for both. + // The top-level `__volcano_auth`, `__volcano_http` and `__volcano_mount` + // keys are reserved; Volcano removes caller-supplied values for all three. Payload *map[string]interface{} `json:"payload,omitempty"` } @@ -9884,6 +10415,28 @@ type FunctionKind string // default: omitting the filter includes both kinds. type FunctionKindFilter string +// FunctionProductionEnvironment Whether the function's own build has the project's current variables. While a preview serves the +// function, `volcano config deploy` and replacing the shared variable list skip the function, so its +// own build keeps the values it had. A rollback to the function's own build starts synchronizing them +// as it returns the traffic, and the status reads `current` once that synchronization completes or a +// deployment of the function activates. A synchronization that fails leaves it `out_of_date`. +type FunctionProductionEnvironment struct { + // OutOfDateSince When the latest skipped change was stored. Absent while `status` is `current`. + OutOfDateSince *time.Time `json:"out_of_date_since,omitempty"` + + // Status `out_of_date`: a stored variable change skipped the function while a preview served it. + Status FunctionProductionEnvironmentStatus `json:"status"` +} + +// FunctionProductionEnvironmentStatus `out_of_date`: a stored variable change skipped the function while a preview served it. +type FunctionProductionEnvironmentStatus string + +// FunctionPromotionRequest defines model for FunctionPromotionRequest. +type FunctionPromotionRequest struct { + // ExpectedRevision The `revision` the caller read from `serving`. Refuses the promotion with `stale_revision` unless what the function runs is still at this revision. + ExpectedRevision int64 `json:"expected_revision"` +} + // FunctionRegion defines model for FunctionRegion. type FunctionRegion struct { // Code Region identifier accepted by function APIs. @@ -9896,6 +10449,15 @@ type FunctionRegion struct { Label string `json:"label"` } +// FunctionRollbackRequest defines model for FunctionRollbackRequest. +type FunctionRollbackRequest struct { + // ExpectedRevision The `revision` the caller read from `serving`. Refuses the rollback with `stale_revision` unless what the function runs is still at this revision, so a retried rollback cannot undo itself. + ExpectedRevision int64 `json:"expected_revision"` + + // ToProduction Return to the function's own build whatever it ran before. + ToProduction *bool `json:"to_production,omitempty"` +} + // FunctionRuntimeDeployment defines model for FunctionRuntimeDeployment. type FunctionRuntimeDeployment struct { // DependencyManifests Dependency manifest files the CLI should include for hosted builds. @@ -10003,6 +10565,60 @@ type FunctionSchedulerListResponse struct { Total int `json:"total"` } +// FunctionServing What a function runs. Until a preview is promoted it runs its own build and `candidate_id` is +// null. After a promotion, the function's traffic runs on that preview's runtime, nothing is rebuilt +// or deployed, and `previous_candidate_id` is what a rollback returns to (null when that is the +// function's own build). A preview the function runs cannot be deleted and does not expire. One kept +// only as what a rollback returns to does not expire either, but it can be deleted, which gives up +// that rollback; the function's own build stays one `to_production` rollback away. +type FunctionServing struct { + // Activation The latest change to what serves the function's traffic: a promotion, a rollback, or a deployment + // of the function that returned its traffic to its own build. Each takes effect at once. Absent until + // the function's first promotion. + Activation *FunctionServingActivation `json:"activation,omitempty"` + + // CandidateId The preview whose build the function runs; null for its own. + CandidateId *openapi_types.UUID `json:"candidate_id"` + + // PreviousCandidateId The preview a rollback returns to; null for the function's own build. + PreviousCandidateId *openapi_types.UUID `json:"previous_candidate_id"` + + // ProductionEnvironment Whether the function's own build has the project's current variables. While a preview serves the + // function, `volcano config deploy` and replacing the shared variable list skip the function, so its + // own build keeps the values it had. A rollback to the function's own build starts synchronizing them + // as it returns the traffic, and the status reads `current` once that synchronization completes or a + // deployment of the function activates. A synchronization that fails leaves it `out_of_date`. + ProductionEnvironment FunctionProductionEnvironment `json:"production_environment"` + + // Revision Counts changes to what the function runs or can roll back to — promotions, rollbacks, a deployment that returns the traffic to the function's own build, and deleting the preview kept for a rollback. A promotion or rollback names the revision it read, so one that read before such a change fails with `409` (`stale_revision`) instead of overwriting it; read the serving state again and retry. + Revision int64 `json:"revision"` +} + +// FunctionServingActivation The latest change to what serves the function's traffic: a promotion, a rollback, or a deployment +// of the function that returned its traffic to its own build. Each takes effect at once. Absent until +// the function's first promotion. +type FunctionServingActivation struct { + // CandidateId The preview the activation pointed the function at. Absent for the function's own build. + CandidateId *openapi_types.UUID `json:"candidate_id,omitempty"` + Id openapi_types.UUID `json:"id"` + + // ImageDigests The digests of the image the activation pointed the function at. Absent for the function's own build. + ImageDigests *[]FunctionImageDigest `json:"image_digests,omitempty"` + + // Kind `deploy`: a successful deployment of the function cleared the preview pointers. + Kind FunctionServingActivationKind `json:"kind"` + Revision int64 `json:"revision"` + + // Status `applied`: the change takes effect when it is recorded. + Status FunctionServingActivationStatus `json:"status"` +} + +// FunctionServingActivationKind `deploy`: a successful deployment of the function cleared the preview pointers. +type FunctionServingActivationKind string + +// FunctionServingActivationStatus `applied`: the change takes effect when it is recorded. +type FunctionServingActivationStatus string + // FunctionVisibility Who can invoke the function. Each level admits everything the one // before it does. // - `private`: service keys and the project's schedulers only. The @@ -10201,13 +10817,16 @@ type ImportSourcesResponse struct { Sources []ImportSource `json:"sources"` } -// Issue Runtime errors from one function or frontend, grouped by error type and stack, one LavaFlow Code Quality finding, failed builds of one function or frontend with the same first error, or a user-reported project problem. A report has a project resource, zero runtime occurrences, and report times as its first and last seen times. +// Issue Runtime errors from one function or frontend, grouped by error type and stack, one LavaFlow Code Quality finding, failed builds of one function or frontend with the same first error, a user-reported project problem, or an issue a person wrote. A report or a written issue has a project resource, zero runtime occurrences, and the time it was made as its first and last seen times. type Issue struct { CreatedAt time.Time `json:"created_at"` // Culprit The innermost frame of your code in the stack, as `function (file)`. For a frontend's Next.js build output, the outermost route or page file of the build in the stack, such as `.next/server/app/checkout/route.js`, or without one, the outermost file of the build. For a minified file of a function's own bundle, the file alone. Omitted without a stack. Culprit *string `json:"culprit,omitempty"` + // Description What the person who wrote a `request` issue asked for, as they wrote it, trimmed. Omitted for every other source. + Description *string `json:"description,omitempty"` + // ErrorType The exception class, such as `TypeError`. Omitted when the error has none. ErrorType *string `json:"error_type,omitempty"` @@ -10228,6 +10847,9 @@ type Issue struct { FirstSeenAt time.Time `json:"first_seen_at"` Id openapi_types.UUID `json:"id"` + // LastDeploymentId For a `build` issue, the latest deployment that failed in its build step. Omitted for every other issue: runtime errors are not tied to a deployment. + LastDeploymentId *openapi_types.UUID `json:"last_deployment_id,omitempty"` + // LastRegion The region that served the latest error, such as `us-east-1`. LastRegion *string `json:"last_region,omitempty"` LastSeenAt time.Time `json:"last_seen_at"` @@ -10248,7 +10870,7 @@ type Issue struct { // SampleEventId The ID of the latest error's log event, while logs retain it. SampleEventId *string `json:"sample_event_id,omitempty"` - // Source Where the issue came from: `runtime` for errors your code logged, `code_quality` for a LavaFlow Code Quality finding in code a deploy changed, `build` for deploys of one function or frontend that failed in its own build step, or `report` for a problem reported for the project, such as through Slack. A `code_quality` issue's `error_type` is the finding's rule, its `culprit` the enclosing function and file, and its `event_count` the scans that found it. A `build` issue's `title` is the build's first error, its `error_type` the tool's code, such as `TS2322` or `npm ETARGET`, its `culprit` the error's `file:line`, its `event_count` the failed deploys, and its `last_deployment_id` the latest of them. A later deploy that builds resolves it. Deploys Volcano failed, such as a timeout or a refused build, never make one. + // Source Where the issue came from. A `code_quality` issue's `error_type` is the finding's rule, its `culprit` the enclosing function and file, and its `event_count` the scans that found it. A `build` issue's `title` is the build's first error, its `error_type` the tool's code, such as `TS2322` or `Type error`, its `culprit` the error's `file:line`, its `event_count` the failed deploys, and its `last_deployment_id` the latest of them. Source IssueSource `json:"source"` // Status `open` until someone resolves or ignores the issue. A resolved issue @@ -10271,7 +10893,7 @@ type IssueFinding struct { // EndLine The last line of the problem in that commit. EndLine int64 `json:"end_line"` - // Explanation What fails and on which input, as plain text. When it may contain a credential, LavaFlow withholds it whole, and it reads `LavaFlow left this explanation out because it may contain a credential`. + // Explanation What fails and on which input, as plain text. When it holds one of the project's secret values or a secret gitleaks' default rules detect, it reads `Hidden: this field matched a secret.` in place of all of it. Explanation string `json:"explanation"` // Path The file, from the repository root. @@ -10290,7 +10912,7 @@ type IssueFinding struct { // IssueFindingSeverity How much the problem matters, as the finding was confirmed. type IssueFindingSeverity string -// IssueSource Where the issue came from: `runtime` for errors your code logged, `code_quality` for a LavaFlow Code Quality finding in code a deploy changed, `build` for deploys of one function or frontend that failed in its own build step, or `report` for a problem reported for the project, such as through Slack. A `code_quality` issue's `error_type` is the finding's rule, its `culprit` the enclosing function and file, and its `event_count` the scans that found it. A `build` issue's `title` is the build's first error, its `error_type` the tool's code, such as `TS2322` or `npm ETARGET`, its `culprit` the error's `file:line`, its `event_count` the failed deploys, and its `last_deployment_id` the latest of them. A later deploy that builds resolves it. Deploys Volcano failed, such as a timeout or a refused build, never make one. +// IssueSource Where the issue came from: `runtime` for errors your code logged, `code_quality` for a LavaFlow Code Quality finding in code a deploy changed, `build` for deploys of one function or frontend that failed in its own build step, `report` for a problem reported for the project, such as through Slack, or `request` for an issue a person wrote with `POST /issues`. A later deploy that builds resolves a `build` issue. Deploys Volcano failed, such as a timeout or a refused build, never make one. type IssueSource string // IssueStatus `open` until someone resolves or ignores the issue. A resolved issue @@ -10299,6 +10921,19 @@ type IssueSource string // merged, so it no longer counts toward the project's open issues. type IssueStatus string +// LavaflowAikidoBinding The Aikido workspace a binding reports issues from. Present when `connector_type` is `aikido`. +type LavaflowAikidoBinding struct { + // MinSeverity An Aikido issue severity, lowest first. + MinSeverity AikidoSeverity `json:"min_severity"` + WorkspaceName string `json:"workspace_name"` +} + +// LavaflowAikidoBindingTarget What an `aikido` connector reports for the project. Send `aikido`, not `slack`, for an `aikido` connector. +type LavaflowAikidoBindingTarget struct { + // MinSeverity The lowest severity that starts a LavaFlow run. Defaults to `high`: each run counts against the project's LavaFlow runs. + MinSeverity *AikidoSeverity `json:"min_severity,omitempty"` +} + // LavaflowAllowedWorkflow A workflow job that could run a fix's pull request with the repository's secrets before a person approves it. type LavaflowAllowedWorkflow struct { // Job The job, absent for a workflow that could not be read. @@ -10320,7 +10955,7 @@ type LavaflowAnomaly struct { Reason *string `json:"reason"` } -// LavaflowAutonomy How far LavaFlow goes on its own. `diagnose_only` stops at a diagnosis. `open_pr` also opens a pull request with a fix, and never merges it. `merge` also merges the fix once LavaFlow's reviewers pass it, its required checks pass, and nothing holds it; a held fix is handed to you for good. Turning on merge lets LavaFlow's fixes, including those from runs it starts on its own, run your CI with the secrets your pull request workflows get. Choosing `merge` needs the project's `lavaflow.merge` capability. +// LavaflowAutonomy How far LavaFlow goes on its own. `diagnose_only` stops at a diagnosis. `open_pr` also opens a pull request with a fix, and never merges it. `merge` also merges the fix once LavaFlow's reviewers pass it, its required checks pass, and nothing holds it; a held fix is handed to you for good. LavaFlow merges only into a base branch that requires at least one status check, through branch protection or a ruleset; on any other branch it holds every fix with `no_required_checks`. Turning on merge lets LavaFlow's fixes, including those from runs it starts on its own, run your CI with the secrets your pull request workflows get. Choosing `merge` needs the project's `lavaflow.merge` capability. type LavaflowAutonomy string // LavaflowCategoryCounts Matching runs in each category, zeros included. `uncategorized` counts runs whose `category` is null. @@ -10349,6 +10984,53 @@ type LavaflowCodeQualityUpdate struct { // LavaflowCommitOrigin Where the commit a run read came from. `push`: a push to the project's connected repository deployed it. `client_reported`: the deploy client reported it, and Volcano matched the deployed files against it. `client_reported_repository`: the deploy client reported it, and Volcano confirmed only that the connected repository's production branch holds it, without matching the deployed files, which for a function are build output. A fix on such a commit opens only while the production branch still holds it. `repository`: a reported problem's run read the production branch at a commit it pinned, which need not be deployed. type LavaflowCommitOrigin string +// LavaflowConnectorBinding A place in a connector that reports problems to LavaFlow for a project: a Slack channel, or an Aikido workspace's issues on the project's repository. +type LavaflowConnectorBinding struct { + // Aikido The Aikido workspace a binding reports issues from. Present when `connector_type` is `aikido`. + Aikido *LavaflowAikidoBinding `json:"aikido,omitempty"` + + // ConnectorId The connector the binding reports through. Omitted while the Volcano app is not installed in the binding's Slack workspace; the binding reports again once it is. + ConnectorId *openapi_types.UUID `json:"connector_id,omitempty"` + + // ConnectorType The outside service a connector links to. + ConnectorType ConnectorType `json:"connector_type"` + CreatedAt time.Time `json:"created_at"` + + // Id The binding's ID, which removing it takes. + Id openapi_types.UUID `json:"id"` + ProjectId openapi_types.UUID `json:"project_id"` + + // Slack The Slack channel a binding reports from. Present when `connector_type` is `slack`. + Slack *LavaflowSlackBinding `json:"slack,omitempty"` +} + +// LavaflowConnectorBindingCreate Send exactly one of `slack` and `aikido`, matching the connector's type. +type LavaflowConnectorBindingCreate struct { + // Aikido What an `aikido` connector reports for the project. Send `aikido`, not `slack`, for an `aikido` connector. + Aikido *LavaflowAikidoBindingTarget `json:"aikido,omitempty"` + + // ConnectorId The connector to bind, from `GET /connectors`. + ConnectorId openapi_types.UUID `json:"connector_id"` + + // ProjectId The project the place reports for. + ProjectId openapi_types.UUID `json:"project_id"` + + // Slack The channel to bind, for a `slack` connector. + Slack *LavaflowSlackBindingTarget `json:"slack,omitempty"` + union json.RawMessage +} + +// LavaflowConnectorBindingCreate0 defines model for . +type LavaflowConnectorBindingCreate0 = interface{} + +// LavaflowConnectorBindingCreate1 defines model for . +type LavaflowConnectorBindingCreate1 = interface{} + +// LavaflowConnectorBindingsResponse defines model for LavaflowConnectorBindingsResponse. +type LavaflowConnectorBindingsResponse struct { + Bindings []LavaflowConnectorBinding `json:"bindings"` +} + // LavaflowDayCounts defines model for LavaflowDayCounts. type LavaflowDayCounts struct { Date openapi_types.Date `json:"date"` @@ -10360,17 +11042,20 @@ type LavaflowDayCounts struct { PullRequestsOpened int64 `json:"pull_requests_opened"` } -// LavaflowDiagnosis defines model for LavaflowDiagnosis. +// LavaflowDiagnosis Each text reads `Hidden: this field matched a secret.` in place of all of it when it holds one of the project's secret values or a secret gitleaks' default rules detect; the other texts are served as written. A log line's `level` reads `""` then. type LavaflowDiagnosis struct { Evidence []string `json:"evidence"` // LogLines Empty for now. `evidence` cites the log lines the diagnosis relies on. - LogLines []LavaflowLogLine `json:"log_lines"` - RootCause string `json:"root_cause"` - Summary string `json:"summary"` + LogLines []LavaflowLogLine `json:"log_lines"` + + // Requested Whether the run makes a change its report's reporter asked for in their own words, such as new content or functionality, rather than fixing a defect. Only a reported problem's run can set it, and only from what the person who mentioned LavaFlow wrote. + Requested bool `json:"requested"` + RootCause string `json:"root_cause"` + Summary string `json:"summary"` } -// LavaflowDraftReason Why a run's pull request is a draft. `open_pr`: LavaFlow doesn't merge the fix, because the project's autonomy is `open_pr`, merging was unavailable when it opened, LavaFlow started the run on its own under settings saved with automatic runs off before this API (sending `autonomy: merge` again as the owner lifts that), or it was already a draft when the run took it on; it waits for a person to review it and mark it ready. `review_unresolved`: LavaFlow's review didn't pass the fix, so LavaFlow never merges it; a person decides whether to finish it. `converted_to_draft`: LavaFlow opened it ready for review, and someone made it a draft since. +// LavaflowDraftReason Why a run's pull request is a draft. `open_pr`: LavaFlow doesn't merge the fix, because the project's autonomy is `open_pr`, merging was unavailable when it opened, or the run may only open a pull request, and its review didn't pass, LavaFlow's CI start for fixes a person merges wasn't available when it opened, or the repository may run CI or previews outside GitHub Actions (or LavaFlow couldn't check whether it does) when it opened; or it was already a draft when the run took it on. It waits for a person to review it and mark it ready. `review_unresolved`: LavaFlow's review didn't pass the fix, so LavaFlow never merges it; a person decides whether to finish it. `converted_to_draft`: LavaFlow opened it ready for review, and someone made it a draft since. type LavaflowDraftReason string // LavaflowFailure defines model for LavaflowFailure. @@ -10382,34 +11067,19 @@ type LavaflowFailure struct { Message string `json:"message"` } -// LavaflowGlobalSkill A skill Volcano wrote for every project. It holds no customer content. -type LavaflowGlobalSkill struct { - // AppliesTo Where a global skill applies. Empty lists apply it to every project. - AppliesTo LavaflowGlobalSkillAppliesTo `json:"applies_to"` - Body string `json:"body"` - - // ContentSha256 The hash of the skill's file, which identifies its version. - ContentSha256 string `json:"content_sha256"` - Description string `json:"description"` - - // Name Runs list it as `volcano:`. - Name string `json:"name"` - - // Scope `project` skills belong to this project and never leave it. `volcano` skills are written by Volcano for every project. - Scope LavaflowSkillScope `json:"scope"` -} +// LavaflowFixOutcome How a merged LavaFlow fix fared once it went live. +type LavaflowFixOutcome struct { + // FollowUps Runs linked to this fix. + FollowUps int64 `json:"follow_ups"` + LiveAt *time.Time `json:"live_at"` -// LavaflowGlobalSkillAppliesTo Where a global skill applies. Empty lists apply it to every project. -type LavaflowGlobalSkillAppliesTo struct { - Frameworks []string `json:"frameworks"` - ResourceTypes []string `json:"resource_types"` - Runtimes []string `json:"runtimes"` + // State `watching` for 14 days after the fix goes live, then `effective` unless its issue came back (`ineffective`) or a new issue was traced to its deploy (`regressed`). An outcome never moves back. `reverted` is reserved and not produced yet. + State LavaflowFixOutcomeState `json:"state"` + WatchUntil *time.Time `json:"watch_until"` } -// LavaflowGlobalSkillList defines model for LavaflowGlobalSkillList. -type LavaflowGlobalSkillList struct { - Data []LavaflowGlobalSkill `json:"data"` -} +// LavaflowFixOutcomeState `watching` for 14 days after the fix goes live, then `effective` unless its issue came back (`ineffective`) or a new issue was traced to its deploy (`regressed`). An outcome never moves back. `reverted` is reserved and not produced yet. +type LavaflowFixOutcomeState string // LavaflowHeldFixOpen The project, the run, and the diff and jobs of the held fix you read, by the digests the run served them with. type LavaflowHeldFixOpen struct { @@ -10440,13 +11110,13 @@ type LavaflowHeldWorkflows struct { // LavaflowHoldReason One reason LavaFlow holds the fix for a person. type LavaflowHoldReason struct { - // Code Why the fix is held. `client_reported_commit`: the fix is built on a commit Volcano can't tie to a push. `path`: it changes a path in `human_review_paths`, or deploy or infrastructure configuration Volcano always holds, such as `volcano-config.yaml`, Terraform files, a YAML or JSON file that declares a resource, a YAML template that mentions `apiVersion` or `kind`, a file in a Helm chart or Kustomize directory, or, in a repository too large to read in full, any file no other path reason holds. `sensitive_path`: it changes another path Volcano always holds: authentication or authorization code, Next.js middleware included; secret, key, certificate or cryptography files; a coding agent's instructions or settings, or Git hook configuration; CI configuration; a dependency manifest or lockfile, or a `package.json` change to what installs or its install scripts; or runtime, container or other configuration files. `label`: the pull request has the `needs-human-review` label. `no_checks`: no CI ran on it. `required_check_skipped`: a required check was skipped. `no_required_checks`: the base branch requires no check, so passing checks alone don't vouch for the fix. `changes_requested`: a reviewer requested changes. `repository_requires_approval`: the repository requires an approving review. `person_commits`: someone other than LavaFlow pushed to the fix's branch. `rules_bypass`: the Volcano GitHub App can bypass a ruleset on the base branch. `unchecked_rules`: the base branch has a rule LavaFlow doesn't check, such as required signatures. `commit_convention`: no title can meet the repository's commit convention. `ungated_workflows`: the fix opened past workflows that can run it with the repository's secrets before a person approves it, as the project's owner allowed, or LavaFlow couldn't check its workflows, so LavaFlow never starts its CI or merges it. `lineage_undoes_parent`: the fix follows up an earlier LavaFlow fix and deletes or changes lines that fix added, which could undo it. `lineage_cap`: the fix's lineage opened as many pull requests as it may. `lineage_held`: an earlier pull request in the fix's lineage was held, stopped or closed. `recent_regressions`: fixes LavaFlow merged in the project recently caused new errors. Other codes name a concern LavaFlow's reviewers raised. New codes may appear. + // Code Why the fix is held. `client_reported_commit`: the fix is built on a commit Volcano can't tie to a push. `path`: it changes a path in `human_review_paths`, or deploy or infrastructure configuration Volcano always holds, such as `volcano-config.yaml`, Terraform files, a YAML or JSON file that declares a resource, a YAML template that mentions `apiVersion` or `kind`, a file in a Helm chart or Kustomize directory, or, in a repository too large to read in full, any file no other path reason holds. `sensitive_path`: it changes another path Volcano always holds: authentication or authorization code, Next.js middleware included; secret, key, certificate or cryptography files; a coding agent's instructions or settings, or Git hook configuration; CI configuration; a dependency manifest or lockfile, or a `package.json` change to what installs or its install scripts; or runtime, container or other configuration files. `label`: the pull request has the `needs-human-review` label. `no_checks`: no CI ran on it. `required_check_skipped`: a required check was skipped. `no_required_checks`: the base branch requires no check, so passing checks alone don't vouch for the fix. `changes_requested`: a reviewer requested changes. `repository_requires_approval`: the repository requires an approving review. `person_commits`: someone other than LavaFlow pushed to the fix's branch. `rules_bypass`: the Volcano GitHub App can bypass a ruleset on the base branch. `unchecked_rules`: the base branch has a rule LavaFlow doesn't check, such as required signatures. On a fix a person merges it names only rules that kept LavaFlow from starting the fix's CI, such as `code_scanning` or `workflows`, or that LavaFlow couldn't read them. `commit_convention`: no title can meet the repository's commit convention. `ungated_workflows`: the fix opened past workflows that can run it with the repository's secrets before a person approves it, as the project's owner allowed, or LavaFlow couldn't check its workflows, or, when LavaFlow was about to start its CI or add it to a merge queue, a workflow could run it with those secrets before a person approves it or couldn't be read, so LavaFlow takes it no further and never merges it. A fix held for another reason before its CI starts lists it too when that check, run without starting CI, finds such a workflow or can't finish. `ci_outside_actions`: when LavaFlow was about to start the fix's CI, the repository could run CI, a build or a preview outside GitHub Actions: the root of the fix's tree or its base branch's holds another service's configuration, such as `.travis.yml`, `.circleci/` or `netlify.toml`, which `paths` names, another app reported checks or statuses on the base branch, or LavaFlow couldn't read them in full. LavaFlow starts CI only when it finds no sign of CI outside GitHub Actions, so it never starts this fix's CI or merges it. `lineage_undoes_parent`: the fix follows up an earlier LavaFlow fix and deletes or changes lines that fix added, which could undo it. `lineage_cap`: the fix's lineage opened as many pull requests as it may. `lineage_held`: an earlier pull request in the fix's lineage was held, stopped or closed; one a person merges holds it only when closed. `recent_regressions`: fixes LavaFlow merged in the project recently caused new errors. `no_test`: the fix changes code the repository tests and adds no test, because testing it needs test infrastructure the repository doesn't have or the change has no effect a test can observe. `choices_to_confirm`: the fix states behavior it decides beyond stopping the error, listed in the run's `choices` and, on a private repository, under Choices to confirm in the pull request's description, for a person to confirm, and LavaFlow's reviewers didn't all mark each choice as needing no person. It never applies alongside `person_merges`: the person confirms the choices while reviewing the fix. `risky_change`: the fix adds or removes a line that converts a value, such as with `float()` or `parseInt()`, in a file that names a rate limit or quota, authentication or authorization, or money, so values such as NaN, Infinity or a negative number could get past a check there; `paths` names the files. `review_notes`: LavaFlow's reviewers passed the fix, but its review's last round left notes, findings below `major` that a later round no longer sends back for revision, such as a decision the fix makes without stating it. `person_merges`: a person reviews and merges the fix, because the project's autonomy is `open_pr`, merging was unavailable when it opened, or its run may only open a pull request; LavaFlow ran the fix's CI once first unless another reason, or the CI start's own checks, stopped it. Other codes name a concern LavaFlow's reviewers raised. New codes may appear. Code string `json:"code"` - // Paths The changed paths that matched, for a path code. + // Paths The changed paths that matched, for a path code. For `ci_outside_actions`, the entries at the repository's root that another CI or preview service reads, whether or not the fix changes them. `""` for a path that holds a control character, one of the project's secret values or a secret gitleaks detects. Paths []string `json:"paths"` - // Question What a person decides before merging the fix, written to show as given. + // Question Why LavaFlow holds the fix and what to check before you merge it, in one or two sentences to show as given. A reviewer's reason is a question for you to answer. Reads `Hidden: this field matched a secret.` when it holds one of the project's secret values or a secret gitleaks detects, or when one of its `paths` reads `""`. Every question reads `Hidden: the fix may add a credential.`, LavaFlow's fixed sentences too, on a run whose `pull_request_skipped` is `possible_credential`. Question string `json:"question"` } @@ -10488,7 +11158,10 @@ type LavaflowIssueSummary struct { // RunCount LavaFlow runs on this issue, this one included. RunCount int64 `json:"run_count"` - // Source Where the issue came from: `runtime` for errors your code logged, `code_quality` for a LavaFlow Code Quality finding in code a deploy changed, `build` for deploys of one function or frontend that failed in its own build step, or `report` for a problem reported for the project, such as through Slack. A `code_quality` issue's `error_type` is the finding's rule, its `culprit` the enclosing function and file, and its `event_count` the scans that found it. A `build` issue's `title` is the build's first error, its `error_type` the tool's code, such as `TS2322` or `npm ETARGET`, its `culprit` the error's `file:line`, its `event_count` the failed deploys, and its `last_deployment_id` the latest of them. A later deploy that builds resolves it. Deploys Volcano failed, such as a timeout or a refused build, never make one. + // Severity The confirmed Code Quality finding's recorded severity. Omitted for other issue sources and when no canonical severity is known; absence does not mean the issue has low severity. + Severity *LavaflowIssueSummarySeverity `json:"severity,omitempty"` + + // Source Where the issue came from: `runtime` for errors your code logged, `code_quality` for a LavaFlow Code Quality finding in code a deploy changed, `build` for deploys of one function or frontend that failed in its own build step, `report` for a problem reported for the project, such as through Slack, or `request` for an issue a person wrote with `POST /issues`. A later deploy that builds resolves a `build` issue. Deploys Volcano failed, such as a timeout or a refused build, never make one. Source *IssueSource `json:"source,omitempty"` // Status `open` until someone resolves or ignores the issue. A resolved issue @@ -10501,6 +11174,83 @@ type LavaflowIssueSummary struct { Title string `json:"title"` } +// LavaflowIssueSummarySeverity The confirmed Code Quality finding's recorded severity. Omitted for other issue sources and when no canonical severity is known; absence does not mean the issue has low severity. +type LavaflowIssueSummarySeverity string + +// LavaflowLineage A chain of LavaFlow fixes: a merged fix, and the runs that followed up an issue traced to it or to a fix after it. +type LavaflowLineage struct { + // Confidence Null for the root, and otherwise `strong`. `weak` is reserved: nothing writes it. + Confidence *LavaflowLineageConfidence `json:"confidence"` + + // CoveredBy The run whose fix also covers this issue, so this run opened nothing. + CoveredBy *LavaflowRunReference `json:"covered_by"` + + // Depth 0 for the root fix. + Depth int64 `json:"depth"` + + // HoldReason Why the lineage holds: `lineage_cap`, `lineage_held` or `repository_changed`. New values may appear. Null unless `state` is `held`. + HoldReason *string `json:"hold_reason"` + + // Id The lineage's root run. + Id openapi_types.UUID `json:"id"` + + // Parent The fix this run follows up. Null for the root. + Parent *LavaflowRunReference `json:"parent"` + + // PullRequestCap The most pull requests a lineage opens before it holds. + PullRequestCap int64 `json:"pull_request_cap"` + + // PullRequestsOpened Pull requests the lineage opened, counting the root's. + PullRequestsOpened int64 `json:"pull_requests_opened"` + + // Relation `regression` for an issue traced to the parent's deploy, `recurrence` for an issue that came back after the parent went live. Null for the root. + Relation *LavaflowLineageRelation `json:"relation"` + + // Remedy How the run follows up its parent. Currently always `fix`: a regression gets a follow-up fix. `revert` and `none` are reserved. + Remedy LavaflowLineageRemedy `json:"remedy"` + State LavaflowLineageState `json:"state"` +} + +// LavaflowLineageConfidence Null for the root, and otherwise `strong`. `weak` is reserved: nothing writes it. +type LavaflowLineageConfidence string + +// LavaflowLineageRelation `regression` for an issue traced to the parent's deploy, `recurrence` for an issue that came back after the parent went live. Null for the root. +type LavaflowLineageRelation string + +// LavaflowLineageRemedy How the run follows up its parent. Currently always `fix`: a regression gets a follow-up fix. `revert` and `none` are reserved. +type LavaflowLineageRemedy string + +// LavaflowLineageState defines model for LavaflowLineage.State. +type LavaflowLineageState string + +// LavaflowLineageEvidence What tied the run's issue to a recent LavaFlow fix. A `display` link rests on less than a strong one and joins no lineage. +type LavaflowLineageEvidence struct { + // Confidence `strong` or `display`. `weak` is reserved: nothing writes it. + Confidence LavaflowLineageEvidenceConfidence `json:"confidence"` + Deployment struct { + // CommitOrigin `push` for a commit Volcano built from a push, `client_reported` for one the deploy client reported. New values may appear. + CommitOrigin string `json:"commit_origin"` + + // CommitSha The commit of the deployment that served the occurrence attribution judged (`opened_at`). + CommitSha string `json:"commit_sha"` + } `json:"deployment"` + FixLiveAt time.Time `json:"fix_live_at"` + + // OpenedAt The occurrence attribution judged. + OpenedAt time.Time `json:"opened_at"` + OverlappingFiles []string `json:"overlapping_files"` + OverlappingFunctions []string `json:"overlapping_functions"` + + // Parent The fix the issue was traced to. + Parent LavaflowRunReference `json:"parent"` + + // PreviousCommitSha The commit of the deployment before it. + PreviousCommitSha *string `json:"previous_commit_sha"` +} + +// LavaflowLineageEvidenceConfidence `strong` or `display`. `weak` is reserved: nothing writes it. +type LavaflowLineageEvidenceConfidence string + // LavaflowLogLine defines model for LavaflowLogLine. type LavaflowLogLine struct { Level string `json:"level"` @@ -10508,7 +11258,7 @@ type LavaflowLogLine struct { Timestamp *time.Time `json:"timestamp"` } -// LavaflowMerge Where the run's merge stands. Present for a run that may merge its fix, once its pull request opens. +// LavaflowMerge Where the run's merge stands. Present for a run that may merge its fix, once its pull request opens, and for a run whose fix a person merges (its autonomy is `open_pr`, merging was unavailable when it opened, or the run may only open a pull request) that opened ready for review: LavaFlow starts that fix's CI once, then holds it for `person_merges` and never merges it. type LavaflowMerge struct { // HoldReasons Why LavaFlow holds the fix. Empty unless `status` is `held`. HoldReasons []LavaflowHoldReason `json:"hold_reasons"` @@ -10517,7 +11267,7 @@ type LavaflowMerge struct { MergedByLavaflow *bool `json:"merged_by_lavaflow"` Reason *LavaflowMergeReason `json:"reason"` - // Status `waiting_for_checks`: LavaFlow waits for the checks on the fix's commit. `queued`: the fix is in the repository's merge queue. `merged`: the pull request merged. `held`: something in `hold_reasons` needs a person. LavaFlow commented on the pull request once and never merges, pushes to, rebases or dequeues it again; review it and merge it yourself if you want it. `stopped`: LavaFlow left the pull request open for you, for `reason`. + // Status `waiting_for_checks`: LavaFlow waits for the checks on the fix's commit. `queued`: the fix is in the repository's merge queue. `merged`: the pull request merged. `held`: something in `hold_reasons` needs a person. LavaFlow commented on the pull request once and never merges, pushes to, rebases or dequeues it again; review it and merge it yourself if you want it. A fix a person merges (its autonomy is `open_pr`, merging was unavailable when it opened, or its run may only open a pull request) is always `held` for `person_merges` once LavaFlow has started its CI, or found it may not. `stopped`: LavaFlow left the pull request open for you, for `reason`. Status LavaflowMergeStatus `json:"status"` } @@ -10532,15 +11282,98 @@ type LavaflowMergePolicyUpdate struct { HumanReviewPaths *[]string `json:"human_review_paths,omitempty"` } -// LavaflowMergeReason Why the merge stopped, or what a waiting merge is paused for. `review_unresolved`: LavaFlow's review did not pass the fix. `checks_failed`: a check failed. `checks_timed_out`: checks did not finish in time. `blocked_by_rules`: the repository's rules hold the merge. `not_mergeable`: GitHub can't merge the pull request, for example because it conflicts. `branch_behind`: the base branch requires the fix to be up to date with it, and LavaFlow doesn't update fix branches. `removed_from_queue`: the fix isn't in the merge queue, and LavaFlow can't tell why, for example because its checks failed there or someone removed it. `reads_failed`: LavaFlow failed to read the pull request for about an hour while the fix may have been queued, so it took the fix out of the merge queue, when it could still reach it, and stopped, or failed to read the project's settings or repository for about a day while merging was paused. `handed_off`: someone else changed or took over the pull request. `unreadable`: GitHub's state could not be read. `permission_missing`: the Volcano GitHub App, or the project owner's GitHub account, lacks a permission the merge needs. `repository_changed`: the project now deploys from another repository. `settings_changed`: the project's settings no longer allow the merge. `request_rejected`: GitHub refused LavaFlow's request to start the checks on the fix. `ci_start_commit_mismatch`: GitHub reports a different commit from the one LavaFlow made to start the checks. `branch_refused`: LavaFlow starts checks only on a LavaFlow branch of an open pull request it opened, never the default or production branch, so it didn't start them on this one. `head_unverified`: GitHub doesn't report the fix's head as the signed commit LavaFlow pushed, so LavaFlow didn't start its checks. `checks_not_started`: LavaFlow couldn't give the fix a commit message that runs CI. `queue_carries_ci_skip`: the repository's merge queue could carry an instruction to skip checks, from the fix's commits or its pull request's title or description, into the base branch. `merge_carries_ci_skip`: merging would carry an instruction to skip checks into the base branch, for example because the repository allows no squash merge. Each of these seven hands the fix to you for good. `manual_deploy`: the fix merged and waits for you to deploy it. `paused`: merging is paused, and the merge waits. LavaFlow takes a queued fix out of the merge queue, so it shows `waiting_for_checks`, and queues it again when merging resumes. `paused_too_long`: merging stayed paused for more than 7 days. `cancelled`: the project is being deleted, so LavaFlow stopped waiting on the merge. New reasons may appear. +// LavaflowMergeReason Why the merge stopped, or what a waiting merge is paused for. A stopped merge leaves the pull request open for you, and LavaFlow never merges, pushes to, rebases or dequeues it again; unless a reason says otherwise, review the change, then merge or close the pull request yourself. `review_unresolved`: LavaFlow's review didn't pass the fix; the run's `review` says why. `checks_failed`: a check on the fix failed. `checks_timed_out`: the checks didn't all finish within 24 hours. `blocked_by_rules`: a rule of the repository that LavaFlow can't satisfy blocks the merge. `not_mergeable`: GitHub can't merge the pull request, for example because it conflicts with its base branch; resolve the conflict first. `branch_behind`: the base branch requires the fix to be up to date with it, and LavaFlow doesn't update fix branches; update the branch first. `removed_from_queue`: the fix isn't in the merge queue, and LavaFlow can't tell why, for example because its checks failed there or someone removed it. `reads_failed`: LavaFlow failed to read the pull request for about an hour while the fix may have been queued, so it took the fix out of the merge queue, when it could still reach it, and stopped, or failed to read the project's settings or repository for about a day while merging was paused. For a fix a person merges, which LavaFlow never queues, it means only the latter, with its CI start paused instead of merging. `handed_off`: someone drafted or closed the pull request, or moved it to another branch, so LavaFlow stopped; nothing to do. `unreadable`: the pull request has more checks, reviews, labels or commits than LavaFlow reads, so it can't judge the fix. `permission_missing`: the Volcano GitHub App, or the project owner's GitHub account, lacks a permission the merge needs; grant the App's requested permissions and make sure the owner can push. `repository_changed`: the project now deploys from another repository. `settings_changed`: the project's settings no longer let LavaFlow merge, or, for a fix a person merges, start its CI: LavaFlow was turned off, `autonomy` is no longer `merge` (no longer `open_pr` or `merge` for a fix a person merges), the owner's plan no longer includes LavaFlow, or the project is being deleted. `request_rejected`: GitHub refused LavaFlow's request to start the checks on the fix. `ci_start_commit_mismatch`: GitHub reports a different commit from the one LavaFlow made to start the checks. `branch_refused`: LavaFlow didn't start the fix's checks because the pull request was no longer open, or its branch isn't a LavaFlow branch of a pull request LavaFlow opened; LavaFlow never starts checks on the default or production branch. `head_unverified`: GitHub doesn't report the fix's head as the signed commit LavaFlow pushed, so LavaFlow didn't start its checks. `checks_not_started`: LavaFlow couldn't give the fix a commit message that runs CI. `queue_carries_ci_skip`: the repository's merge queue could carry an instruction to skip checks, from the fix's commits or its pull request's title or description, into the base branch; reword LavaFlow's commit to drop it and force-push, and take any such instruction out of the title and description, before you queue the fix. `merge_carries_ci_skip`: merging would carry an instruction to skip checks into the base branch, for example because the repository allows no squash merge; reword LavaFlow's commit to drop it and force-push before you merge. After `request_rejected`, `ci_start_commit_mismatch` or `checks_not_started`, the fix's CI didn't start: push a commit to its branch to run it. `paused_too_long`: merging stayed paused for more than 7 days, or, for a fix a person merges, LavaFlow's CI start for such fixes did. `cancelled`: the project is being deleted, so LavaFlow stopped waiting on the merge; nothing to do. `manual_deploy`: the fix merged and waits for you to deploy it. `paused`: merging is paused, and the merge waits. LavaFlow takes a queued fix out of the merge queue, so it shows `waiting_for_checks`, and queues it again when merging resumes. For a fix a person merges, LavaFlow's CI start for such fixes is paused instead, whatever merging does, and LavaFlow never takes it out of a queue. New reasons may appear. type LavaflowMergeReason = string -// LavaflowMergeStatus `waiting_for_checks`: LavaFlow waits for the checks on the fix's commit. `queued`: the fix is in the repository's merge queue. `merged`: the pull request merged. `held`: something in `hold_reasons` needs a person. LavaFlow commented on the pull request once and never merges, pushes to, rebases or dequeues it again; review it and merge it yourself if you want it. `stopped`: LavaFlow left the pull request open for you, for `reason`. +// LavaflowMergeStatus `waiting_for_checks`: LavaFlow waits for the checks on the fix's commit. `queued`: the fix is in the repository's merge queue. `merged`: the pull request merged. `held`: something in `hold_reasons` needs a person. LavaFlow commented on the pull request once and never merges, pushes to, rebases or dequeues it again; review it and merge it yourself if you want it. A fix a person merges (its autonomy is `open_pr`, merging was unavailable when it opened, or its run may only open a pull request) is always `held` for `person_merges` once LavaFlow has started its CI, or found it may not. `stopped`: LavaFlow left the pull request open for you, for `reason`. type LavaflowMergeStatus string +// LavaflowOutcomeCounts Retained confirmations in the requested interval. These are lower bounds when collection coverage is incomplete. +type LavaflowOutcomeCounts struct { + ImprovementsObservedLive int64 `json:"improvements_observed_live"` + IssueResolutions int64 `json:"issue_resolutions"` + PullRequestsMerged int64 `json:"pull_requests_merged"` +} + +// LavaflowOutcomeCoverage Collection coverage for one metric. A migration or the earliest retained event establishes no complete interval. Undated observations are not assigned to the requested dates or totals. +type LavaflowOutcomeCoverage struct { + CompleteFrom *time.Time `json:"complete_from"` + CompleteThrough *time.Time `json:"complete_through"` + EventTimeBasis LavaflowOutcomeCoverageEventTimeBasis `json:"event_time_basis"` + Reason string `json:"reason"` + Status LavaflowOutcomeCoverageStatus `json:"status"` + SupportedSources []string `json:"supported_sources"` + UndatedConfirmedEvents int64 `json:"undated_confirmed_events"` +} + +// LavaflowOutcomeCoverageEventTimeBasis defines model for LavaflowOutcomeCoverage.EventTimeBasis. +type LavaflowOutcomeCoverageEventTimeBasis string + +// LavaflowOutcomeCoverageStatus defines model for LavaflowOutcomeCoverage.Status. +type LavaflowOutcomeCoverageStatus string + +// LavaflowOutcomeCurrent Current known open critical Code Quality findings, including findings without a fix run. The historical window and run-category filter do not narrow this inventory. Zero is not an exhaustive security assessment. +type LavaflowOutcomeCurrent struct { + CategoryFilterApplied bool `json:"category_filter_applied"` + InventoryNotExhaustive bool `json:"inventory_not_exhaustive"` + KnownOpenCriticalCount int64 `json:"known_open_critical_count"` + Scope LavaflowOutcomeCurrentScope `json:"scope"` +} + +// LavaflowOutcomeCurrentScope defines model for LavaflowOutcomeCurrent.Scope. +type LavaflowOutcomeCurrentScope string + +// LavaflowOutcomeDay defines model for LavaflowOutcomeDay. +type LavaflowOutcomeDay struct { + // ConfirmedCounts Retained confirmations in the requested interval. These are lower bounds when collection coverage is incomplete. + ConfirmedCounts LavaflowOutcomeCounts `json:"confirmed_counts"` + + // Counts Exact counts only when collection coverage is complete. Null means unknown, including days with no retained observations. + Counts LavaflowOutcomeValues `json:"counts"` + Date openapi_types.Date `json:"date"` +} + +// LavaflowOutcomeValues Exact counts only when collection coverage is complete. Null means unknown, including days with no retained observations. +type LavaflowOutcomeValues struct { + ImprovementsObservedLive *int64 `json:"improvements_observed_live"` + IssueResolutions *int64 `json:"issue_resolutions"` + PullRequestsMerged *int64 `json:"pull_requests_merged"` +} + +// LavaflowOutcomes Separate confirmed merges, live improvements and actual automatic issue-resolution episodes. A live improvement is counted once per project, repository and pull request when inclusion is first durably confirmed on a tracked function or frontend. Resolution includes automatic open or ignored to resolved transitions, preserves the reason and category, and excludes manual actions. The primary issue resolution count includes every category, even when a category filter narrows merge and live counts. Only the first qualifying automatic resolution of a metric episode contributes a count. Recurrence and manual reopen start new metric episodes without erasing previous resolutions; moving resolved to ignored does not start an episode. Existing activity counts remain separate. Older servers omit this object; absence is unavailable, never zero. +type LavaflowOutcomes struct { + // AsOf The UTC timestamp of the consistent database snapshot. + AsOf time.Time `json:"as_of"` + + // ConfirmedTotals Retained confirmations in the requested interval. These are lower bounds when collection coverage is incomplete. + ConfirmedTotals LavaflowOutcomeCounts `json:"confirmed_totals"` + Coverage struct { + // ImprovementsObservedLive Collection coverage for one metric. A migration or the earliest retained event establishes no complete interval. Undated observations are not assigned to the requested dates or totals. + ImprovementsObservedLive LavaflowOutcomeCoverage `json:"improvements_observed_live"` + + // IssueResolutions Collection coverage for one metric. A migration or the earliest retained event establishes no complete interval. Undated observations are not assigned to the requested dates or totals. + IssueResolutions LavaflowOutcomeCoverage `json:"issue_resolutions"` + + // PullRequestsMerged Collection coverage for one metric. A migration or the earliest retained event establishes no complete interval. Undated observations are not assigned to the requested dates or totals. + PullRequestsMerged LavaflowOutcomeCoverage `json:"pull_requests_merged"` + } `json:"coverage"` + + // Current Current known open critical Code Quality findings, including findings without a fix run. The historical window and run-category filter do not narrow this inventory. Zero is not an exhaustive security assessment. + Current LavaflowOutcomeCurrent `json:"current"` + + // Days The same ordered UTC date domain as the activity series, with unknown counts distinct from zero retained confirmations. + Days []LavaflowOutcomeDay `json:"days"` + + // Totals Exact counts only when collection coverage is complete. Null means unknown, including days with no retained observations. + Totals LavaflowOutcomeValues `json:"totals"` +} + // LavaflowPullRequest defines model for LavaflowPullRequest. type LavaflowPullRequest struct { - // DeployedAt When the merged fix went live: the first live deployment of the issue's resource that includes it finished. When more than 20 deployments went live between the merge and the one LavaFlow found the fix in, LavaFlow can't tell which first included it, and this is the merge time. Null until LavaFlow finds the fix live, and for a pull request that didn't merge. LavaFlow watches the resource's deployments for a week after the merge. + // Branch The recorded pull request branch. Omitted when it was not recorded, the run's fix is withheld because it may add a credential, or the branch name holds one of the project's secret values or a secret gitleaks detects. It is never shortened. + Branch *string `json:"branch,omitempty"` + + // DeployedAt When the merged fix went live: the first live deployment of the issue's resource that includes it finished. When more than 20 deployments went live between the merge and the one LavaFlow found the fix in, LavaFlow can't tell which first included it, and this is the merge time. Null until LavaFlow finds the fix live, and for a pull request that didn't merge. A later live deployment can be verified even more than a week after the merge. Unverifiable or exhausted evidence remains unknown. DeployedAt *time.Time `json:"deployed_at"` // Draft Whether the pull request is a draft, as GitHub last reported it to LavaFlow. Null for one opened before LavaFlow recorded it. @@ -10570,15 +11403,36 @@ type LavaflowPullRequestStateCounts struct { Open int64 `json:"open"` } -// LavaflowRepositoryChecks Whether LavaFlow ran the repository's own checks, such as its tests, on a fix itself, before it opened a pull request or held the fix. CI that runs on the pull request afterwards is the repository's own. +// LavaflowRepositoryCheckCommand One command the repository's checks ran. `command` and `output` are the repository's own text, served as LavaFlow recorded it. Each reads `Hidden: this field matched a secret.` when it holds one of the project's secret values or a secret gitleaks detects, and `Hidden: the fix may add a credential.` when the run is held with `possible_credential`. +type LavaflowRepositoryCheckCommand struct { + // Command The command as LavaFlow ran it. + Command string `json:"command"` + + // ExitCode The code the command exited with, null when it gave none, as a command that timed out may not. + ExitCode *int `json:"exit_code"` + + // Output The end of what the command printed, present only when `status` is `failed` or `timed_out` and LavaFlow kept it; `""` when it printed nothing. + Output *string `json:"output,omitempty"` + + // Status `passed`: the command succeeded. `failed`: it exited with an error. `timed_out`: it ran past its time limit, and LavaFlow stopped it. Treat a status you don't know as `failed`. + Status string `json:"status"` +} + +// LavaflowRepositoryChecks Whether LavaFlow ran the repository's own checks, such as its tests, on a fix itself, before it opened a pull request or held the fix, and what they found. When LavaFlow ran them more than once, this is the last time the run's last attempt ran them; `not_run` when that attempt didn't, or while the run is queued or running. CI that runs on the pull request afterwards is the repository's own. type LavaflowRepositoryChecks struct { - // Message Text to show for the status and reason. It names the pull request when one opened. + // Commands The commands the checks ran, in order. Absent when LavaFlow recorded none, as for `no_checks_found` and `not_run`. + Commands []LavaflowRepositoryCheckCommand `json:"commands,omitempty"` + + // Message Text to show for the status and reason. It names the pull request when one opened. For `not_run` on a fix whose pull request opened, a second sentence says what became of the repository's CI there, as the run stands when read: whether LavaFlow started it, tried to, may still, or won't. Message string `json:"message"` - // Reason Stable code for why the checks did not run. `sandbox_unavailable`: LavaFlow cannot run a repository's checks itself yet. - Reason string `json:"reason"` + // Reason Stable code for why the checks did not run, present only when `status` is `not_run`. `dependencies_changed`: the fix changes the repository's dependencies. `dependencies_not_installed`: LavaFlow couldn't install the repository's dependencies. `run_deadline`: the run reached its time limit. `sandbox_capacity`: no sandbox slot was free in time to run them. `sandbox_budget`: LavaFlow's sandbox allowance for checks was used up. `sandbox_not_isolated`: LavaFlow couldn't confirm the sandbox was isolated. `sandbox_plan_limit`: LavaFlow couldn't start a sandbox large enough to run them. `sandbox_unavailable`: LavaFlow couldn't run them itself. `source_too_large`: the repository is too large to copy into a sandbox. `source_unavailable`: LavaFlow couldn't fetch the fix's source to check it, as when the repository was disconnected or changed during the run. `tool_unavailable`: a tool the checks need isn't available. New reasons may appear; treat one you don't know like any other `not_run`. + Reason *string `json:"reason,omitempty"` + + // Revised Present and `true` only when `status` is `failed` and LavaFlow then revised the fix once without running the checks again. `status` and `commands` describe that earlier version, not the fix as saved, which the checks never ran on. + Revised bool `json:"revised,omitempty"` - // Status `not_run`: LavaFlow did not run the repository's checks on the fix, for the reason `reason` names. Treat a status you don't know as `not_run`. + // Status `passed`: every command the checks ran passed. `failed`: a command failed or timed out; `commands` shows which. `no_checks_found`: LavaFlow found no checks in the repository to run. `not_run`: LavaFlow did not run the repository's checks on the fix, for the reason `reason` names. Treat a status you don't know as `not_run`. Status string `json:"status"` } @@ -10619,6 +11473,15 @@ type LavaflowResourceReferenceType string // LavaflowReview defines model for LavaflowReview. type LavaflowReview struct { + // Observations The reviewers' observations on the fix saved with the run: follow-ups that don't hold the fix, such as bad data stored before it or a related problem elsewhere. They aren't findings, unlike a minor finding that blocks nothing. Each reads `Hidden: this field matched a secret.` when it holds one of the project's secret values or a secret gitleaks detects, and `Hidden: the fix may add a credential.` when the run is held with `possible_credential`. Absent when there are none or the run saved no fix. + Observations []string `json:"observations,omitempty"` + + // OpenFindings The findings the review saved with the fix left open. When the review passed the fix, the notes its last round left: findings below `major` that a later round no longer sends back, which hold a fix under `autonomy: merge` with `review_notes`. Absent when the review left none open, or the run saved no fix. + OpenFindings []LavaflowReviewFinding `json:"open_findings,omitempty"` + + // PersonReasons What the review saved with the fix asks a person to decide before the fix merges. Absent when it asks nothing or the run saved no fix. + PersonReasons []LavaflowReviewPersonReason `json:"person_reasons,omitempty"` + // Rounds The review rounds that ran, 0 when no reviewer could run. Rounds int `json:"rounds"` @@ -10632,6 +11495,30 @@ type LavaflowReview struct { // LavaflowReviewVerdict The last review round's verdict. `blocked` means a critical or major finding stops the fix; `changes_requested` means only minor findings do; `error` means a reviewer failed without a blocking finding, or no reviewer could run. type LavaflowReviewVerdict string +// LavaflowReviewFinding A finding the review left open, in the reviewer's words. `explanation` reads `Hidden: this field matched a secret.` when it holds one of the project's secret values or a secret gitleaks detects, or when `file` reads `""`, and `Hidden: the fix may add a credential.` when the run is held with `possible_credential`. +type LavaflowReviewFinding struct { + Explanation string `json:"explanation"` + + // File The file the finding is about, null when it is about no file. `""` when the path holds a control character, one of the project's secret values or a secret gitleaks detects. + File *string `json:"file"` + + // Line The line of `file` the finding is about, null when it is about no one line. + Line *int `json:"line"` + Severity LavaflowReviewFindingSeverity `json:"severity"` +} + +// LavaflowReviewFindingSeverity defines model for LavaflowReviewFinding.Severity. +type LavaflowReviewFindingSeverity string + +// LavaflowReviewPersonReason One decision the review leaves to a person. `question` reads `Hidden: this field matched a secret.` when it holds one of the project's secret values or a secret gitleaks detects, and `Hidden: the fix may add a credential.` when the run is held with `possible_credential`. +type LavaflowReviewPersonReason struct { + // Kind `irreversible`: merging the fix itself does what a revert can't undo, such as deleting or migrating stored data. `trust_boundary`: it changes authentication, authorization, secrets, who can reach what, or rate limits, quotas or other abuse controls, including whether they fail open. `breaks_contract`: it removes or renames an existing field, status, event, or accepted input that other code or users rely on, or changes what one means, or it newly rejects a request the code could serve before it, or input it served even when its documentation marks that input invalid, with a client error, validation error, or limit, or drops or skips records the code handled. `billing`: it touches payments, pricing, metering, or charges. `unexplained`: it changes behavior that neither the diagnosis nor the fix's stated choices justify, and that the code doesn't support. `not_reviewable`: it couldn't be reviewed closely. New kinds may appear. + Kind string `json:"kind"` + + // Question What the person decides, written to show as given. + Question string `json:"question"` +} + // LavaflowReviewStop Why a run's review ended without passing its fix. `rounds`: the last review round still found problems. `no_revision`: LavaFlow gave no revised fix. `budget_exhausted`: the run used its token budget before LavaFlow could revise the fix; this is the run's own budget, not the project's daily spend limit. `context_limit`: the fix's conversation grew too long for the model before LavaFlow could revise it. `timed_out`: the run's time for review ran out. `reviewers_failed`: no reviewer of the last round finished. `too_few_reviewers`: fewer reviewers could run than a round needs to pass the fix. `unreadable`: a retried run could not read the review saved with its fix, so a person must review it. More values may be added: treat a value you don't know as other. type LavaflowReviewStop string @@ -10640,12 +11527,15 @@ type LavaflowRun struct { // Category A Code Quality run carries its finding's from the start. Any other run's is null until LavaFlow records a diagnosis. Runs from before categories get one when their diagnosis names one or their saved fix's paths imply one, and stay null only when neither does. Category *LavaflowRunCategory `json:"category"` - // ChangedFiles Repository paths the fix changes, sorted; empty without a fix. A path that may itself hold a credential is listed as "", as `diff_withheld` lists it, and so is every path when `diff` can't tell the fix's files apart. A file past a truncated `diff`'s cut is listed. - ChangedFiles []string `json:"changed_files"` - CreatedAt time.Time `json:"created_at"` - Diagnosis *LavaflowDiagnosis `json:"diagnosis"` + // ChangedFiles Repository paths the fix changes, sorted; empty without a fix. A path that holds a secret is listed as "", as `diff_withheld` lists it, and so is every path when `diff` can't tell the fix's files apart. A file past a truncated `diff`'s cut is listed. + ChangedFiles []string `json:"changed_files"` - // Diff The fix LavaFlow saved, as the unified diff its reviewers read, cut short past 256 KiB as they read it, with a last line that starts with `[diff truncated`. When a file's content, before or after the fix, or any change to it may hold a credential, or the file is too long for LavaFlow to read whole (over 64 KiB, or past 256 KiB across the fix's files), every change to that file is left out, with one line in their place that starts with `# LavaFlow withheld` and names the file. A run held with `possible_credential` leaves out every file. Null for a run with no saved fix, or one saved before LavaFlow kept its diff. + // Choices The behavior the saved fix says it decides beyond stopping the error, one plain sentence each. Under `autonomy: merge`, a fix is held with `choices_to_confirm` for a person to confirm these only when LavaFlow's reviewers didn't all mark each one as needing no person; a fix they all cleared merges without a person. A person who merges the fix confirms them as they review it. Each reads `Hidden: this field matched a secret.` when it holds one of the project's secret values or a secret gitleaks detects, and `Hidden: the fix may add a credential.` when the run is held with `possible_credential`. Absent when the fix states none or the run saved no fix. + Choices []string `json:"choices,omitempty"` + CreatedAt time.Time `json:"created_at"` + Diagnosis *LavaflowDiagnosis `json:"diagnosis"` + + // Diff The fix LavaFlow saved, as the unified diff its reviewers read, cut short past 256 KiB as they read it, with a last line that starts with `[diff truncated`. When a file's changes hold one of the project's secret values or a secret gitleaks detects, every change to that file is left out, with one line in their place that starts with `# LavaFlow withheld` and names the file; an older fix also keeps the files it was saved with as withheld. A run held with `possible_credential` leaves out every file. Null for a run with no saved fix, or one saved before LavaFlow kept its diff. Diff *string `json:"diff"` // DiffSha256 The SHA-256, in hex, of `diff` exactly as served, its UTF-8 bytes. Null whenever `diff` is. @@ -10654,13 +11544,19 @@ type LavaflowRun struct { // DiffTruncated `diff` was cut short, so it does not show the whole fix. False when `diff` is null. DiffTruncated bool `json:"diff_truncated"` - // DiffWithheld The files whose changes `diff` leaves out, by path, as its `# LavaFlow withheld` lines name them; an empty string for a file whose path may itself hold a credential. Empty when `diff` shows every file, or is null. + // DiffWithheld The files whose changes `diff` leaves out, by path, as its `# LavaFlow withheld` lines name them; an empty string for a file whose path holds a secret. Empty when `diff` shows every file, or is null. DiffWithheld []string `json:"diff_withheld"` // Failure Why the run stopped or waits, null when nothing went wrong. Failure *LavaflowFailure `json:"failure"` FinishedAt *time.Time `json:"finished_at"` + // FixOutcome How the run's merged fix fared once it went live. Null until a merged fix goes live with the `lavaflow.lineage` capability on. Also null, meaning unknown, when the fix is first found live only after its 14-day watch ended and its issue neither resolved as of go-live nor was last seen inside the watch. + FixOutcome *LavaflowFixOutcome `json:"fix_outcome"` + + // FixSummary The saved proposed fix's title, on one line of at most 80 characters. This describes a proposal, not a verified fix, successful review, merge or deployment. It never falls back to the diagnosis. Omitted when no saved patch title is known. Reads `Hidden: this field matched a secret.` when the full title or the shortened one holds one of the project's secret values or a secret gitleaks detects, and `Hidden: the fix may add a credential.` when the fix is held for one. A shortened value ends with `…`. + FixSummary *string `json:"fix_summary,omitempty"` + // HeldWorkflows For a run whose `pull_request_skipped` is `ungated_workflows`, every workflow job that held its fix. Null for any other run, and for a held run whose workflows LavaFlow couldn't read to the end, such as one with a workflow it couldn't parse, or more than 256 such jobs. HeldWorkflows *LavaflowHeldWorkflows `json:"held_workflows"` Id openapi_types.UUID `json:"id"` @@ -10668,11 +11564,20 @@ type LavaflowRun struct { // Issue Null only for a run that works on no issue. Issue *LavaflowIssueSummary `json:"issue"` IssueId openapi_types.UUID `json:"issue_id"` - Merge *LavaflowMerge `json:"merge"` + + // Lineage The fix lineage the run belongs to. Null for a run in no lineage. + Lineage *LavaflowLineage `json:"lineage"` + + // LineageEvidence What tied the run's issue to a recent LavaFlow fix's deploy. Null when nothing did, and for a recurrence, whose issue came back after the fix. + LineageEvidence *LavaflowLineageEvidence `json:"lineage_evidence"` + Merge *LavaflowMerge `json:"merge"` // Mode What the run works on: `live` for an issue seen in the project's logs, `code_quality` for a Code Quality finding. Mode LavaflowRunMode `json:"mode"` + // NotFixed Where the saved fix says the defect starts outside its changes, such as code that writes records in the wrong shape, and why the fix leaves it, in one plain sentence. Masked as `choices` is. Null when the fix says nothing is left or the run saved no fix. + NotFixed *string `json:"not_fixed"` + // Progress Where a run LavaFlow is still working on stands; null once it has nothing left to do. Progress *LavaflowRunProgress `json:"progress"` @@ -10698,17 +11603,20 @@ type LavaflowRun struct { // SourceCommit The commit the run read the code at. Null when it read none, as for a run that diagnosed from the logs alone. SourceCommit *LavaflowSourceCommit `json:"source_commit"` + // SourceUnavailable For a run whose `pull_request_skipped` is `source_unavailable`, why LavaFlow couldn't read, or open a fix on, the code that served the error. Null for any other run, for a run recorded before LavaFlow kept the reason, and when LavaFlow couldn't tell why. + SourceUnavailable *LavaflowSourceUnavailable `json:"source_unavailable"` + // Status Where a run is. `diagnosing`, `fixing` and `reviewing` are the stages of a running run. `pr_open` means its pull request is open; `completed` means it finished, with no pull request or one that was merged or closed. Status LavaflowRunStatus `json:"status"` - // Title Names the problem the run worked on, in at most 80 characters: its diagnosis' title, else the title of the fix it proposed, else the first line or sentence of its diagnosis' summary. Null while none is known. + // Title Names the problem the run worked on, in at most 80 characters: its diagnosis' title, else the title of the fix it proposed, else the first line or sentence of its diagnosis' summary. A sentence too long for a title ends at its last clause that fits, or, with none, is cut at a word and ends with `…`. Null while none is known. Reads `Hidden: this field matched a secret.` when it or the text it comes from holds one of the project's secret values or a secret gitleaks detects. Title *string `json:"title"` // UngatedWorkflows The workflow jobs the run's pull request opened past because the project's owner allowed ungated workflows, the first one on each branch or commit checked. Empty when none or when the run opened no pull request. Null when there is no record of the workflows its pull request opened past, as for pull requests opened before LavaFlow recorded them. Under the merge stage, LavaFlow holds such a fix as unchecked, with `ungated_workflows`. UngatedWorkflows *[]LavaflowAllowedWorkflow `json:"ungated_workflows"` } -// LavaflowRunCategory What kind of problem the run works on. `bug`: the project's code is wrong. `performance`: the code is too slow or uses too much. `security`: the code exposes data or access it shouldn't. `improvement`: the code mishandles an edge case or an outside failure. `configuration`: a setting, variable or manifest value is wrong or missing. `dependency`: a package or its version causes it. `external`: a service outside the project fails and no repository change is right. A Code Quality run's is its finding's, `bug` or `improvement`. Any other run's is `dependency` or `configuration` for a fix that changes only such files, else the kind its diagnosis names. New values may appear; treat an unknown value as uncategorized. +// LavaflowRunCategory What kind of problem the run works on. `bug`: the project's code is wrong. `performance`: the code is too slow or uses too much. `security`: the code exposes data or access it shouldn't. `improvement`: the code mishandles an edge case or an outside failure, or, for a reported problem's run, its reporter asked for new content or functionality (`diagnosis.requested`). `configuration`: a setting, variable or manifest value is wrong or missing. `dependency`: a package or its version causes it. `external`: a service outside the project fails and no repository change is right. A Code Quality run's is its finding's, `bug` or `improvement`. Any other run's is `dependency` or `configuration` for a fix that changes only such files, else the kind its diagnosis names. New values may appear; treat an unknown value as uncategorized. type LavaflowRunCategory string // LavaflowRunCounts Runs that match the request. `total` applies every filter. Each breakdown applies every filter but its own, so it shows what picking another value would return. @@ -10739,7 +11647,7 @@ type LavaflowRunCreate struct { // LavaflowRunMode What the run works on: `live` for an issue seen in the project's logs, `code_quality` for a Code Quality finding. type LavaflowRunMode string -// LavaflowRunProgress How far an active run has come. The steps are `queued`, `diagnosing`, `fixing`, `reviewing`, `waiting_for_checks` and `merge_queued`, in that order, and a run takes as many as its autonomy when it was queued allows: 2 for `diagnose_only`, 4 for `open_pr` (opening the pull request ends it), 6 for `merge` (the merge ends it). +// LavaflowRunProgress How far an active run has come. The steps are `queued`, `diagnosing`, `fixing`, `reviewing`, `waiting_for_checks` and `merge_queued`, in that order, and a run takes as many as its autonomy when it was queued allows: 2 for `diagnose_only`, 4 for `open_pr` (opening the pull request ends it, unless LavaFlow starts the fix's CI once, when it shows `waiting_for_checks` as step 5 until LavaFlow has), 6 for `merge` (the merge ends it). type LavaflowRunProgress struct { // Stage New stages may appear. Stage LavaflowRunProgressStage `json:"stage"` @@ -10754,6 +11662,14 @@ type LavaflowRunProgress struct { // LavaflowRunProgressStage New stages may appear. type LavaflowRunProgressStage string +// LavaflowRunReference Another LavaFlow run of the same project. +type LavaflowRunReference struct { + Id openapi_types.UUID `json:"id"` + + // Title The run's title, as `LavaflowRunSummary.title` gives it. + Title *string `json:"title"` +} + // LavaflowRunStatus Where a run is. `diagnosing`, `fixing` and `reviewing` are the stages of a running run. `pr_open` means its pull request is open; `completed` means it finished, with no pull request or one that was merged or closed. type LavaflowRunStatus string @@ -10775,12 +11691,21 @@ type LavaflowRunSummary struct { Category *LavaflowRunCategory `json:"category"` CreatedAt time.Time `json:"created_at"` FinishedAt *time.Time `json:"finished_at"` - Id openapi_types.UUID `json:"id"` + + // FixOutcome How the run's merged fix fared once it went live. Null until a merged fix goes live with the `lavaflow.lineage` capability on. Also null, meaning unknown, when the fix is first found live only after its 14-day watch ended and its issue neither resolved as of go-live nor was last seen inside the watch. + FixOutcome *LavaflowFixOutcome `json:"fix_outcome"` + + // FixSummary The saved proposed fix's title, on one line of at most 80 characters. This describes a proposal, not a verified fix, successful review, merge or deployment. It never falls back to the diagnosis. Omitted when no saved patch title is known. Reads `Hidden: this field matched a secret.` when the full title or the shortened one holds one of the project's secret values or a secret gitleaks detects, and `Hidden: the fix may add a credential.` when the fix is held for one. A shortened value ends with `…`. + FixSummary *string `json:"fix_summary,omitempty"` + Id openapi_types.UUID `json:"id"` // Issue Null only for a run that works on no issue. Issue *LavaflowIssueSummary `json:"issue"` IssueId openapi_types.UUID `json:"issue_id"` - Merge *LavaflowMerge `json:"merge"` + + // Lineage The fix lineage the run belongs to. Null for a run in no lineage. + Lineage *LavaflowLineage `json:"lineage"` + Merge *LavaflowMerge `json:"merge"` // Mode What the run works on: `live` for an issue seen in the project's logs, `code_quality` for a Code Quality finding. Mode LavaflowRunMode `json:"mode"` @@ -10804,7 +11729,7 @@ type LavaflowRunSummary struct { // Status Where a run is. `diagnosing`, `fixing` and `reviewing` are the stages of a running run. `pr_open` means its pull request is open; `completed` means it finished, with no pull request or one that was merged or closed. Status LavaflowRunStatus `json:"status"` - // Title Names the problem the run worked on, in at most 80 characters: its diagnosis' title, else the title of the fix it proposed, else the first line or sentence of its diagnosis' summary. Null while none is known. + // Title Names the problem the run worked on, in at most 80 characters: its diagnosis' title, else the title of the fix it proposed, else the first line or sentence of its diagnosis' summary. A sentence too long for a title ends at its last clause that fits, or, with none, is cut at a word and ends with `…`. Null while none is known. Reads `Hidden: this field matched a secret.` when it or the text it comes from holds one of the project's secret values or a secret gitleaks detects. Title *string `json:"title"` } @@ -10847,7 +11772,7 @@ type LavaflowScan struct { // Truncated Whether the scan reviewed only part of the change. A change too large to review whole keeps the files with the most changed lines, a review that stops early keeps what it found, and a repository too large to read whole skips the files past what it read. No later scan covers the rest. Truncated bool `json:"truncated"` - // WaitingReason The bound a waiting scan waits at: `findings_limit`, `pull_request_limit`, `spend_limit`, `scan_limit` or `feature_unavailable`. Null while it only waits out its settle window, and for a scan that started. A waiting scan skips no deploy: it covers every commit since the last scan when it starts. + // WaitingReason The bound a waiting scan waits at: `findings_limit`, `pull_request_limit`, `spend_limit`, `scan_limit` or `feature_unavailable`; `feature_paused` means a platform publication pause is holding the scan without spending its retry allowance. Null while it only waits out its settle window, and for a scan that started. A waiting scan skips no deploy: it covers every commit since the last scan when it starts. WaitingReason *string `json:"waiting_reason"` } @@ -10903,10 +11828,10 @@ type LavaflowScanStatus string // LavaflowSettings A project's LavaFlow settings. LavaFlow sends this project's logs and source code to an AI service that Volcano operates. type LavaflowSettings struct { - // AllowUngatedWorkflows Whether LavaFlow opens a fix's pull request even where a workflow could run it, or put its text into a command, with the repository's secrets before a person approves it. Off by default; while off, such a fix stays on its run and no pull request opens. Only the project's owner turns it on, signed in as a person: with a Volcano sign-in session, the platform token `volcano login` stores, or another platform token that expires. It applies to the repository their GitHub account can push to. Connecting the project to another repository, or disconnecting it, turns it off, and connecting the first one again doesn't turn it back on. Workflows in the repository may then run LavaFlow's pull requests, or put their text into commands, with the repository's secrets before a person reviews them. LavaFlow writes those changes from the project's error logs, which its users can influence. Turn it on only if those workflows keep secrets away from untrusted code; gating them on a label a person adds is safer. + // AllowUngatedWorkflows Whether LavaFlow opens a fix's pull request even where a workflow could run it, or put its text into a command, with the repository's secrets before a person approves it. Off by default; while off, such a fix stays on its run and no pull request opens. Only the project's owner turns it on, signed in as a person: with the platform token `volcano login` stores, or another platform token that expires. It applies to the repository their GitHub account can push to. Connecting the project to another repository, or disconnecting it, turns it off, and connecting the first one again doesn't turn it back on. Workflows in the repository may then run LavaFlow's pull requests, or put their text into commands, with the repository's secrets before a person reviews them. LavaFlow writes those changes from the project's error logs, which its users can influence. Turn it on only if those workflows keep secrets away from untrusted code; gating them on a label a person adds is safer. AllowUngatedWorkflows bool `json:"allow_ungated_workflows"` - // Autonomy How far LavaFlow goes on its own. `diagnose_only` stops at a diagnosis. `open_pr` also opens a pull request with a fix, and never merges it. `merge` also merges the fix once LavaFlow's reviewers pass it, its required checks pass, and nothing holds it; a held fix is handed to you for good. Turning on merge lets LavaFlow's fixes, including those from runs it starts on its own, run your CI with the secrets your pull request workflows get. Choosing `merge` needs the project's `lavaflow.merge` capability. + // Autonomy How far LavaFlow goes on its own. `diagnose_only` stops at a diagnosis. `open_pr` also opens a pull request with a fix, and never merges it. `merge` also merges the fix once LavaFlow's reviewers pass it, its required checks pass, and nothing holds it; a held fix is handed to you for good. LavaFlow merges only into a base branch that requires at least one status check, through branch protection or a ruleset; on any other branch it holds every fix with `no_required_checks`. Turning on merge lets LavaFlow's fixes, including those from runs it starts on its own, run your CI with the secrets your pull request workflows get. Choosing `merge` needs the project's `lavaflow.merge` capability. Autonomy LavaflowAutonomy `json:"autonomy"` // CanUpdate Whether the caller can save the settings: true only for the project's owner with a platform token while the owner's account is active; false for any project access token and for a read-only account. @@ -10930,9 +11855,6 @@ type LavaflowSettings struct { // Repository The GitHub repository the project is linked to, as `GET /projects/{id}/git-connection` reports it. LavaFlow opens fix pull requests there, against `production_branch`. Null when the project has none. Repository *ProjectGitConnectionSummary `json:"repository"` - // SkillLearning What LavaFlow will do with a skill it learns from a writer's correction of one of its fixes, once learning ships in a later release. `auto`, the default, activates it at once. `review` keeps it `proposed` until the owner activates it. `off` learns none and loads no project skill; the project's skills stay readable and deletable. A writer of the repository can steer LavaFlow through what it learns, outside the repository's history and branch protection, so a repository that protects its guidance, or relays CI output through a bot account with write access, should use `review`. Turning learning up needs the project's `lavaflow.skills` capability. - SkillLearning LavaflowSkillLearning `json:"skill_learning"` - // UpdatedAt When the settings were last saved, or last changed by connecting a repository. Null until they first are. UpdatedAt *time.Time `json:"updated_at"` @@ -10942,10 +11864,10 @@ type LavaflowSettings struct { // LavaflowSettingsUpdate The project, and at least one field to change. An omitted field keeps its saved value. type LavaflowSettingsUpdate struct { - // AllowUngatedWorkflows Turns on opening fixes past ungated workflows, for the repository the project is connected to now; it applies only to that repository. Only the project's owner turns it on, signed in as a person: with a Volcano sign-in session, the platform token `volcano login` stores, or another platform token that expires. Their GitHub account must be able to push to that repository. A project access token, a platform token that never expires, or anyone else gets `403` with `person_required`. Any of the owner's credentials turns it off. Workflows in the repository may then run LavaFlow's pull requests, or put their text into commands, with the repository's secrets before a person reviews them. LavaFlow writes those changes from the project's error logs, which its users can influence. Turn it on only if those workflows keep secrets away from untrusted code; gating them on a label a person adds is safer. While LavaFlow is not available, only `false` is saved, and only with `enabled: false`, `skill_learning: off` or both. + // AllowUngatedWorkflows Turns on opening fixes past ungated workflows, for the repository the project is connected to now; it applies only to that repository. Only the project's owner turns it on, signed in as a person: with the platform token `volcano login` stores, or another platform token that expires. Their GitHub account must be able to push to that repository. A project access token, a platform token that never expires, or anyone else gets `403` with `person_required`. Any of the owner's credentials turns it off. Workflows in the repository may then run LavaFlow's pull requests, or put their text into commands, with the repository's secrets before a person reviews them. LavaFlow writes those changes from the project's error logs, which its users can influence. Turn it on only if those workflows keep secrets away from untrusted code; gating them on a label a person adds is safer. While LavaFlow is not available, only `false` is saved, and only with `enabled: false`. AllowUngatedWorkflows *bool `json:"allow_ungated_workflows,omitempty"` - // Autonomy How far LavaFlow goes on its own. `diagnose_only` stops at a diagnosis. `open_pr` also opens a pull request with a fix, and never merges it. `merge` also merges the fix once LavaFlow's reviewers pass it, its required checks pass, and nothing holds it; a held fix is handed to you for good. Turning on merge lets LavaFlow's fixes, including those from runs it starts on its own, run your CI with the secrets your pull request workflows get. Choosing `merge` needs the project's `lavaflow.merge` capability. + // Autonomy How far LavaFlow goes on its own. `diagnose_only` stops at a diagnosis. `open_pr` also opens a pull request with a fix, and never merges it. `merge` also merges the fix once LavaFlow's reviewers pass it, its required checks pass, and nothing holds it; a held fix is handed to you for good. LavaFlow merges only into a base branch that requires at least one status check, through branch protection or a ruleset; on any other branch it holds every fix with `no_required_checks`. Turning on merge lets LavaFlow's fixes, including those from runs it starts on its own, run your CI with the secrets your pull request workflows get. Choosing `merge` needs the project's `lavaflow.merge` capability. Autonomy *LavaflowAutonomy `json:"autonomy,omitempty"` // CodeQuality Turns Code Quality on or off. Only the project's owner, signed in, can turn it on; any credential that can save the settings can turn it off. @@ -10957,191 +11879,15 @@ type LavaflowSettingsUpdate struct { // ProjectId The project whose settings to change. ProjectId openapi_types.UUID `json:"project_id"` - - // SkillLearning Only the project's owner turns learning up, from `off` to `review` or `auto` or from `review` to `auto`, signed in as a person: with a sign-in session, a `volcano login` token whose sign-in is live, or a platform token with an expiry, and with a GitHub account that can push to the project's repository. Any other credential gets `403` with code `person_required`. Turning it down or off, or sending the saved value, needs no check. A project access token may send `off` with `project_id`, alone or with `code_quality` turned off, and nothing else; any other save it makes gets `403` with code `person_required`. - SkillLearning *LavaflowSkillLearning `json:"skill_learning,omitempty"` -} - -// LavaflowSkill A project skill with its active version. -type LavaflowSkill struct { - // AppliesTo Where a skill applies. Empty lists apply it to the whole project. - AppliesTo LavaflowSkillAppliesTo `json:"applies_to"` - - // Body Markdown, at most 2 KiB. - Body string `json:"body"` - Citations []LavaflowSkillCitation `json:"citations"` - - // ContentSha256 The hash of the active version's text, as a run records it. - ContentSha256 string `json:"content_sha256"` - Counts LavaflowSkillCounts `json:"counts"` - CreatedAt time.Time `json:"created_at"` - - // Description When the skill applies. - Description string `json:"description"` - Id openapi_types.UUID `json:"id"` - - // LastRenewedAt When the skill was created, or last renewed by the owner's edit, activation or restore. - LastRenewedAt time.Time `json:"last_renewed_at"` - LastUsedAt *time.Time `json:"last_used_at"` - - // Name Unique in the project. - Name string `json:"name"` - ProjectId openapi_types.UUID `json:"project_id"` - RetiredAt *time.Time `json:"retired_at"` - - // RetiredReason Why it retired, null unless `status` is `retired`. - RetiredReason *LavaflowSkillRetiredReason `json:"retired_reason"` - - // Scope `project` skills belong to this project and never leave it. `volcano` skills are written by Volcano for every project. - Scope LavaflowSkillScope `json:"scope"` - - // Source Where a version came from: a writer's act on a fix's pull request, or the owner's edit. - Source LavaflowSkillSource `json:"source"` - - // Status `proposed` waits for the owner to activate it. `active` is in force. `retired` is set aside and can be restored. - Status LavaflowSkillStatus `json:"status"` - UpdatedAt time.Time `json:"updated_at"` - - // Version The active version. - Version int64 `json:"version"` -} - -// LavaflowSkillAppliesTo Where a skill applies. Empty lists apply it to the whole project. -type LavaflowSkillAppliesTo struct { - // Paths Repository path globs it applies to, relative to the repository root. - Paths []string `json:"paths"` - - // ResourceIds Functions, durable functions and frontends it applies to. - ResourceIds []openapi_types.UUID `json:"resource_ids"` -} - -// LavaflowSkillAppliesToUpdate The members of `applies_to` to change. An omitted member keeps its value, and a list you send replaces it, so `[]` clears it. -type LavaflowSkillAppliesToUpdate struct { - // Paths Repository path globs it applies to, relative to the repository root. - Paths *[]string `json:"paths,omitempty"` - - // ResourceIds Functions, durable functions and frontends it applies to. - ResourceIds *[]openapi_types.UUID `json:"resource_ids,omitempty"` -} - -// LavaflowSkillCitation Repository code a skill rests on: a path and a string the file holds. -type LavaflowSkillCitation struct { - Anchor string `json:"anchor"` - Path string `json:"path"` -} - -// LavaflowSkillCounts defines model for LavaflowSkillCounts. -type LavaflowSkillCounts struct { - // Harmful Fixes that used the skill and a writer corrected or closed, or whose issue came back. - Harmful int64 `json:"harmful"` - - // Helpful Fixes that used the skill and merged as LavaFlow left them. - Helpful int64 `json:"helpful"` - - // Used Runs that loaded the skill's body. - Used int64 `json:"used"` -} - -// LavaflowSkillError An error, with the rules a refused skill failed. -type LavaflowSkillError struct { - // Code `skill_refused` means the skill check refused the text. `feature_unavailable` means the change needs the project's `lavaflow.skills` capability. - Code *string `json:"code,omitempty"` - Error string `json:"error"` - - // Rules With `skill_refused`, the rules the text failed. The answer never repeats the text. - Rules *[]LavaflowSkillErrorRules `json:"rules,omitempty"` -} - -// LavaflowSkillErrorRules defines model for LavaflowSkillError.Rules. -type LavaflowSkillErrorRules string - -// LavaflowSkillLearning What LavaFlow will do with a skill it learns from a writer's correction of one of its fixes, once learning ships in a later release. `auto`, the default, activates it at once. `review` keeps it `proposed` until the owner activates it. `off` learns none and loads no project skill; the project's skills stay readable and deletable. A writer of the repository can steer LavaFlow through what it learns, outside the repository's history and branch protection, so a repository that protects its guidance, or relays CI output through a bot account with write access, should use `review`. Turning learning up needs the project's `lavaflow.skills` capability. -type LavaflowSkillLearning string - -// LavaflowSkillList defines model for LavaflowSkillList. -type LavaflowSkillList struct { - Data []LavaflowSkill `json:"data"` -} - -// LavaflowSkillRetiredReason Why a skill retired. `repository_changed`: the project points at another repository, or none. `owner`: the owner retired it. `harmful`, `unused`, `stale` and `gate` are reserved for retirement LavaFlow does on its own, which comes in a later release. -type LavaflowSkillRetiredReason string - -// LavaflowSkillScope `project` skills belong to this project and never leave it. `volcano` skills are written by Volcano for every project. -type LavaflowSkillScope string - -// LavaflowSkillSource Where a version came from: a writer's act on a fix's pull request, or the owner's edit. -type LavaflowSkillSource struct { - // Act The writer's act it came from, for `run`. - Act *LavaflowSkillSourceAct `json:"act"` - Kind LavaflowSkillSourceKind `json:"kind"` - - // PullRequest That run's pull request number. - PullRequest *int64 `json:"pull_request"` - - // RunId The run whose pull request taught it, for `run`. - RunId *openapi_types.UUID `json:"run_id"` - - // UserId The person who edited it, for `person`. - UserId *string `json:"user_id"` -} - -// LavaflowSkillSourceAct The writer's act it came from, for `run`. -type LavaflowSkillSourceAct string - -// LavaflowSkillSourceKind defines model for LavaflowSkillSource.Kind. -type LavaflowSkillSourceKind string - -// LavaflowSkillStatus `proposed` waits for the owner to activate it. `active` is in force. `retired` is set aside and can be restored. -type LavaflowSkillStatus string - -// LavaflowSkillUpdate The fields to change. An omitted field keeps its value. -type LavaflowSkillUpdate struct { - // AppliesTo The members of `applies_to` to change. An omitted member keeps its value, and a list you send replaces it, so `[]` clears it. - AppliesTo *LavaflowSkillAppliesToUpdate `json:"applies_to,omitempty"` - Body *string `json:"body,omitempty"` - Description *string `json:"description,omitempty"` - - // Status `active` activates a proposed skill or restores a retired one. `retired` retires it. - Status *LavaflowSkillUpdateStatus `json:"status,omitempty"` -} - -// LavaflowSkillUpdateStatus `active` activates a proposed skill or restores a retired one. `retired` retires it. -type LavaflowSkillUpdateStatus string - -// LavaflowSkillVersion defines model for LavaflowSkillVersion. -type LavaflowSkillVersion struct { - // AppliesTo Where a skill applies. Empty lists apply it to the whole project. - AppliesTo LavaflowSkillAppliesTo `json:"applies_to"` - Body string `json:"body"` - Citations []LavaflowSkillCitation `json:"citations"` - ContentSha256 string `json:"content_sha256"` - CreatedAt time.Time `json:"created_at"` - Description string `json:"description"` - ProjectId openapi_types.UUID `json:"project_id"` - SkillId openapi_types.UUID `json:"skill_id"` - - // Source Where a version came from: a writer's act on a fix's pull request, or the owner's edit. - Source LavaflowSkillSource `json:"source"` - Version int64 `json:"version"` -} - -// LavaflowSkillVersionList defines model for LavaflowSkillVersionList. -type LavaflowSkillVersionList struct { - Data []LavaflowSkillVersion `json:"data"` } -// LavaflowSkipReason Why a finished run opened no pull request, with what you can do next. `diagnose_only`: the project's `autonomy` was `diagnose_only` when the run was queued, or became it before the pull request opened, so LavaFlow only diagnosed the issue; read the diagnosis, and set `autonomy` to `open_pr` or `merge` for later runs to open pull requests. `not_fixable`: the diagnosis found no change in the code that fixes the error, for example because the cause is outside it; read the diagnosis. `low_confidence`: the diagnosis is not confident enough to propose a fix; read the diagnosis. `no_patch`: LavaFlow proposed no change; read the diagnosis. `possible_credential`: the fix or its description held what looks like a credential or a project secret, so LavaFlow pushed nothing; apply the fix yourself from the diagnosis. `possible_personal_data`: the fix adds an email address the repository lacks, and the repository isn't private, so LavaFlow pushed nothing; apply the fix yourself. `ungated_workflows`: a workflow could run the fix with the repository's secrets before a person approves it; gate the workflow on a label a person adds, or turn on `allow_ungated_workflows`. `convention_unsatisfiable`: LavaFlow would merge the fix, but no title can meet the repository's commit convention, so it kept the fix on the run; apply the fix yourself, or relax the convention. `pull_request_open`: another LavaFlow pull request for the issue is open; review or close it first. `source_unavailable`: LavaFlow couldn't read the repository at the deployed commit, or the production branch no longer holds it; check the project's repository connection and that the commit exists on that branch. `permission_missing`: the Volcano GitHub App, or the project owner's GitHub account, lacks a permission LavaFlow needs; grant the App's requested permissions and make sure the owner can push to the repository. `repository_changed`: the project no longer deploys from the repository the run read; a new run uses the current one. `publish_failed`: opening the pull request failed; a new run tries again. `lineage_cap`: LavaFlow opened as many pull requests in this fix's lineage as it may; review the lineage's pull requests and fix the rest yourself. `lineage_held`: an earlier pull request in this fix's lineage was held, stopped or closed, so LavaFlow opens no more in it; apply the fix yourself from the diagnosis. `review_unresolved`: LavaFlow's review didn't pass a Code Quality fix; read the diagnosis. `duplicate_in_repository`: another project on the repository has the open Code Quality pull request for the same finding. `security_finding`: the finding has security impact and the repository isn't private, so the fix would disclose it; fix it yourself. New reasons may appear. +// LavaflowSkipReason Why a finished run opened no pull request, with what you can do next. `diagnose_only`: the project's `autonomy` was `diagnose_only` when the run was queued, or became it before the pull request opened, so LavaFlow only diagnosed the issue; read the diagnosis. For later runs to open pull requests, send `"autonomy": "open_pr"` to `PATCH /lavaflow/settings`, or run `volcano cloud lavaflow settings set --autonomy open_pr`. `not_fixable`: the diagnosis found no change in the code that fixes the error, for example because the cause is outside it; read the diagnosis. `low_confidence`: the diagnosis is not confident enough to propose a fix; read the diagnosis. `no_patch`: LavaFlow proposed no change; read the diagnosis. `possible_credential`: the fix held what looks like a credential or a project secret, so LavaFlow pushed nothing; apply the fix yourself from the diagnosis. `possible_personal_data`: the fix adds an email address the repository lacks, and the repository isn't private, so LavaFlow pushed nothing; apply the fix yourself. `ungated_workflows`: a workflow could run the fix with the repository's secrets before a person approves it; gate the workflow on a label a person adds, or turn on `allow_ungated_workflows`. `convention_unsatisfiable`: LavaFlow would merge the fix, but no title can meet the repository's commit convention, so it kept the fix on the run; apply the fix yourself, or relax the convention. `pull_request_open`: when the run checked, before opening a pull request, another LavaFlow pull request for the issue was open, or merged and not yet deployed, so this run opened none; a fix it wrote stays on the run. That pull request may have closed since; find it with `GET /lavaflow/runs?project_id=…&issue_id=…`, whose runs carry their `pull_request`. Review it, or close it if you don't want it. `source_unavailable`: LavaFlow couldn't read, or open a fix on, the code that served the error; the run's `source_unavailable` says why and what to do. `permission_missing`: the Volcano GitHub App, or the project owner's GitHub account, lacks a permission LavaFlow needs; grant the App's requested permissions and make sure the owner can push to the repository. `repository_changed`: the project no longer deploys from the repository the run read; a new run uses the current one. `publish_failed`: opening the pull request failed; a new run tries again. `lineage_cap`: LavaFlow opened as many pull requests in this fix's lineage as it may; review the lineage's pull requests and fix the rest yourself. `lineage_held`: an earlier pull request in this fix's lineage was held, stopped or closed (one a person merges holds it only when closed), so LavaFlow opens no more in it; apply the fix yourself from the diagnosis. `review_unresolved`: LavaFlow's review didn't pass a Code Quality fix; read the diagnosis. `duplicate_in_repository`: when the run checked, another project on the repository already had the Code Quality pull request for the same finding; review that pull request in the repository. `security_finding`: the finding has security impact and the repository isn't private, so the fix would disclose it; fix it yourself. New reasons may appear. type LavaflowSkipReason string -// LavaflowSlackChannel A Slack channel that reports problems to LavaFlow for a project. -type LavaflowSlackChannel struct { +// LavaflowSlackBinding The Slack channel a binding reports from. Present when `connector_type` is `slack`. +type LavaflowSlackBinding struct { // ChannelId A Slack channel ID, such as `C0123ABCD`. ChannelId SlackChannelId `json:"channel_id"` - CreatedAt time.Time `json:"created_at"` - - // Id The binding's ID, which removing it takes. - Id openapi_types.UUID `json:"id"` - ProjectId openapi_types.UUID `json:"project_id"` // TeamId A Slack workspace ID, such as `T0123ABCD`. TeamId SlackTeamId `json:"team_id"` @@ -11150,21 +11896,10 @@ type LavaflowSlackChannel struct { TeamName string `json:"team_name"` } -// LavaflowSlackChannelBinding defines model for LavaflowSlackChannelBinding. -type LavaflowSlackChannelBinding struct { +// LavaflowSlackBindingTarget The channel to bind, for a `slack` connector. +type LavaflowSlackBindingTarget struct { // ChannelId A Slack channel ID, such as `C0123ABCD`. ChannelId SlackChannelId `json:"channel_id"` - - // ProjectId The project the channel reports for. - ProjectId openapi_types.UUID `json:"project_id"` - - // TeamId A Slack workspace ID, such as `T0123ABCD`. - TeamId SlackTeamId `json:"team_id"` -} - -// LavaflowSlackChannelsResponse defines model for LavaflowSlackChannelsResponse. -type LavaflowSlackChannelsResponse struct { - Channels []LavaflowSlackChannel `json:"channels"` } // LavaflowSourceCommit The commit a run read its source at. @@ -11176,11 +11911,26 @@ type LavaflowSourceCommit struct { Sha string `json:"sha"` } +// LavaflowSourceUnavailable Why LavaFlow couldn't read, or open a fix on, the code that served a run's error, so the run opened no pull request. +type LavaflowSourceUnavailable struct { + // DeploymentId The deployment of the run's `resource` that served the error, for `no_commit`, `uncommitted_changes`, `unverified_commit` and `other_repository`. Null for any other reason, including `deployment_unattributed`, and when no deployment was serving. + DeploymentId *openapi_types.UUID `json:"deployment_id"` + + // Reason Why LavaFlow couldn't read, or open a fix on, the code that served the error, with what you can do. LavaFlow reads the deployment that served the error, so once you deploy code it can read, it starts a new run when the error happens again. `no_repository`: LavaFlow is on for no repository; link one. `no_commit`: the deployment recorded no commit, nor did the build a redeploy serves, or no deployment was serving; deploy by pushing to the linked repository's production branch, or with the CLI from a clean checkout of a commit on that branch. `uncommitted_changes`: the deployment's files differ from its commit (`dirty: true`), as when the checkout had uncommitted changes; commit and push them, then deploy from the clean checkout. `unverified_commit`: Volcano couldn't verify the deployment's commit against the linked repository (`verification: none`), for example because the commit isn't on the production branch, or the deployment is a function redeploy, which doesn't carry its upload's `verification: repository` commit; push the commit to the production branch and deploy it again. `other_repository`: the commit LavaFlow would read is from a repository other than the one LavaFlow is on for, Volcano checked it under an earlier repository link, or the project no longer links that repository. For a deployment, deploy again from the linked repository; for a reported problem or a Code Quality finding, start a new run while the project links the repository LavaFlow is on for. `repository_unreadable`: LavaFlow couldn't read the repository at the commit, for example because the Volcano GitHub App lost access to it; check the project's repository link and the App's access. `commit_not_on_production_branch`: the production branch no longer holds the commit the fix is on, so LavaFlow opened no pull request; deploy from the production branch. `deployment_unattributed`: a newer deployment that may have changed the code was going live when the error happened, so LavaFlow couldn't tell which one threw it; if the error happens again, LavaFlow starts a new run once; if that run also ends `deployment_unattributed`, the next waits for a new deploy. A `deployment_unattributed` run right after another one, even one a deploy started, gets no such run. New reasons may appear. + Reason LavaflowSourceUnavailableReason `json:"reason"` +} + +// LavaflowSourceUnavailableReason Why LavaFlow couldn't read, or open a fix on, the code that served the error, with what you can do. LavaFlow reads the deployment that served the error, so once you deploy code it can read, it starts a new run when the error happens again. `no_repository`: LavaFlow is on for no repository; link one. `no_commit`: the deployment recorded no commit, nor did the build a redeploy serves, or no deployment was serving; deploy by pushing to the linked repository's production branch, or with the CLI from a clean checkout of a commit on that branch. `uncommitted_changes`: the deployment's files differ from its commit (`dirty: true`), as when the checkout had uncommitted changes; commit and push them, then deploy from the clean checkout. `unverified_commit`: Volcano couldn't verify the deployment's commit against the linked repository (`verification: none`), for example because the commit isn't on the production branch, or the deployment is a function redeploy, which doesn't carry its upload's `verification: repository` commit; push the commit to the production branch and deploy it again. `other_repository`: the commit LavaFlow would read is from a repository other than the one LavaFlow is on for, Volcano checked it under an earlier repository link, or the project no longer links that repository. For a deployment, deploy again from the linked repository; for a reported problem or a Code Quality finding, start a new run while the project links the repository LavaFlow is on for. `repository_unreadable`: LavaFlow couldn't read the repository at the commit, for example because the Volcano GitHub App lost access to it; check the project's repository link and the App's access. `commit_not_on_production_branch`: the production branch no longer holds the commit the fix is on, so LavaFlow opened no pull request; deploy from the production branch. `deployment_unattributed`: a newer deployment that may have changed the code was going live when the error happened, so LavaFlow couldn't tell which one threw it; if the error happens again, LavaFlow starts a new run once; if that run also ends `deployment_unattributed`, the next waits for a new deploy. A `deployment_unattributed` run right after another one, even one a deploy started, gets no such run. New reasons may appear. +type LavaflowSourceUnavailableReason string + // LavaflowStats defines model for LavaflowStats. type LavaflowStats struct { // Days One entry per UTC day, oldest first, zeros included. Days []LavaflowDayCounts `json:"days"` + // Outcomes Separate confirmed merges, live improvements and actual automatic issue-resolution episodes. A live improvement is counted once per project, repository and pull request when inclusion is first durably confirmed on a tracked function or frontend. Resolution includes automatic open or ignored to resolved transitions, preserves the reason and category, and excludes manual actions. The primary issue resolution count includes every category, even when a category filter narrows merge and live counts. Only the first qualifying automatic resolution of a metric episode contributes a count. Recurrence and manual reopen start new metric episodes without erasing previous resolutions; moving resolved to ignored does not start an episode. Existing activity counts remain separate. Older servers omit this object; absence is unavailable, never zero. + Outcomes *LavaflowOutcomes `json:"outcomes,omitempty"` + // ProjectId The project the counts are for. ProjectId openapi_types.UUID `json:"project_id"` Totals struct { @@ -11257,6 +12007,23 @@ type LogActivityResponse struct { Total int `json:"total"` } +// LogAppRequestResource Selector for the entries a first-party app writes into this project's +// logs, such as the Builder's run lifecycle. Each app is one resource. +// Its ID is UUIDv5(`7374f5e9-35ff-4e46-ac13-a4717bae00e1`, slug), with +// the app's slug as UTF-8 bytes, and its name is the slug. The Builder +// (`builder`) is `b52fc8fa-8656-5141-adef-99d698ce6f3c`. Deployment logs +// are not supported for apps. +type LogAppRequestResource struct { + // Ids Optional app resource IDs, each UUIDv5 of an app's slug. Omit or send an empty array to include every app. + Ids *[]openapi_types.UUID `json:"ids,omitempty"` + + // Type Resource type to read logs for. + Type LogAppRequestResourceType `json:"type"` +} + +// LogAppRequestResourceType Resource type to read logs for. +type LogAppRequestResourceType string + // LogDatabaseRequestResource Database runtime log resource selector. Deployment logs are not supported for databases. type LogDatabaseRequestResource struct { // Ids Optional database identifiers. Omit or send an empty array to include every database in the project. @@ -11377,10 +12144,13 @@ type LogRequestResource struct { // LogResource Resource that owns a historical log event. type LogResource struct { - // Id Resource ID that owns the log event. + // Id Resource ID that owns the log event. For type `app`, the ID is + // UUIDv5(`7374f5e9-35ff-4e46-ac13-a4717bae00e1`, slug), with the app's + // slug as UTF-8 bytes; the Builder (`builder`) is + // `b52fc8fa-8656-5141-adef-99d698ce6f3c`. Id openapi_types.UUID `json:"id"` - // Name Resource name associated with the log event, when available. + // Name Resource name associated with the log event, when available. For type `app`, the app's slug, such as `builder`. Name *string `json:"name,omitempty"` // Type Resource type that owns the log event. @@ -12158,26 +12928,13 @@ type ProjectAccessToken struct { Name string `json:"name"` ProjectId openapi_types.UUID `json:"project_id"` - // Scope What a project access token may do within its project. - // - // `full` is everything you can do to that one project, up to and including - // deleting it. It cannot manage access tokens, so a leaked token cannot - // mint a replacement or erase the record of its own use, but for a CI or - // agent credential that only deploys, prefer `read_only` where the job - // allows it. + // Scope A listed token's scope. `full` and `read_only` are the scopes you + // choose when you create a token; see `ProjectAccessTokenScope`. // - // `read_only` refuses mutations. It is enforced by route classification - // rather than HTTP method, so the log and metrics query endpoints remain - // available even though they are POST requests that carry body filters. - // - // `read_only` also refuses the reads that return a credential — service - // keys, anon keys, variable values, and database connection strings. Those - // grant write access over the project's data and keep working after the - // token that fetched them is revoked, so returning one to a read-only - // credential would make the scope a formality. An anon key is included - // because its permissions are chosen per key and may include uploading, - // deleting, and publishing. - Scope ProjectAccessTokenScope `json:"scope"` + // `delegated` marks a delegated grant: a `pg-` token a first-party app + // minted for one run from the access you allowed it. It is listed only + // with `include_delegated=true`, and you cannot create one. + Scope ProjectAccessTokenListedScope `json:"scope"` // Status `revoked` means the token was deliberately revoked, by you or by the // deletion of its project. `expired` means it simply reached @@ -12209,6 +12966,14 @@ type ProjectAccessTokenStatus string // ProjectAccessTokenTokenSource What created the token. type ProjectAccessTokenTokenSource string +// ProjectAccessTokenListedScope A listed token's scope. `full` and `read_only` are the scopes you +// choose when you create a token; see `ProjectAccessTokenScope`. +// +// `delegated` marks a delegated grant: a `pg-` token a first-party app +// minted for one run from the access you allowed it. It is listed only +// with `include_delegated=true`, and you cannot create one. +type ProjectAccessTokenListedScope string + // ProjectAccessTokenScope What a project access token may do within its project. // // `full` is everything you can do to that one project, up to and including @@ -12330,6 +13095,12 @@ type ProjectConfigApplyResult struct { type ProjectConfigApplyResultEntry struct { Action ProjectConfigApplyResultEntryAction `json:"action"` + // Code Machine-readable reason for a `notice`, when it has one. Clients must accept codes not listed + // here. `function_served_by_candidate` - a promoted preview serves the function and keeps the + // variables it was built with, so the apply did not synchronize the function's variables; the + // entry's action is `unchanged`, and the rest of the apply succeeded. + Code *string `json:"code,omitempty"` + // Error Error detail when action is `error`. Error *string `json:"error,omitempty"` @@ -13617,6 +14388,24 @@ type RealtimePlanLimits struct { Plan *string `json:"plan,omitempty"` } +// RealtimePublishRequest defines model for RealtimePublishRequest. +type RealtimePublishRequest struct { + // Channel The client channel, `broadcast:` or `grant:`, with a name of at most 64 characters. + Channel string `json:"channel"` + + // Event The message type subscribers match on. + Event string `json:"event"` + + // Payload Any JSON value, sent to subscribers as `payload`. + Payload json.RawMessage `json:"payload"` +} + +// RealtimePublishResult defines model for RealtimePublishResult. +type RealtimePublishResult struct { + // Channel The channel the message was sent to. + Channel string `json:"channel"` +} + // RealtimeStats Realtime usage statistics for a project type RealtimeStats struct { // LastInvokedAt Most recent realtime activity timestamp across channels @@ -13696,7 +14485,7 @@ type ResolveFunctionResponse struct { // FunctionId Canonical function ID used for invocation routing FunctionId openapi_types.UUID `json:"function_id"` - // InvokeUrl Canonical HTTPS endpoint for invoking this function. Use it as-is: it does not share a domain with the API, so a host derived from the API URL will not reach the function. Omitted when the deployment serves no public invocation domain, as in local development; invoke through POST /functions/{functionId}/invoke instead. + // InvokeUrl Canonical HTTPS endpoint for invoking this function. Use it as-is: it does not share a domain with the API, so a host derived from the API URL will not reach the function. Omitted in local development and when the deployment serves no public invocation domain; invoke through POST /functions/{functionId}/invoke instead. InvokeUrl *string `json:"invoke_url,omitempty"` // Name DNS-safe function name @@ -14187,7 +14976,7 @@ type ServiceKey struct { // KeyValue Full JWT token for Authorization header. // Returned on create, get, and list (decrypted from storage). List - // responses leave it out for a key that holds `ai.invoke`. + // responses leave it out for a key that holds `ai.invoke` or `grants.mint`. // **Store securely - NEVER expose in frontend code!** KeyValue *string `json:"key_value,omitempty"` @@ -14539,11 +15328,34 @@ type ShareVariable struct { Unshared *bool `json:"unshared,omitempty"` } +// SharedVariablesReplaceResult defines model for SharedVariablesReplaceResult. +type SharedVariablesReplaceResult struct { + // SkippedFunctions Functions the replacement changes whose variables were not synchronized. + SkippedFunctions []SkippedServedFunction `json:"skipped_functions"` +} + // SharesResponse defines model for SharesResponse. type SharesResponse struct { Shares []Share `json:"shares"` } +// SkippedServedFunction defines model for SkippedServedFunction. +type SkippedServedFunction struct { + // Code Why the function was left out. Clients must accept codes not listed here. + // `function_served_by_candidate` - a promoted preview serves the function and keeps the + // variables it was built with. + Code string `json:"code"` + + // Id Function ID. + Id openapi_types.UUID `json:"id"` + + // Message What brings the function in line. + Message string `json:"message"` + + // Name Function name. + Name string `json:"name"` +} + // SlackAuthorizationResponse defines model for SlackAuthorizationResponse. type SlackAuthorizationResponse struct { // AuthorizationUrl The Slack page to send the browser to. @@ -14589,6 +15401,12 @@ type SlackConnectionsResponse struct { Connections []SlackConnection `json:"connections"` } +// SlackConnector A `slack` connector's workspace. Present when `type` is `slack`. +type SlackConnector struct { + // TeamId A Slack workspace ID, such as `T0123ABCD`. + TeamId SlackTeamId `json:"team_id"` +} + // SlackTeamId A Slack workspace ID, such as `T0123ABCD`. type SlackTeamId = string @@ -15264,6 +16082,9 @@ type BranchName = string // BucketName defines model for BucketName. type BucketName = string +// ConnectorId defines model for ConnectorId. +type ConnectorId = openapi_types.UUID + // Cursor defines model for Cursor. type Cursor = string @@ -15338,6 +16159,9 @@ type FrontendId = openapi_types.UUID // FrontendRouteId defines model for FrontendRouteId. type FrontendRouteId = openapi_types.UUID +// FunctionCandidateId defines model for FunctionCandidateId. +type FunctionCandidateId = openapi_types.UUID + // FunctionId defines model for FunctionId. type FunctionId = openapi_types.UUID @@ -15395,15 +16219,6 @@ type LavaflowRunStatusFilter = LavaflowRunStatus // LavaflowScanLimit defines model for LavaflowScanLimit. type LavaflowScanLimit = int -// LavaflowSkillId defines model for LavaflowSkillId. -type LavaflowSkillId = openapi_types.UUID - -// LavaflowSkillIdQuery defines model for LavaflowSkillIdQuery. -type LavaflowSkillIdQuery = openapi_types.UUID - -// LavaflowSkillStatusFilter `proposed` waits for the owner to activate it. `active` is in force. `retired` is set aside and can be restored. -type LavaflowSkillStatusFilter = LavaflowSkillStatus - // Limit defines model for Limit. type Limit = int @@ -16181,12 +16996,18 @@ type ListImportSourcesParams struct { ConnectionId openapi_types.UUID `form:"connection_id" json:"connection_id"` } -// ListLavaflowGlobalSkillsParams defines parameters for ListLavaflowGlobalSkills. -type ListLavaflowGlobalSkillsParams struct { +// ListLavaflowConnectorBindingsParams defines parameters for ListLavaflowConnectorBindings. +type ListLavaflowConnectorBindingsParams struct { // ProjectId The project to read. A project the caller can't read answers like one that doesn't exist. ProjectId ProjectIdQuery `form:"project_id" json:"project_id"` } +// DeleteLavaflowConnectorBindingParams defines parameters for DeleteLavaflowConnectorBinding. +type DeleteLavaflowConnectorBindingParams struct { + // ProjectId Optional. The item's own project authorizes the request; when given, the item must belong to this project, or it answers like an unknown one. + ProjectId *ItemProjectIdQuery `form:"project_id,omitempty" json:"project_id,omitempty"` +} + // ListLavaflowResourcesParams defines parameters for ListLavaflowResources. type ListLavaflowResourcesParams struct { // ProjectId The project to read. A project the caller can't read answers like one that doesn't exist. @@ -16281,54 +17102,6 @@ type GetLavaflowSettingsParams struct { ProjectId ProjectIdQuery `form:"project_id" json:"project_id"` } -// ListLavaflowSkillVersionsParams defines parameters for ListLavaflowSkillVersions. -type ListLavaflowSkillVersionsParams struct { - // ProjectId The project to read. A project the caller can't read answers like one that doesn't exist. - ProjectId ProjectIdQuery `form:"project_id" json:"project_id"` - - // SkillId The skill whose versions to list. - SkillId LavaflowSkillIdQuery `form:"skill_id" json:"skill_id"` -} - -// ListLavaflowSkillsParams defines parameters for ListLavaflowSkills. -type ListLavaflowSkillsParams struct { - // ProjectId The project to read. A project the caller can't read answers like one that doesn't exist. - ProjectId ProjectIdQuery `form:"project_id" json:"project_id"` - - // Status Only skills in this status. - Status *LavaflowSkillStatusFilter `form:"status,omitempty" json:"status,omitempty"` -} - -// DeleteLavaflowSkillParams defines parameters for DeleteLavaflowSkill. -type DeleteLavaflowSkillParams struct { - // ProjectId Optional. The item's own project authorizes the request; when given, the item must belong to this project, or it answers like an unknown one. - ProjectId *ItemProjectIdQuery `form:"project_id,omitempty" json:"project_id,omitempty"` -} - -// GetLavaflowSkillParams defines parameters for GetLavaflowSkill. -type GetLavaflowSkillParams struct { - // ProjectId Optional. The item's own project authorizes the request; when given, the item must belong to this project, or it answers like an unknown one. - ProjectId *ItemProjectIdQuery `form:"project_id,omitempty" json:"project_id,omitempty"` -} - -// UpdateLavaflowSkillParams defines parameters for UpdateLavaflowSkill. -type UpdateLavaflowSkillParams struct { - // ProjectId Optional. The item's own project authorizes the request; when given, the item must belong to this project, or it answers like an unknown one. - ProjectId *ItemProjectIdQuery `form:"project_id,omitempty" json:"project_id,omitempty"` -} - -// ListLavaflowSlackChannelsParams defines parameters for ListLavaflowSlackChannels. -type ListLavaflowSlackChannelsParams struct { - // ProjectId The project to read. A project the caller can't read answers like one that doesn't exist. - ProjectId ProjectIdQuery `form:"project_id" json:"project_id"` -} - -// UnbindLavaflowSlackChannelParams defines parameters for UnbindLavaflowSlackChannel. -type UnbindLavaflowSlackChannelParams struct { - // ProjectId Optional. The item's own project authorizes the request; when given, the item must belong to this project, or it answers like an unknown one. - ProjectId *ItemProjectIdQuery `form:"project_id,omitempty" json:"project_id,omitempty"` -} - // GetLavaflowStatsParams defines parameters for GetLavaflowStats. type GetLavaflowStatsParams struct { // ProjectId The project to read. A project the caller can't read answers like one that doesn't exist. @@ -16522,6 +17295,10 @@ type ListProjectAccessTokensParams struct { // IncludeRevoked Include tokens that can no longer authenticate — both revoked and // expired ones. IncludeRevoked *bool `form:"include_revoked,omitempty" json:"include_revoked,omitempty"` + + // IncludeDelegated Include delegated grants: short tokens a first-party app mints for + // one run from the access you allowed it. + IncludeDelegated *bool `form:"include_delegated,omitempty" json:"include_delegated,omitempty"` } // ListProjectAccessTokensUsageParams defines parameters for ListProjectAccessTokensUsage. @@ -17298,7 +18075,7 @@ type CreateFunctionMultipartBody struct { // Handler The name of the function to invoke. Defaults to "handler" if not specified. // Your code must export/define a function with this name: - // - Node.js: exports.handler (in index.js, index.mjs or index.cjs, or in TypeScript in index.ts, index.mts or index.cts, which the build compiles without type-checking) + // - Node.js: exports.handler (in index.js, index.mjs or index.cjs, or in TypeScript in index.ts, index.mts, index.cts or index.tsx, which the build compiles without type-checking) // - Python: def handler() (in main.py) // - Ruby: def handler() (in main.rb) Handler *string `json:"handler,omitempty"` @@ -17362,6 +18139,24 @@ type CreateFunctionsBatchMultipartBody struct { Functions string `json:"functions"` } +// CreateFunctionCandidateMultipartBody defines parameters for CreateFunctionCandidate. +type CreateFunctionCandidateMultipartBody struct { + // Code The function's source archive, as for deploying the function. Built with the function's runtime and handler. + Code openapi_types.File `json:"code"` + + // Name Names the preview within the function. Cannot be `production`. + Name string `json:"name"` + + // TtlSeconds Deletes the preview this many seconds after it is created, at most 30 days. Omit to keep it until deleted. + TtlSeconds *int `json:"ttl_seconds,omitempty"` +} + +// RedeployFunctionCandidateMultipartBody defines parameters for RedeployFunctionCandidate. +type RedeployFunctionCandidateMultipartBody struct { + // Code The function's source archive, as for deploying the function. Built with the function's runtime and handler. + Code openapi_types.File `json:"code"` +} + // ListFunctionDeploymentsParams defines parameters for ListFunctionDeployments. type ListFunctionDeploymentsParams struct { // Page Page number (1-indexed) for offset pagination. Declares no schema @@ -17631,7 +18426,8 @@ type CreateServiceKeyJSONBody struct { // database API and realtime, a key without "*" gets 403 from the database // API, needs realtime.subscribe for broadcast and presence channels and // realtime.publish to publish, and needs "*" for table changes. `ai.invoke` - // is reserved: this route refuses it with 400, and "*" doesn't include it. + // and `grants.mint` are reserved: "*" doesn't include them, only a person + // may ask for one, and it must be the key's only permission. Permissions *[]string `json:"permissions,omitempty"` } @@ -18061,6 +18857,9 @@ type AuthConfirmEmailChangeJSONRequestBody AuthConfirmEmailChangeJSONBody // AuthConvertAnonymousJSONRequestBody defines body for AuthConvertAnonymous for application/json ContentType. type AuthConvertAnonymousJSONRequestBody AuthConvertAnonymousJSONBody +// CreateConnectorJSONRequestBody defines body for CreateConnector for application/json ContentType. +type CreateConnectorJSONRequestBody = ConnectorCreate + // QueryDatabaseBranchDeleteJSONRequestBody defines body for QueryDatabaseBranchDelete for application/json ContentType. type QueryDatabaseBranchDeleteJSONRequestBody = DatabaseDeleteRequest @@ -18127,6 +18926,12 @@ type PreflightProjectImportJSONRequestBody = ProjectImportPreflightRequest // StartProjectImportJSONRequestBody defines body for StartProjectImport for application/json ContentType. type StartProjectImportJSONRequestBody = ProjectImportStartRequest +// CreateIssueJSONRequestBody defines body for CreateIssue for application/json ContentType. +type CreateIssueJSONRequestBody = CreateIssueRequest + +// CreateLavaflowConnectorBindingJSONRequestBody defines body for CreateLavaflowConnectorBinding for application/json ContentType. +type CreateLavaflowConnectorBindingJSONRequestBody = LavaflowConnectorBindingCreate + // CreateLavaflowHeldFixOpenJSONRequestBody defines body for CreateLavaflowHeldFixOpen for application/json ContentType. type CreateLavaflowHeldFixOpenJSONRequestBody = LavaflowHeldFixOpen @@ -18136,12 +18941,6 @@ type CreateLavaflowRunJSONRequestBody = LavaflowRunCreate // PatchLavaflowSettingsJSONRequestBody defines body for PatchLavaflowSettings for application/json ContentType. type PatchLavaflowSettingsJSONRequestBody = LavaflowSettingsUpdate -// UpdateLavaflowSkillJSONRequestBody defines body for UpdateLavaflowSkill for application/json ContentType. -type UpdateLavaflowSkillJSONRequestBody = LavaflowSkillUpdate - -// BindLavaflowSlackChannelJSONRequestBody defines body for BindLavaflowSlackChannel for application/json ContentType. -type BindLavaflowSlackChannelJSONRequestBody = LavaflowSlackChannelBinding - // RenewProjectLockJSONRequestBody defines body for RenewProjectLock for application/json ContentType. type RenewProjectLockJSONRequestBody = ProjectLockLeaseRequest @@ -18298,12 +19097,24 @@ type CreateFunctionsBatchMultipartRequestBody CreateFunctionsBatchMultipartBody // UpdateFunctionJSONRequestBody defines body for UpdateFunction for application/json ContentType. type UpdateFunctionJSONRequestBody = UpdateFunctionRequest +// CreateFunctionCandidateMultipartRequestBody defines body for CreateFunctionCandidate for multipart/form-data ContentType. +type CreateFunctionCandidateMultipartRequestBody CreateFunctionCandidateMultipartBody + +// RedeployFunctionCandidateMultipartRequestBody defines body for RedeployFunctionCandidate for multipart/form-data ContentType. +type RedeployFunctionCandidateMultipartRequestBody RedeployFunctionCandidateMultipartBody + +// PromoteFunctionCandidateJSONRequestBody defines body for PromoteFunctionCandidate for application/json ContentType. +type PromoteFunctionCandidateJSONRequestBody = FunctionPromotionRequest + // CreateFunctionSchedulerJSONRequestBody defines body for CreateFunctionScheduler for application/json ContentType. type CreateFunctionSchedulerJSONRequestBody = CreateFunctionSchedulerRequest // UpdateFunctionSchedulerJSONRequestBody defines body for UpdateFunctionScheduler for application/json ContentType. type UpdateFunctionSchedulerJSONRequestBody = UpdateFunctionSchedulerRequest +// RollbackFunctionServingJSONRequestBody defines body for RollbackFunctionServing for application/json ContentType. +type RollbackFunctionServingJSONRequestBody = FunctionRollbackRequest + // ConnectProjectGitJSONRequestBody defines body for ConnectProjectGit for application/json ContentType. type ConnectProjectGitJSONRequestBody = ConnectProjectGitRequest @@ -18391,6 +19202,9 @@ type CreateVariableJSONRequestBody = CreateVariableRequest // UpdateVariableJSONRequestBody defines body for UpdateVariable for application/json ContentType. type UpdateVariableJSONRequestBody = UpdateVariableRequest +// PublishRealtimeMessageJSONRequestBody defines body for PublishRealtimeMessage for application/json ContentType. +type PublishRealtimeMessageJSONRequestBody = RealtimePublishRequest + // CreateSandboxFileArchiveMultipartRequestBody defines body for CreateSandboxFileArchive for multipart/form-data ContentType. type CreateSandboxFileArchiveMultipartRequestBody = SandboxFileArchiveForm @@ -18833,6 +19647,140 @@ func (t *DatabaseQueryFilter_Value) UnmarshalJSON(b []byte) error { return err } +// AsLavaflowConnectorBindingCreate0 returns the union data inside the LavaflowConnectorBindingCreate as a LavaflowConnectorBindingCreate0 +func (t LavaflowConnectorBindingCreate) AsLavaflowConnectorBindingCreate0() (LavaflowConnectorBindingCreate0, error) { + var body LavaflowConnectorBindingCreate0 + err := json.Unmarshal(t.union, &body) + return body, err +} + +// FromLavaflowConnectorBindingCreate0 overwrites any union data inside the LavaflowConnectorBindingCreate as the provided LavaflowConnectorBindingCreate0 +func (t *LavaflowConnectorBindingCreate) FromLavaflowConnectorBindingCreate0(v LavaflowConnectorBindingCreate0) error { + b, err := json.Marshal(v) + t.union = b + return err +} + +// MergeLavaflowConnectorBindingCreate0 performs a merge with any union data inside the LavaflowConnectorBindingCreate, using the provided LavaflowConnectorBindingCreate0 +func (t *LavaflowConnectorBindingCreate) MergeLavaflowConnectorBindingCreate0(v LavaflowConnectorBindingCreate0) error { + b, err := json.Marshal(v) + if err != nil { + return err + } + + merged, err := runtime.JSONMerge(t.union, b) + t.union = merged + return err +} + +// AsLavaflowConnectorBindingCreate1 returns the union data inside the LavaflowConnectorBindingCreate as a LavaflowConnectorBindingCreate1 +func (t LavaflowConnectorBindingCreate) AsLavaflowConnectorBindingCreate1() (LavaflowConnectorBindingCreate1, error) { + var body LavaflowConnectorBindingCreate1 + err := json.Unmarshal(t.union, &body) + return body, err +} + +// FromLavaflowConnectorBindingCreate1 overwrites any union data inside the LavaflowConnectorBindingCreate as the provided LavaflowConnectorBindingCreate1 +func (t *LavaflowConnectorBindingCreate) FromLavaflowConnectorBindingCreate1(v LavaflowConnectorBindingCreate1) error { + b, err := json.Marshal(v) + t.union = b + return err +} + +// MergeLavaflowConnectorBindingCreate1 performs a merge with any union data inside the LavaflowConnectorBindingCreate, using the provided LavaflowConnectorBindingCreate1 +func (t *LavaflowConnectorBindingCreate) MergeLavaflowConnectorBindingCreate1(v LavaflowConnectorBindingCreate1) error { + b, err := json.Marshal(v) + if err != nil { + return err + } + + merged, err := runtime.JSONMerge(t.union, b) + t.union = merged + return err +} + +func (t LavaflowConnectorBindingCreate) MarshalJSON() ([]byte, error) { + b, err := t.union.MarshalJSON() + if err != nil { + return nil, err + } + object := make(map[string]json.RawMessage) + if t.union != nil { + err = json.Unmarshal(b, &object) + if err != nil { + return nil, err + } + } + + if t.Aikido != nil { + object["aikido"], err = json.Marshal(t.Aikido) + if err != nil { + return nil, fmt.Errorf("error marshaling 'aikido': %w", err) + } + } + + object["connector_id"], err = json.Marshal(t.ConnectorId) + if err != nil { + return nil, fmt.Errorf("error marshaling 'connector_id': %w", err) + } + + object["project_id"], err = json.Marshal(t.ProjectId) + if err != nil { + return nil, fmt.Errorf("error marshaling 'project_id': %w", err) + } + + if t.Slack != nil { + object["slack"], err = json.Marshal(t.Slack) + if err != nil { + return nil, fmt.Errorf("error marshaling 'slack': %w", err) + } + } + b, err = json.Marshal(object) + return b, err +} + +func (t *LavaflowConnectorBindingCreate) UnmarshalJSON(b []byte) error { + err := t.union.UnmarshalJSON(b) + if err != nil { + return err + } + object := make(map[string]json.RawMessage) + err = json.Unmarshal(b, &object) + if err != nil { + return err + } + + if raw, found := object["aikido"]; found { + err = json.Unmarshal(raw, &t.Aikido) + if err != nil { + return fmt.Errorf("error reading 'aikido': %w", err) + } + } + + if raw, found := object["connector_id"]; found { + err = json.Unmarshal(raw, &t.ConnectorId) + if err != nil { + return fmt.Errorf("error reading 'connector_id': %w", err) + } + } + + if raw, found := object["project_id"]; found { + err = json.Unmarshal(raw, &t.ProjectId) + if err != nil { + return fmt.Errorf("error reading 'project_id': %w", err) + } + } + + if raw, found := object["slack"]; found { + err = json.Unmarshal(raw, &t.Slack) + if err != nil { + return fmt.Errorf("error reading 'slack': %w", err) + } + } + + return err +} + // AsLogEventBody0 returns the union data inside the LogEvent_Body as a LogEventBody0 func (t LogEvent_Body) AsLogEventBody0() (LogEventBody0, error) { var body LogEventBody0 @@ -19057,6 +20005,34 @@ func (t *LogRequestResource) MergeLogDatabaseRequestResource(v LogDatabaseReques return err } +// AsLogAppRequestResource returns the union data inside the LogRequestResource as a LogAppRequestResource +func (t LogRequestResource) AsLogAppRequestResource() (LogAppRequestResource, error) { + var body LogAppRequestResource + err := json.Unmarshal(t.union, &body) + return body, err +} + +// FromLogAppRequestResource overwrites any union data inside the LogRequestResource as the provided LogAppRequestResource +func (t *LogRequestResource) FromLogAppRequestResource(v LogAppRequestResource) error { + v.Type = "app" + b, err := json.Marshal(v) + t.union = b + return err +} + +// MergeLogAppRequestResource performs a merge with any union data inside the LogRequestResource, using the provided LogAppRequestResource +func (t *LogRequestResource) MergeLogAppRequestResource(v LogAppRequestResource) error { + v.Type = "app" + b, err := json.Marshal(v) + if err != nil { + return err + } + + merged, err := runtime.JSONMerge(t.union, b) + t.union = merged + return err +} + func (t LogRequestResource) Discriminator() (string, error) { var discriminator struct { Discriminator string `json:"type"` @@ -19071,6 +20047,8 @@ func (t LogRequestResource) ValueByDiscriminator() (interface{}, error) { return nil, err } switch discriminator { + case "app": + return t.AsLogAppRequestResource() case "database": return t.AsLogDatabaseRequestResource() case "frontend": @@ -19982,6 +20960,20 @@ type ClientInterface interface { // ListCapabilities request ListCapabilities(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListConnectors request + ListConnectors(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) + + // CreateConnectorWithBody request with any body + CreateConnectorWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + CreateConnector(ctx context.Context, body CreateConnectorJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // DeleteConnector request + DeleteConnector(ctx context.Context, connectorId ConnectorId, reqEditors ...RequestEditorFn) (*http.Response, error) + + // GetConnector request + GetConnector(ctx context.Context, connectorId ConnectorId, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListPostgresVersions request ListPostgresVersions(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -20146,8 +21138,21 @@ type ClientInterface interface { // ListImportSources request ListImportSources(ctx context.Context, provider ImportProvider, params *ListImportSourcesParams, reqEditors ...RequestEditorFn) (*http.Response, error) - // ListLavaflowGlobalSkills request - ListLavaflowGlobalSkills(ctx context.Context, params *ListLavaflowGlobalSkillsParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // CreateIssueWithBody request with any body + CreateIssueWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + CreateIssue(ctx context.Context, body CreateIssueJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // ListLavaflowConnectorBindings request + ListLavaflowConnectorBindings(ctx context.Context, params *ListLavaflowConnectorBindingsParams, reqEditors ...RequestEditorFn) (*http.Response, error) + + // CreateLavaflowConnectorBindingWithBody request with any body + CreateLavaflowConnectorBindingWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + CreateLavaflowConnectorBinding(ctx context.Context, body CreateLavaflowConnectorBindingJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // DeleteLavaflowConnectorBinding request + DeleteLavaflowConnectorBinding(ctx context.Context, bindingId openapi_types.UUID, params *DeleteLavaflowConnectorBindingParams, reqEditors ...RequestEditorFn) (*http.Response, error) // CreateLavaflowHeldFixOpenWithBody request with any body CreateLavaflowHeldFixOpenWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -20179,34 +21184,6 @@ type ClientInterface interface { PatchLavaflowSettings(ctx context.Context, body PatchLavaflowSettingsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - // ListLavaflowSkillVersions request - ListLavaflowSkillVersions(ctx context.Context, params *ListLavaflowSkillVersionsParams, reqEditors ...RequestEditorFn) (*http.Response, error) - - // ListLavaflowSkills request - ListLavaflowSkills(ctx context.Context, params *ListLavaflowSkillsParams, reqEditors ...RequestEditorFn) (*http.Response, error) - - // DeleteLavaflowSkill request - DeleteLavaflowSkill(ctx context.Context, skillId LavaflowSkillId, params *DeleteLavaflowSkillParams, reqEditors ...RequestEditorFn) (*http.Response, error) - - // GetLavaflowSkill request - GetLavaflowSkill(ctx context.Context, skillId LavaflowSkillId, params *GetLavaflowSkillParams, reqEditors ...RequestEditorFn) (*http.Response, error) - - // UpdateLavaflowSkillWithBody request with any body - UpdateLavaflowSkillWithBody(ctx context.Context, skillId LavaflowSkillId, params *UpdateLavaflowSkillParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) - - UpdateLavaflowSkill(ctx context.Context, skillId LavaflowSkillId, params *UpdateLavaflowSkillParams, body UpdateLavaflowSkillJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - - // ListLavaflowSlackChannels request - ListLavaflowSlackChannels(ctx context.Context, params *ListLavaflowSlackChannelsParams, reqEditors ...RequestEditorFn) (*http.Response, error) - - // BindLavaflowSlackChannelWithBody request with any body - BindLavaflowSlackChannelWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) - - BindLavaflowSlackChannel(ctx context.Context, body BindLavaflowSlackChannelJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) - - // UnbindLavaflowSlackChannel request - UnbindLavaflowSlackChannel(ctx context.Context, bindingId openapi_types.UUID, params *UnbindLavaflowSlackChannelParams, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetLavaflowStats request GetLavaflowStats(ctx context.Context, params *GetLavaflowStatsParams, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -20770,6 +21747,29 @@ type ClientInterface interface { UpdateFunction(ctx context.Context, id ProjectId, functionId FunctionId, body UpdateFunctionJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListFunctionCandidates request + ListFunctionCandidates(ctx context.Context, id ProjectId, functionId FunctionId, reqEditors ...RequestEditorFn) (*http.Response, error) + + // CreateFunctionCandidateWithBody request with any body + CreateFunctionCandidateWithBody(ctx context.Context, id ProjectId, functionId FunctionId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + // DeleteFunctionCandidate request + DeleteFunctionCandidate(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, reqEditors ...RequestEditorFn) (*http.Response, error) + + // GetFunctionCandidate request + GetFunctionCandidate(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, reqEditors ...RequestEditorFn) (*http.Response, error) + + // ListFunctionCandidateDeployments request + ListFunctionCandidateDeployments(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, reqEditors ...RequestEditorFn) (*http.Response, error) + + // RedeployFunctionCandidateWithBody request with any body + RedeployFunctionCandidateWithBody(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + // PromoteFunctionCandidateWithBody request with any body + PromoteFunctionCandidateWithBody(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + PromoteFunctionCandidate(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, body PromoteFunctionCandidateJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListFunctionDeployments request ListFunctionDeployments(ctx context.Context, id ProjectId, functionId FunctionId, params *ListFunctionDeploymentsParams, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -20792,6 +21792,14 @@ type ClientInterface interface { UpdateFunctionScheduler(ctx context.Context, id ProjectId, functionId FunctionId, schedulerId SchedulerId, body UpdateFunctionSchedulerJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetFunctionServing request + GetFunctionServing(ctx context.Context, id ProjectId, functionId FunctionId, reqEditors ...RequestEditorFn) (*http.Response, error) + + // RollbackFunctionServingWithBody request with any body + RollbackFunctionServingWithBody(ctx context.Context, id ProjectId, functionId FunctionId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + RollbackFunctionServing(ctx context.Context, id ProjectId, functionId FunctionId, body RollbackFunctionServingJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // DisconnectProjectGit request DisconnectProjectGit(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -21083,6 +22091,11 @@ type ClientInterface interface { // DownloadPublicFile request DownloadPublicFile(ctx context.Context, projectId openapi_types.UUID, bucketName BucketName, path string, reqEditors ...RequestEditorFn) (*http.Response, error) + // PublishRealtimeMessageWithBody request with any body + PublishRealtimeMessageWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + PublishRealtimeMessage(ctx context.Context, body PublishRealtimeMessageJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // CreateSandboxFileArchiveWithBody request with any body CreateSandboxFileArchiveWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -21943,6 +22956,66 @@ func (c *Client) ListCapabilities(ctx context.Context, reqEditors ...RequestEdit return c.Client.Do(req) } +func (c *Client) ListConnectors(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListConnectorsRequest(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) CreateConnectorWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateConnectorRequestWithBody(c.Server, 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) CreateConnector(ctx context.Context, body CreateConnectorJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateConnectorRequest(c.Server, 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) DeleteConnector(ctx context.Context, connectorId ConnectorId, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewDeleteConnectorRequest(c.Server, connectorId) + 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) GetConnector(ctx context.Context, connectorId ConnectorId, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetConnectorRequest(c.Server, connectorId) + 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) ListPostgresVersions(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewListPostgresVersionsRequest(c.Server) if err != nil { @@ -22687,8 +23760,8 @@ func (c *Client) ListImportSources(ctx context.Context, provider ImportProvider, return c.Client.Do(req) } -func (c *Client) ListLavaflowGlobalSkills(ctx context.Context, params *ListLavaflowGlobalSkillsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListLavaflowGlobalSkillsRequest(c.Server, params) +func (c *Client) CreateIssueWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateIssueRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -22699,56 +23772,8 @@ func (c *Client) ListLavaflowGlobalSkills(ctx context.Context, params *ListLavaf return c.Client.Do(req) } -func (c *Client) CreateLavaflowHeldFixOpenWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewCreateLavaflowHeldFixOpenRequestWithBody(c.Server, 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) CreateLavaflowHeldFixOpen(ctx context.Context, body CreateLavaflowHeldFixOpenJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewCreateLavaflowHeldFixOpenRequest(c.Server, 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) ListLavaflowResources(ctx context.Context, params *ListLavaflowResourcesParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListLavaflowResourcesRequest(c.Server, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - if err := c.applyEditors(ctx, req, reqEditors); err != nil { - return nil, err - } - return c.Client.Do(req) -} - -func (c *Client) ListLavaflowRuns(ctx context.Context, params *ListLavaflowRunsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListLavaflowRunsRequest(c.Server, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - if err := c.applyEditors(ctx, req, reqEditors); err != nil { - return nil, err - } - return c.Client.Do(req) -} - -func (c *Client) CreateLavaflowRunWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewCreateLavaflowRunRequestWithBody(c.Server, contentType, body) +func (c *Client) CreateIssue(ctx context.Context, body CreateIssueJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateIssueRequest(c.Server, body) if err != nil { return nil, err } @@ -22759,20 +23784,8 @@ func (c *Client) CreateLavaflowRunWithBody(ctx context.Context, contentType stri return c.Client.Do(req) } -func (c *Client) CreateLavaflowRun(ctx context.Context, body CreateLavaflowRunJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewCreateLavaflowRunRequest(c.Server, 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) GetLavaflowRun(ctx context.Context, runId LavaflowRunId, params *GetLavaflowRunParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetLavaflowRunRequest(c.Server, runId, params) +func (c *Client) ListLavaflowConnectorBindings(ctx context.Context, params *ListLavaflowConnectorBindingsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListLavaflowConnectorBindingsRequest(c.Server, params) if err != nil { return nil, err } @@ -22783,8 +23796,8 @@ func (c *Client) GetLavaflowRun(ctx context.Context, runId LavaflowRunId, params return c.Client.Do(req) } -func (c *Client) ListLavaflowScans(ctx context.Context, params *ListLavaflowScansParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListLavaflowScansRequest(c.Server, params) +func (c *Client) CreateLavaflowConnectorBindingWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateLavaflowConnectorBindingRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -22795,8 +23808,8 @@ func (c *Client) ListLavaflowScans(ctx context.Context, params *ListLavaflowScan return c.Client.Do(req) } -func (c *Client) GetLavaflowSettings(ctx context.Context, params *GetLavaflowSettingsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetLavaflowSettingsRequest(c.Server, params) +func (c *Client) CreateLavaflowConnectorBinding(ctx context.Context, body CreateLavaflowConnectorBindingJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateLavaflowConnectorBindingRequest(c.Server, body) if err != nil { return nil, err } @@ -22807,8 +23820,8 @@ func (c *Client) GetLavaflowSettings(ctx context.Context, params *GetLavaflowSet return c.Client.Do(req) } -func (c *Client) PatchLavaflowSettingsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewPatchLavaflowSettingsRequestWithBody(c.Server, contentType, body) +func (c *Client) DeleteLavaflowConnectorBinding(ctx context.Context, bindingId openapi_types.UUID, params *DeleteLavaflowConnectorBindingParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewDeleteLavaflowConnectorBindingRequest(c.Server, bindingId, params) if err != nil { return nil, err } @@ -22819,8 +23832,8 @@ func (c *Client) PatchLavaflowSettingsWithBody(ctx context.Context, contentType return c.Client.Do(req) } -func (c *Client) PatchLavaflowSettings(ctx context.Context, body PatchLavaflowSettingsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewPatchLavaflowSettingsRequest(c.Server, body) +func (c *Client) CreateLavaflowHeldFixOpenWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateLavaflowHeldFixOpenRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -22831,8 +23844,8 @@ func (c *Client) PatchLavaflowSettings(ctx context.Context, body PatchLavaflowSe return c.Client.Do(req) } -func (c *Client) ListLavaflowSkillVersions(ctx context.Context, params *ListLavaflowSkillVersionsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListLavaflowSkillVersionsRequest(c.Server, params) +func (c *Client) CreateLavaflowHeldFixOpen(ctx context.Context, body CreateLavaflowHeldFixOpenJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateLavaflowHeldFixOpenRequest(c.Server, body) if err != nil { return nil, err } @@ -22843,8 +23856,8 @@ func (c *Client) ListLavaflowSkillVersions(ctx context.Context, params *ListLava return c.Client.Do(req) } -func (c *Client) ListLavaflowSkills(ctx context.Context, params *ListLavaflowSkillsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListLavaflowSkillsRequest(c.Server, params) +func (c *Client) ListLavaflowResources(ctx context.Context, params *ListLavaflowResourcesParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListLavaflowResourcesRequest(c.Server, params) if err != nil { return nil, err } @@ -22855,8 +23868,8 @@ func (c *Client) ListLavaflowSkills(ctx context.Context, params *ListLavaflowSki return c.Client.Do(req) } -func (c *Client) DeleteLavaflowSkill(ctx context.Context, skillId LavaflowSkillId, params *DeleteLavaflowSkillParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewDeleteLavaflowSkillRequest(c.Server, skillId, params) +func (c *Client) ListLavaflowRuns(ctx context.Context, params *ListLavaflowRunsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListLavaflowRunsRequest(c.Server, params) if err != nil { return nil, err } @@ -22867,8 +23880,8 @@ func (c *Client) DeleteLavaflowSkill(ctx context.Context, skillId LavaflowSkillI return c.Client.Do(req) } -func (c *Client) GetLavaflowSkill(ctx context.Context, skillId LavaflowSkillId, params *GetLavaflowSkillParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetLavaflowSkillRequest(c.Server, skillId, params) +func (c *Client) CreateLavaflowRunWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateLavaflowRunRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -22879,8 +23892,8 @@ func (c *Client) GetLavaflowSkill(ctx context.Context, skillId LavaflowSkillId, return c.Client.Do(req) } -func (c *Client) UpdateLavaflowSkillWithBody(ctx context.Context, skillId LavaflowSkillId, params *UpdateLavaflowSkillParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewUpdateLavaflowSkillRequestWithBody(c.Server, skillId, params, contentType, body) +func (c *Client) CreateLavaflowRun(ctx context.Context, body CreateLavaflowRunJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateLavaflowRunRequest(c.Server, body) if err != nil { return nil, err } @@ -22891,8 +23904,8 @@ func (c *Client) UpdateLavaflowSkillWithBody(ctx context.Context, skillId Lavafl return c.Client.Do(req) } -func (c *Client) UpdateLavaflowSkill(ctx context.Context, skillId LavaflowSkillId, params *UpdateLavaflowSkillParams, body UpdateLavaflowSkillJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewUpdateLavaflowSkillRequest(c.Server, skillId, params, body) +func (c *Client) GetLavaflowRun(ctx context.Context, runId LavaflowRunId, params *GetLavaflowRunParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetLavaflowRunRequest(c.Server, runId, params) if err != nil { return nil, err } @@ -22903,8 +23916,8 @@ func (c *Client) UpdateLavaflowSkill(ctx context.Context, skillId LavaflowSkillI return c.Client.Do(req) } -func (c *Client) ListLavaflowSlackChannels(ctx context.Context, params *ListLavaflowSlackChannelsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListLavaflowSlackChannelsRequest(c.Server, params) +func (c *Client) ListLavaflowScans(ctx context.Context, params *ListLavaflowScansParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListLavaflowScansRequest(c.Server, params) if err != nil { return nil, err } @@ -22915,8 +23928,8 @@ func (c *Client) ListLavaflowSlackChannels(ctx context.Context, params *ListLava return c.Client.Do(req) } -func (c *Client) BindLavaflowSlackChannelWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewBindLavaflowSlackChannelRequestWithBody(c.Server, contentType, body) +func (c *Client) GetLavaflowSettings(ctx context.Context, params *GetLavaflowSettingsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetLavaflowSettingsRequest(c.Server, params) if err != nil { return nil, err } @@ -22927,8 +23940,8 @@ func (c *Client) BindLavaflowSlackChannelWithBody(ctx context.Context, contentTy return c.Client.Do(req) } -func (c *Client) BindLavaflowSlackChannel(ctx context.Context, body BindLavaflowSlackChannelJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewBindLavaflowSlackChannelRequest(c.Server, body) +func (c *Client) PatchLavaflowSettingsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPatchLavaflowSettingsRequestWithBody(c.Server, contentType, body) if err != nil { return nil, err } @@ -22939,8 +23952,8 @@ func (c *Client) BindLavaflowSlackChannel(ctx context.Context, body BindLavaflow return c.Client.Do(req) } -func (c *Client) UnbindLavaflowSlackChannel(ctx context.Context, bindingId openapi_types.UUID, params *UnbindLavaflowSlackChannelParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewUnbindLavaflowSlackChannelRequest(c.Server, bindingId, params) +func (c *Client) PatchLavaflowSettings(ctx context.Context, body PatchLavaflowSettingsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPatchLavaflowSettingsRequest(c.Server, body) if err != nil { return nil, err } @@ -25387,6 +26400,102 @@ func (c *Client) UpdateFunction(ctx context.Context, id ProjectId, functionId Fu return c.Client.Do(req) } +func (c *Client) ListFunctionCandidates(ctx context.Context, id ProjectId, functionId FunctionId, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListFunctionCandidatesRequest(c.Server, id, functionId) + 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) CreateFunctionCandidateWithBody(ctx context.Context, id ProjectId, functionId FunctionId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateFunctionCandidateRequestWithBody(c.Server, id, functionId, 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) DeleteFunctionCandidate(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewDeleteFunctionCandidateRequest(c.Server, id, functionId, candidateId) + 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) GetFunctionCandidate(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetFunctionCandidateRequest(c.Server, id, functionId, candidateId) + 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) ListFunctionCandidateDeployments(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListFunctionCandidateDeploymentsRequest(c.Server, id, functionId, candidateId) + 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) RedeployFunctionCandidateWithBody(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewRedeployFunctionCandidateRequestWithBody(c.Server, id, functionId, candidateId, 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) PromoteFunctionCandidateWithBody(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPromoteFunctionCandidateRequestWithBody(c.Server, id, functionId, candidateId, 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) PromoteFunctionCandidate(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, body PromoteFunctionCandidateJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPromoteFunctionCandidateRequest(c.Server, id, functionId, candidateId, 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) ListFunctionDeployments(ctx context.Context, id ProjectId, functionId FunctionId, params *ListFunctionDeploymentsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewListFunctionDeploymentsRequest(c.Server, id, functionId, params) if err != nil { @@ -25483,6 +26592,42 @@ func (c *Client) UpdateFunctionScheduler(ctx context.Context, id ProjectId, func return c.Client.Do(req) } +func (c *Client) GetFunctionServing(ctx context.Context, id ProjectId, functionId FunctionId, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetFunctionServingRequest(c.Server, id, functionId) + 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) RollbackFunctionServingWithBody(ctx context.Context, id ProjectId, functionId FunctionId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewRollbackFunctionServingRequestWithBody(c.Server, id, functionId, 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) RollbackFunctionServing(ctx context.Context, id ProjectId, functionId FunctionId, body RollbackFunctionServingJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewRollbackFunctionServingRequest(c.Server, id, functionId, 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) DisconnectProjectGit(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewDisconnectProjectGitRequest(c.Server, id) if err != nil { @@ -26755,6 +27900,30 @@ func (c *Client) DownloadPublicFile(ctx context.Context, projectId openapi_types return c.Client.Do(req) } +func (c *Client) PublishRealtimeMessageWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPublishRealtimeMessageRequestWithBody(c.Server, 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) PublishRealtimeMessage(ctx context.Context, body PublishRealtimeMessageJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPublishRealtimeMessageRequest(c.Server, 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) CreateSandboxFileArchiveWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewCreateSandboxFileArchiveRequestWithBody(c.Server, contentType, body) if err != nil { @@ -29361,8 +30530,8 @@ func NewListCapabilitiesRequest(server string) (*http.Request, error) { return req, nil } -// NewListPostgresVersionsRequest generates requests for ListPostgresVersions -func NewListPostgresVersionsRequest(server string) (*http.Request, error) { +// NewListConnectorsRequest generates requests for ListConnectors +func NewListConnectorsRequest(server string) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -29370,7 +30539,7 @@ func NewListPostgresVersionsRequest(server string) (*http.Request, error) { return nil, err } - operationPath := fmt.Sprintf("/databases/postgres-versions") + operationPath := fmt.Sprintf("/connectors") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -29388,8 +30557,19 @@ func NewListPostgresVersionsRequest(server string) (*http.Request, error) { return req, nil } -// NewListDatabaseRegionsRequest generates requests for ListDatabaseRegions -func NewListDatabaseRegionsRequest(server string) (*http.Request, error) { +// NewCreateConnectorRequest calls the generic CreateConnector builder with application/json body +func NewCreateConnectorRequest(server string, body CreateConnectorJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreateConnectorRequestWithBody(server, "application/json", bodyReader) +} + +// NewCreateConnectorRequestWithBody generates requests for CreateConnector with any type of body +func NewCreateConnectorRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -29397,7 +30577,7 @@ func NewListDatabaseRegionsRequest(server string) (*http.Request, error) { return nil, err } - operationPath := fmt.Sprintf("/databases/regions") + operationPath := fmt.Sprintf("/connectors") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -29407,39 +30587,23 @@ func NewListDatabaseRegionsRequest(server string) (*http.Request, error) { 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 } - return req, nil -} + req.Header.Add("Content-Type", contentType) -// NewQueryDatabaseBranchDeleteRequest calls the generic QueryDatabaseBranchDelete builder with application/json body -func NewQueryDatabaseBranchDeleteRequest(server string, databaseName DatabaseName, branchName BranchName, body QueryDatabaseBranchDeleteJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewQueryDatabaseBranchDeleteRequestWithBody(server, databaseName, branchName, "application/json", bodyReader) + return req, nil } -// NewQueryDatabaseBranchDeleteRequestWithBody generates requests for QueryDatabaseBranchDelete with any type of body -func NewQueryDatabaseBranchDeleteRequestWithBody(server string, databaseName DatabaseName, branchName BranchName, contentType string, body io.Reader) (*http.Request, error) { +// NewDeleteConnectorRequest generates requests for DeleteConnector +func NewDeleteConnectorRequest(server string, connectorId ConnectorId) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "databaseName", databaseName, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithOptions("simple", false, "branchName", branchName, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "connector_id", connectorId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) if err != nil { return nil, err } @@ -29449,7 +30613,7 @@ func NewQueryDatabaseBranchDeleteRequestWithBody(server string, databaseName Dat return nil, err } - operationPath := fmt.Sprintf("/databases/%s/branches/%s/query/delete", pathParam0, pathParam1) + operationPath := fmt.Sprintf("/connectors/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -29459,41 +30623,21 @@ func NewQueryDatabaseBranchDeleteRequestWithBody(server string, databaseName Dat return nil, err } - req, err := http.NewRequest(http.MethodPost, queryURL.String(), body) + req, err := http.NewRequest(http.MethodDelete, queryURL.String(), nil) if err != nil { return nil, err } - req.Header.Add("Content-Type", contentType) - return req, nil } -// NewQueryDatabaseBranchInsertRequest calls the generic QueryDatabaseBranchInsert builder with application/json body -func NewQueryDatabaseBranchInsertRequest(server string, databaseName DatabaseName, branchName BranchName, body QueryDatabaseBranchInsertJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewQueryDatabaseBranchInsertRequestWithBody(server, databaseName, branchName, "application/json", bodyReader) -} - -// NewQueryDatabaseBranchInsertRequestWithBody generates requests for QueryDatabaseBranchInsert with any type of body -func NewQueryDatabaseBranchInsertRequestWithBody(server string, databaseName DatabaseName, branchName BranchName, contentType string, body io.Reader) (*http.Request, error) { +// NewGetConnectorRequest generates requests for GetConnector +func NewGetConnectorRequest(server string, connectorId ConnectorId) (*http.Request, error) { var err error var pathParam0 string - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "databaseName", databaseName, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) - if err != nil { - return nil, err - } - - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithOptions("simple", false, "branchName", branchName, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "connector_id", connectorId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) if err != nil { return nil, err } @@ -29503,7 +30647,7 @@ func NewQueryDatabaseBranchInsertRequestWithBody(server string, databaseName Dat return nil, err } - operationPath := fmt.Sprintf("/databases/%s/branches/%s/query/insert", pathParam0, pathParam1) + operationPath := fmt.Sprintf("/connectors/%s", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -29513,40 +30657,51 @@ func NewQueryDatabaseBranchInsertRequestWithBody(server string, databaseName Dat return nil, err } - req, err := http.NewRequest(http.MethodPost, queryURL.String(), body) + req, err := http.NewRequest(http.MethodGet, queryURL.String(), nil) if err != nil { return nil, err } - req.Header.Add("Content-Type", contentType) - return req, nil } -// NewQueryDatabaseBranchPingRequest generates requests for QueryDatabaseBranchPing -func NewQueryDatabaseBranchPingRequest(server string, databaseName DatabaseName, branchName BranchName) (*http.Request, error) { +// NewListPostgresVersionsRequest generates requests for ListPostgresVersions +func NewListPostgresVersionsRequest(server string) (*http.Request, error) { var err error - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "databaseName", databaseName, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + serverURL, err := url.Parse(server) if err != nil { return nil, err } - var pathParam1 string + operationPath := fmt.Sprintf("/databases/postgres-versions") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } - pathParam1, err = runtime.StyleParamWithOptions("simple", false, "branchName", branchName, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + 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 +} + +// NewListDatabaseRegionsRequest generates requests for ListDatabaseRegions +func NewListDatabaseRegionsRequest(server string) (*http.Request, error) { + var err error + serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/databases/%s/branches/%s/query/ping", pathParam0, pathParam1) + operationPath := fmt.Sprintf("/databases/regions") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -29556,7 +30711,7 @@ func NewQueryDatabaseBranchPingRequest(server string, databaseName DatabaseName, return nil, err } - req, err := http.NewRequest(http.MethodPost, queryURL.String(), nil) + req, err := http.NewRequest(http.MethodGet, queryURL.String(), nil) if err != nil { return nil, err } @@ -29564,19 +30719,168 @@ func NewQueryDatabaseBranchPingRequest(server string, databaseName DatabaseName, return req, nil } -// NewQueryDatabaseBranchSelectRequest calls the generic QueryDatabaseBranchSelect builder with application/json body -func NewQueryDatabaseBranchSelectRequest(server string, databaseName DatabaseName, branchName BranchName, body QueryDatabaseBranchSelectJSONRequestBody) (*http.Request, error) { +// NewQueryDatabaseBranchDeleteRequest calls the generic QueryDatabaseBranchDelete builder with application/json body +func NewQueryDatabaseBranchDeleteRequest(server string, databaseName DatabaseName, branchName BranchName, body QueryDatabaseBranchDeleteJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewQueryDatabaseBranchSelectRequestWithBody(server, databaseName, branchName, "application/json", bodyReader) + return NewQueryDatabaseBranchDeleteRequestWithBody(server, databaseName, branchName, "application/json", bodyReader) } -// NewQueryDatabaseBranchSelectRequestWithBody generates requests for QueryDatabaseBranchSelect with any type of body -func NewQueryDatabaseBranchSelectRequestWithBody(server string, databaseName DatabaseName, branchName BranchName, contentType string, body io.Reader) (*http.Request, error) { +// NewQueryDatabaseBranchDeleteRequestWithBody generates requests for QueryDatabaseBranchDelete with any type of body +func NewQueryDatabaseBranchDeleteRequestWithBody(server string, databaseName DatabaseName, branchName BranchName, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "databaseName", databaseName, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithOptions("simple", false, "branchName", branchName, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/databases/%s/branches/%s/query/delete", 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(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewQueryDatabaseBranchInsertRequest calls the generic QueryDatabaseBranchInsert builder with application/json body +func NewQueryDatabaseBranchInsertRequest(server string, databaseName DatabaseName, branchName BranchName, body QueryDatabaseBranchInsertJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewQueryDatabaseBranchInsertRequestWithBody(server, databaseName, branchName, "application/json", bodyReader) +} + +// NewQueryDatabaseBranchInsertRequestWithBody generates requests for QueryDatabaseBranchInsert with any type of body +func NewQueryDatabaseBranchInsertRequestWithBody(server string, databaseName DatabaseName, branchName BranchName, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "databaseName", databaseName, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithOptions("simple", false, "branchName", branchName, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/databases/%s/branches/%s/query/insert", 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(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewQueryDatabaseBranchPingRequest generates requests for QueryDatabaseBranchPing +func NewQueryDatabaseBranchPingRequest(server string, databaseName DatabaseName, branchName BranchName) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "databaseName", databaseName, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithOptions("simple", false, "branchName", branchName, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: ""}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/databases/%s/branches/%s/query/ping", 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 +} + +// NewQueryDatabaseBranchSelectRequest calls the generic QueryDatabaseBranchSelect builder with application/json body +func NewQueryDatabaseBranchSelectRequest(server string, databaseName DatabaseName, branchName BranchName, body QueryDatabaseBranchSelectJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewQueryDatabaseBranchSelectRequestWithBody(server, databaseName, branchName, "application/json", bodyReader) +} + +// NewQueryDatabaseBranchSelectRequestWithBody generates requests for QueryDatabaseBranchSelect with any type of body +func NewQueryDatabaseBranchSelectRequestWithBody(server string, databaseName DatabaseName, branchName BranchName, contentType string, body io.Reader) (*http.Request, error) { var err error var pathParam0 string @@ -31527,8 +32831,19 @@ func NewListImportSourcesRequest(server string, provider ImportProvider, params return req, nil } -// NewListLavaflowGlobalSkillsRequest generates requests for ListLavaflowGlobalSkills -func NewListLavaflowGlobalSkillsRequest(server string, params *ListLavaflowGlobalSkillsParams) (*http.Request, error) { +// NewCreateIssueRequest calls the generic CreateIssue builder with application/json body +func NewCreateIssueRequest(server string, body CreateIssueJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreateIssueRequestWithBody(server, "application/json", bodyReader) +} + +// NewCreateIssueRequestWithBody generates requests for CreateIssue with any type of body +func NewCreateIssueRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error serverURL, err := url.Parse(server) @@ -31536,7 +32851,36 @@ func NewListLavaflowGlobalSkillsRequest(server string, params *ListLavaflowGloba return nil, err } - operationPath := fmt.Sprintf("/lavaflow/global-skills") + operationPath := fmt.Sprintf("/issues") + 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 +} + +// NewListLavaflowConnectorBindingsRequest generates requests for ListLavaflowConnectorBindings +func NewListLavaflowConnectorBindingsRequest(server string, params *ListLavaflowConnectorBindingsParams) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/lavaflow/connector-bindings") if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -31577,6 +32921,107 @@ func NewListLavaflowGlobalSkillsRequest(server string, params *ListLavaflowGloba return req, nil } +// NewCreateLavaflowConnectorBindingRequest calls the generic CreateLavaflowConnectorBinding builder with application/json body +func NewCreateLavaflowConnectorBindingRequest(server string, body CreateLavaflowConnectorBindingJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreateLavaflowConnectorBindingRequestWithBody(server, "application/json", bodyReader) +} + +// NewCreateLavaflowConnectorBindingRequestWithBody generates requests for CreateLavaflowConnectorBinding with any type of body +func NewCreateLavaflowConnectorBindingRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/lavaflow/connector-bindings") + 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 +} + +// NewDeleteLavaflowConnectorBindingRequest generates requests for DeleteLavaflowConnectorBinding +func NewDeleteLavaflowConnectorBindingRequest(server string, bindingId openapi_types.UUID, params *DeleteLavaflowConnectorBindingParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "binding_id", bindingId, 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("/lavaflow/connector-bindings/%s", 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.ProjectId != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "project_id", *params.ProjectId, 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 encoded := queryValues.Encode(); encoded != "" { + rawQueryFragments = append(rawQueryFragments, encoded) + } + queryURL.RawQuery = strings.Join(rawQueryFragments, "&") + } + + req, err := http.NewRequest(http.MethodDelete, queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + // NewCreateLavaflowHeldFixOpenRequest calls the generic CreateLavaflowHeldFixOpen builder with application/json body func NewCreateLavaflowHeldFixOpenRequest(server string, body CreateLavaflowHeldFixOpenJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader @@ -32138,473 +33583,6 @@ func NewPatchLavaflowSettingsRequestWithBody(server string, contentType string, return req, nil } -// NewListLavaflowSkillVersionsRequest generates requests for ListLavaflowSkillVersions -func NewListLavaflowSkillVersionsRequest(server string, params *ListLavaflowSkillVersionsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/lavaflow/skill-versions") - 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 queryFrag, err := runtime.StyleParamWithOptions("form", true, "project_id", params.ProjectId, 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 queryFrag, err := runtime.StyleParamWithOptions("form", true, "skill_id", params.SkillId, 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 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 -} - -// NewListLavaflowSkillsRequest generates requests for ListLavaflowSkills -func NewListLavaflowSkillsRequest(server string, params *ListLavaflowSkillsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/lavaflow/skills") - 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 queryFrag, err := runtime.StyleParamWithOptions("form", true, "project_id", params.ProjectId, 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.Status != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "status", *params.Status, 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 -} - -// NewDeleteLavaflowSkillRequest generates requests for DeleteLavaflowSkill -func NewDeleteLavaflowSkillRequest(server string, skillId LavaflowSkillId, params *DeleteLavaflowSkillParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "skill_id", skillId, 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("/lavaflow/skills/%s", 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.ProjectId != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "project_id", *params.ProjectId, 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 encoded := queryValues.Encode(); encoded != "" { - rawQueryFragments = append(rawQueryFragments, encoded) - } - queryURL.RawQuery = strings.Join(rawQueryFragments, "&") - } - - req, err := http.NewRequest(http.MethodDelete, queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - -// NewGetLavaflowSkillRequest generates requests for GetLavaflowSkill -func NewGetLavaflowSkillRequest(server string, skillId LavaflowSkillId, params *GetLavaflowSkillParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "skill_id", skillId, 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("/lavaflow/skills/%s", 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.ProjectId != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "project_id", *params.ProjectId, 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 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 -} - -// NewUpdateLavaflowSkillRequest calls the generic UpdateLavaflowSkill builder with application/json body -func NewUpdateLavaflowSkillRequest(server string, skillId LavaflowSkillId, params *UpdateLavaflowSkillParams, body UpdateLavaflowSkillJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewUpdateLavaflowSkillRequestWithBody(server, skillId, params, "application/json", bodyReader) -} - -// NewUpdateLavaflowSkillRequestWithBody generates requests for UpdateLavaflowSkill with any type of body -func NewUpdateLavaflowSkillRequestWithBody(server string, skillId LavaflowSkillId, params *UpdateLavaflowSkillParams, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "skill_id", skillId, 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("/lavaflow/skills/%s", 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.ProjectId != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "project_id", *params.ProjectId, 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 encoded := queryValues.Encode(); encoded != "" { - rawQueryFragments = append(rawQueryFragments, encoded) - } - queryURL.RawQuery = strings.Join(rawQueryFragments, "&") - } - - req, err := http.NewRequest(http.MethodPatch, queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil -} - -// NewListLavaflowSlackChannelsRequest generates requests for ListLavaflowSlackChannels -func NewListLavaflowSlackChannelsRequest(server string, params *ListLavaflowSlackChannelsParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/lavaflow/slack-channels") - 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 queryFrag, err := runtime.StyleParamWithOptions("form", true, "project_id", params.ProjectId, 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 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 -} - -// NewBindLavaflowSlackChannelRequest calls the generic BindLavaflowSlackChannel builder with application/json body -func NewBindLavaflowSlackChannelRequest(server string, body BindLavaflowSlackChannelJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewBindLavaflowSlackChannelRequestWithBody(server, "application/json", bodyReader) -} - -// NewBindLavaflowSlackChannelRequestWithBody generates requests for BindLavaflowSlackChannel with any type of body -func NewBindLavaflowSlackChannelRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/lavaflow/slack-channels") - 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 -} - -// NewUnbindLavaflowSlackChannelRequest generates requests for UnbindLavaflowSlackChannel -func NewUnbindLavaflowSlackChannelRequest(server string, bindingId openapi_types.UUID, params *UnbindLavaflowSlackChannelParams) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "binding_id", bindingId, 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("/lavaflow/slack-channels/%s", 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.ProjectId != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "project_id", *params.ProjectId, 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 encoded := queryValues.Encode(); encoded != "" { - rawQueryFragments = append(rawQueryFragments, encoded) - } - queryURL.RawQuery = strings.Join(rawQueryFragments, "&") - } - - req, err := http.NewRequest(http.MethodDelete, queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - // NewGetLavaflowStatsRequest generates requests for GetLavaflowStats func NewGetLavaflowStatsRequest(server string, params *GetLavaflowStatsParams) (*http.Request, error) { var err error @@ -33539,6 +34517,18 @@ func NewListProjectAccessTokensRequest(server string, id ProjectId, params *List } + if params.IncludeDelegated != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "include_delegated", *params.IncludeDelegated, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "boolean", 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) } @@ -41368,7 +42358,573 @@ func NewGetFunctionRequest(server string, id ProjectId, functionId FunctionId) ( return nil, err } - operationPath := fmt.Sprintf("/projects/%s/functions/%s", pathParam0, pathParam1) + operationPath := fmt.Sprintf("/projects/%s/functions/%s", pathParam0, pathParam1) + 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 +} + +// NewUpdateFunctionRequest calls the generic UpdateFunction builder with application/json body +func NewUpdateFunctionRequest(server string, id ProjectId, functionId FunctionId, body UpdateFunctionJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewUpdateFunctionRequestWithBody(server, id, functionId, "application/json", bodyReader) +} + +// NewUpdateFunctionRequestWithBody generates requests for UpdateFunction with any type of body +func NewUpdateFunctionRequestWithBody(server string, id ProjectId, functionId FunctionId, 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 + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/functions/%s", pathParam0, pathParam1) + 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 +} + +// NewListFunctionCandidatesRequest generates requests for ListFunctionCandidates +func NewListFunctionCandidatesRequest(server string, id ProjectId, functionId FunctionId) (*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 + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/functions/%s/candidates", pathParam0, pathParam1) + 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 +} + +// NewCreateFunctionCandidateRequestWithBody generates requests for CreateFunctionCandidate with any type of body +func NewCreateFunctionCandidateRequestWithBody(server string, id ProjectId, functionId FunctionId, 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 + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/functions/%s/candidates", 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(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewDeleteFunctionCandidateRequest generates requests for DeleteFunctionCandidate +func NewDeleteFunctionCandidateRequest(server string, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId) (*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, "candidateId", candidateId, 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/candidates/%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.MethodDelete, queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetFunctionCandidateRequest generates requests for GetFunctionCandidate +func NewGetFunctionCandidateRequest(server string, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId) (*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, "candidateId", candidateId, 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/candidates/%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 +} + +// NewListFunctionCandidateDeploymentsRequest generates requests for ListFunctionCandidateDeployments +func NewListFunctionCandidateDeploymentsRequest(server string, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId) (*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, "candidateId", candidateId, 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/candidates/%s/deployments", 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 +} + +// NewRedeployFunctionCandidateRequestWithBody generates requests for RedeployFunctionCandidate with any type of body +func NewRedeployFunctionCandidateRequestWithBody(server string, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, 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, "candidateId", candidateId, 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/candidates/%s/deployments", pathParam0, pathParam1, pathParam2) + 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 +} + +// NewPromoteFunctionCandidateRequest calls the generic PromoteFunctionCandidate builder with application/json body +func NewPromoteFunctionCandidateRequest(server string, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, body PromoteFunctionCandidateJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewPromoteFunctionCandidateRequestWithBody(server, id, functionId, candidateId, "application/json", bodyReader) +} + +// NewPromoteFunctionCandidateRequestWithBody generates requests for PromoteFunctionCandidate with any type of body +func NewPromoteFunctionCandidateRequestWithBody(server string, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, 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, "candidateId", candidateId, 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/candidates/%s/promote", pathParam0, pathParam1, pathParam2) + 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 +} + +// NewListFunctionDeploymentsRequest generates requests for ListFunctionDeployments +func NewListFunctionDeploymentsRequest(server string, id ProjectId, functionId FunctionId, params *ListFunctionDeploymentsParams) (*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 + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/functions/%s/deployments", 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.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 +} + +// NewListFunctionSchedulersRequest generates requests for ListFunctionSchedulers +func NewListFunctionSchedulersRequest(server string, id ProjectId, functionId FunctionId) (*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 + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/functions/%s/schedulers", pathParam0, pathParam1) + 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 +} + +// NewCreateFunctionSchedulerRequest calls the generic CreateFunctionScheduler builder with application/json body +func NewCreateFunctionSchedulerRequest(server string, id ProjectId, functionId FunctionId, body CreateFunctionSchedulerJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreateFunctionSchedulerRequestWithBody(server, id, functionId, "application/json", bodyReader) +} + +// NewCreateFunctionSchedulerRequestWithBody generates requests for CreateFunctionScheduler with any type of body +func NewCreateFunctionSchedulerRequestWithBody(server string, id ProjectId, functionId FunctionId, 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 + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/functions/%s/schedulers", pathParam0, pathParam1) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -41378,27 +42934,18 @@ func NewGetFunctionRequest(server string, id ProjectId, functionId FunctionId) ( 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 } - return req, nil -} + req.Header.Add("Content-Type", contentType) -// NewUpdateFunctionRequest calls the generic UpdateFunction builder with application/json body -func NewUpdateFunctionRequest(server string, id ProjectId, functionId FunctionId, body UpdateFunctionJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewUpdateFunctionRequestWithBody(server, id, functionId, "application/json", bodyReader) + return req, nil } -// NewUpdateFunctionRequestWithBody generates requests for UpdateFunction with any type of body -func NewUpdateFunctionRequestWithBody(server string, id ProjectId, functionId FunctionId, contentType string, body io.Reader) (*http.Request, error) { +// NewDeleteFunctionSchedulerRequest generates requests for DeleteFunctionScheduler +func NewDeleteFunctionSchedulerRequest(server string, id ProjectId, functionId FunctionId, schedulerId SchedulerId) (*http.Request, error) { var err error var pathParam0 string @@ -41415,45 +42962,9 @@ func NewUpdateFunctionRequestWithBody(server string, id ProjectId, functionId Fu return nil, err } - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/projects/%s/functions/%s", pathParam0, pathParam1) - 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 -} - -// NewListFunctionDeploymentsRequest generates requests for ListFunctionDeployments -func NewListFunctionDeploymentsRequest(server string, id ProjectId, functionId FunctionId, params *ListFunctionDeploymentsParams) (*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 + var pathParam2 string - pathParam1, err = runtime.StyleParamWithOptions("simple", false, "functionId", functionId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + pathParam2, err = runtime.StyleParamWithOptions("simple", false, "schedulerId", schedulerId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) if err != nil { return nil, err } @@ -41463,7 +42974,7 @@ func NewListFunctionDeploymentsRequest(server string, id ProjectId, functionId F return nil, err } - operationPath := fmt.Sprintf("/projects/%s/functions/%s/deployments", pathParam0, pathParam1) + operationPath := fmt.Sprintf("/projects/%s/functions/%s/schedulers/%s", pathParam0, pathParam1, pathParam2) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -41473,46 +42984,7 @@ func NewListFunctionDeploymentsRequest(server string, id ProjectId, functionId F 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) + req, err := http.NewRequest(http.MethodDelete, queryURL.String(), nil) if err != nil { return nil, err } @@ -41520,8 +42992,8 @@ func NewListFunctionDeploymentsRequest(server string, id ProjectId, functionId F return req, nil } -// NewListFunctionSchedulersRequest generates requests for ListFunctionSchedulers -func NewListFunctionSchedulersRequest(server string, id ProjectId, functionId FunctionId) (*http.Request, error) { +// NewGetFunctionSchedulerRequest generates requests for GetFunctionScheduler +func NewGetFunctionSchedulerRequest(server string, id ProjectId, functionId FunctionId, schedulerId SchedulerId) (*http.Request, error) { var err error var pathParam0 string @@ -41538,12 +43010,19 @@ func NewListFunctionSchedulersRequest(server string, id ProjectId, functionId Fu 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", pathParam0, pathParam1) + operationPath := fmt.Sprintf("/projects/%s/functions/%s/schedulers/%s", pathParam0, pathParam1, pathParam2) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -41561,62 +43040,19 @@ func NewListFunctionSchedulersRequest(server string, id ProjectId, functionId Fu return req, nil } -// NewCreateFunctionSchedulerRequest calls the generic CreateFunctionScheduler builder with application/json body -func NewCreateFunctionSchedulerRequest(server string, id ProjectId, functionId FunctionId, body CreateFunctionSchedulerJSONRequestBody) (*http.Request, error) { +// 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 NewCreateFunctionSchedulerRequestWithBody(server, id, functionId, "application/json", bodyReader) -} - -// NewCreateFunctionSchedulerRequestWithBody generates requests for CreateFunctionScheduler with any type of body -func NewCreateFunctionSchedulerRequestWithBody(server string, id ProjectId, functionId FunctionId, 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 - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/projects/%s/functions/%s/schedulers", 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(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil + return NewUpdateFunctionSchedulerRequestWithBody(server, id, functionId, schedulerId, "application/json", bodyReader) } -// NewDeleteFunctionSchedulerRequest generates requests for DeleteFunctionScheduler -func NewDeleteFunctionSchedulerRequest(server string, id ProjectId, functionId FunctionId, schedulerId SchedulerId) (*http.Request, error) { +// 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 @@ -41655,16 +43091,18 @@ func NewDeleteFunctionSchedulerRequest(server string, id ProjectId, functionId F return nil, err } - req, err := http.NewRequest(http.MethodDelete, queryURL.String(), nil) + req, err := http.NewRequest(http.MethodPatch, queryURL.String(), body) if err != nil { return nil, err } + req.Header.Add("Content-Type", contentType) + return req, nil } -// NewGetFunctionSchedulerRequest generates requests for GetFunctionScheduler -func NewGetFunctionSchedulerRequest(server string, id ProjectId, functionId FunctionId, schedulerId SchedulerId) (*http.Request, error) { +// NewGetFunctionServingRequest generates requests for GetFunctionServing +func NewGetFunctionServingRequest(server string, id ProjectId, functionId FunctionId) (*http.Request, error) { var err error var pathParam0 string @@ -41681,19 +43119,12 @@ func NewGetFunctionSchedulerRequest(server string, id ProjectId, functionId Func 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/functions/%s/serving", pathParam0, pathParam1) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -41711,19 +43142,19 @@ func NewGetFunctionSchedulerRequest(server string, id ProjectId, functionId Func 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) { +// NewRollbackFunctionServingRequest calls the generic RollbackFunctionServing builder with application/json body +func NewRollbackFunctionServingRequest(server string, id ProjectId, functionId FunctionId, body RollbackFunctionServingJSONRequestBody) (*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 NewRollbackFunctionServingRequestWithBody(server, id, functionId, "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) { +// NewRollbackFunctionServingRequestWithBody generates requests for RollbackFunctionServing with any type of body +func NewRollbackFunctionServingRequestWithBody(server string, id ProjectId, functionId FunctionId, contentType string, body io.Reader) (*http.Request, error) { var err error var pathParam0 string @@ -41740,19 +43171,12 @@ func NewUpdateFunctionSchedulerRequestWithBody(server string, id ProjectId, func 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/functions/%s/serving/rollback", pathParam0, pathParam1) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -41762,7 +43186,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 } @@ -45982,6 +47406,46 @@ func NewDownloadPublicFileRequest(server string, projectId openapi_types.UUID, b return req, nil } +// NewPublishRealtimeMessageRequest calls the generic PublishRealtimeMessage builder with application/json body +func NewPublishRealtimeMessageRequest(server string, body PublishRealtimeMessageJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewPublishRealtimeMessageRequestWithBody(server, "application/json", bodyReader) +} + +// NewPublishRealtimeMessageRequestWithBody generates requests for PublishRealtimeMessage with any type of body +func NewPublishRealtimeMessageRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/realtime/v1/publish") + 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 +} + // NewCreateSandboxFileArchiveRequestWithBody generates requests for CreateSandboxFileArchive with any type of body func NewCreateSandboxFileArchiveRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { var err error @@ -48864,6 +50328,20 @@ type ClientWithResponsesInterface interface { // ListCapabilitiesWithResponse request ListCapabilitiesWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*ListCapabilitiesClientResponse, error) + // ListConnectorsWithResponse request + ListConnectorsWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*ListConnectorsClientResponse, error) + + // CreateConnectorWithBodyWithResponse request with any body + CreateConnectorWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateConnectorClientResponse, error) + + CreateConnectorWithResponse(ctx context.Context, body CreateConnectorJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateConnectorClientResponse, error) + + // DeleteConnectorWithResponse request + DeleteConnectorWithResponse(ctx context.Context, connectorId ConnectorId, reqEditors ...RequestEditorFn) (*DeleteConnectorClientResponse, error) + + // GetConnectorWithResponse request + GetConnectorWithResponse(ctx context.Context, connectorId ConnectorId, reqEditors ...RequestEditorFn) (*GetConnectorClientResponse, error) + // ListPostgresVersionsWithResponse request ListPostgresVersionsWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*ListPostgresVersionsClientResponse, error) @@ -49028,8 +50506,21 @@ type ClientWithResponsesInterface interface { // ListImportSourcesWithResponse request ListImportSourcesWithResponse(ctx context.Context, provider ImportProvider, params *ListImportSourcesParams, reqEditors ...RequestEditorFn) (*ListImportSourcesClientResponse, error) - // ListLavaflowGlobalSkillsWithResponse request - ListLavaflowGlobalSkillsWithResponse(ctx context.Context, params *ListLavaflowGlobalSkillsParams, reqEditors ...RequestEditorFn) (*ListLavaflowGlobalSkillsClientResponse, error) + // CreateIssueWithBodyWithResponse request with any body + CreateIssueWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateIssueClientResponse, error) + + CreateIssueWithResponse(ctx context.Context, body CreateIssueJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateIssueClientResponse, error) + + // ListLavaflowConnectorBindingsWithResponse request + ListLavaflowConnectorBindingsWithResponse(ctx context.Context, params *ListLavaflowConnectorBindingsParams, reqEditors ...RequestEditorFn) (*ListLavaflowConnectorBindingsClientResponse, error) + + // CreateLavaflowConnectorBindingWithBodyWithResponse request with any body + CreateLavaflowConnectorBindingWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateLavaflowConnectorBindingClientResponse, error) + + CreateLavaflowConnectorBindingWithResponse(ctx context.Context, body CreateLavaflowConnectorBindingJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateLavaflowConnectorBindingClientResponse, error) + + // DeleteLavaflowConnectorBindingWithResponse request + DeleteLavaflowConnectorBindingWithResponse(ctx context.Context, bindingId openapi_types.UUID, params *DeleteLavaflowConnectorBindingParams, reqEditors ...RequestEditorFn) (*DeleteLavaflowConnectorBindingClientResponse, error) // CreateLavaflowHeldFixOpenWithBodyWithResponse request with any body CreateLavaflowHeldFixOpenWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateLavaflowHeldFixOpenClientResponse, error) @@ -49061,34 +50552,6 @@ type ClientWithResponsesInterface interface { PatchLavaflowSettingsWithResponse(ctx context.Context, body PatchLavaflowSettingsJSONRequestBody, reqEditors ...RequestEditorFn) (*PatchLavaflowSettingsClientResponse, error) - // ListLavaflowSkillVersionsWithResponse request - ListLavaflowSkillVersionsWithResponse(ctx context.Context, params *ListLavaflowSkillVersionsParams, reqEditors ...RequestEditorFn) (*ListLavaflowSkillVersionsClientResponse, error) - - // ListLavaflowSkillsWithResponse request - ListLavaflowSkillsWithResponse(ctx context.Context, params *ListLavaflowSkillsParams, reqEditors ...RequestEditorFn) (*ListLavaflowSkillsClientResponse, error) - - // DeleteLavaflowSkillWithResponse request - DeleteLavaflowSkillWithResponse(ctx context.Context, skillId LavaflowSkillId, params *DeleteLavaflowSkillParams, reqEditors ...RequestEditorFn) (*DeleteLavaflowSkillClientResponse, error) - - // GetLavaflowSkillWithResponse request - GetLavaflowSkillWithResponse(ctx context.Context, skillId LavaflowSkillId, params *GetLavaflowSkillParams, reqEditors ...RequestEditorFn) (*GetLavaflowSkillClientResponse, error) - - // UpdateLavaflowSkillWithBodyWithResponse request with any body - UpdateLavaflowSkillWithBodyWithResponse(ctx context.Context, skillId LavaflowSkillId, params *UpdateLavaflowSkillParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateLavaflowSkillClientResponse, error) - - UpdateLavaflowSkillWithResponse(ctx context.Context, skillId LavaflowSkillId, params *UpdateLavaflowSkillParams, body UpdateLavaflowSkillJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateLavaflowSkillClientResponse, error) - - // ListLavaflowSlackChannelsWithResponse request - ListLavaflowSlackChannelsWithResponse(ctx context.Context, params *ListLavaflowSlackChannelsParams, reqEditors ...RequestEditorFn) (*ListLavaflowSlackChannelsClientResponse, error) - - // BindLavaflowSlackChannelWithBodyWithResponse request with any body - BindLavaflowSlackChannelWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*BindLavaflowSlackChannelClientResponse, error) - - BindLavaflowSlackChannelWithResponse(ctx context.Context, body BindLavaflowSlackChannelJSONRequestBody, reqEditors ...RequestEditorFn) (*BindLavaflowSlackChannelClientResponse, error) - - // UnbindLavaflowSlackChannelWithResponse request - UnbindLavaflowSlackChannelWithResponse(ctx context.Context, bindingId openapi_types.UUID, params *UnbindLavaflowSlackChannelParams, reqEditors ...RequestEditorFn) (*UnbindLavaflowSlackChannelClientResponse, error) - // GetLavaflowStatsWithResponse request GetLavaflowStatsWithResponse(ctx context.Context, params *GetLavaflowStatsParams, reqEditors ...RequestEditorFn) (*GetLavaflowStatsClientResponse, error) @@ -49652,6 +51115,29 @@ type ClientWithResponsesInterface interface { UpdateFunctionWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, body UpdateFunctionJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateFunctionClientResponse, error) + // ListFunctionCandidatesWithResponse request + ListFunctionCandidatesWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, reqEditors ...RequestEditorFn) (*ListFunctionCandidatesClientResponse, error) + + // CreateFunctionCandidateWithBodyWithResponse request with any body + CreateFunctionCandidateWithBodyWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateFunctionCandidateClientResponse, error) + + // DeleteFunctionCandidateWithResponse request + DeleteFunctionCandidateWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, reqEditors ...RequestEditorFn) (*DeleteFunctionCandidateClientResponse, error) + + // GetFunctionCandidateWithResponse request + GetFunctionCandidateWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, reqEditors ...RequestEditorFn) (*GetFunctionCandidateClientResponse, error) + + // ListFunctionCandidateDeploymentsWithResponse request + ListFunctionCandidateDeploymentsWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, reqEditors ...RequestEditorFn) (*ListFunctionCandidateDeploymentsClientResponse, error) + + // RedeployFunctionCandidateWithBodyWithResponse request with any body + RedeployFunctionCandidateWithBodyWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*RedeployFunctionCandidateClientResponse, error) + + // PromoteFunctionCandidateWithBodyWithResponse request with any body + PromoteFunctionCandidateWithBodyWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PromoteFunctionCandidateClientResponse, error) + + PromoteFunctionCandidateWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, body PromoteFunctionCandidateJSONRequestBody, reqEditors ...RequestEditorFn) (*PromoteFunctionCandidateClientResponse, error) + // ListFunctionDeploymentsWithResponse request ListFunctionDeploymentsWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, params *ListFunctionDeploymentsParams, reqEditors ...RequestEditorFn) (*ListFunctionDeploymentsClientResponse, error) @@ -49674,6 +51160,14 @@ type ClientWithResponsesInterface interface { UpdateFunctionSchedulerWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, schedulerId SchedulerId, body UpdateFunctionSchedulerJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateFunctionSchedulerClientResponse, error) + // GetFunctionServingWithResponse request + GetFunctionServingWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, reqEditors ...RequestEditorFn) (*GetFunctionServingClientResponse, error) + + // RollbackFunctionServingWithBodyWithResponse request with any body + RollbackFunctionServingWithBodyWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*RollbackFunctionServingClientResponse, error) + + RollbackFunctionServingWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, body RollbackFunctionServingJSONRequestBody, reqEditors ...RequestEditorFn) (*RollbackFunctionServingClientResponse, error) + // DisconnectProjectGitWithResponse request DisconnectProjectGitWithResponse(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*DisconnectProjectGitClientResponse, error) @@ -49965,6 +51459,11 @@ type ClientWithResponsesInterface interface { // DownloadPublicFileWithResponse request DownloadPublicFileWithResponse(ctx context.Context, projectId openapi_types.UUID, bucketName BucketName, path string, reqEditors ...RequestEditorFn) (*DownloadPublicFileClientResponse, error) + // PublishRealtimeMessageWithBodyWithResponse request with any body + PublishRealtimeMessageWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PublishRealtimeMessageClientResponse, error) + + PublishRealtimeMessageWithResponse(ctx context.Context, body PublishRealtimeMessageJSONRequestBody, reqEditors ...RequestEditorFn) (*PublishRealtimeMessageClientResponse, error) + // CreateSandboxFileArchiveWithBodyWithResponse request with any body CreateSandboxFileArchiveWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateSandboxFileArchiveClientResponse, error) @@ -51407,6 +52906,140 @@ func (r ListCapabilitiesClientResponse) ContentType() string { return "" } +type ListConnectorsClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *ConnectorsResponse + JSON401 *Error +} + +// Status returns HTTPResponse.Status +func (r ListConnectorsClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListConnectorsClientResponse) 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 ListConnectorsClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + +type CreateConnectorClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON201 *Connector + JSON400 *Error + JSON401 *Error + JSON404 *Error + JSON409 *Error + JSON422 *Error + JSON502 *Error +} + +// Status returns HTTPResponse.Status +func (r CreateConnectorClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CreateConnectorClientResponse) 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 CreateConnectorClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + +type DeleteConnectorClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON404 *Error + JSON502 *Error +} + +// Status returns HTTPResponse.Status +func (r DeleteConnectorClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteConnectorClientResponse) 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 DeleteConnectorClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + +type GetConnectorClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Connector + JSON400 *Error + JSON401 *Error + JSON404 *Error +} + +// Status returns HTTPResponse.Status +func (r GetConnectorClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetConnectorClientResponse) 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 GetConnectorClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + type ListPostgresVersionsClientResponse struct { Body []byte HTTPResponse *http.Response @@ -52831,18 +54464,19 @@ func (r ListImportSourcesClientResponse) ContentType() string { return "" } -type ListLavaflowGlobalSkillsClientResponse struct { +type CreateIssueClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *LavaflowGlobalSkillList + JSON201 *Issue JSON400 *Error - JSON401 *Error JSON403 *Error JSON404 *Error + JSON409 *Error + JSON413 *Error } // Status returns HTTPResponse.Status -func (r ListLavaflowGlobalSkillsClientResponse) Status() string { +func (r CreateIssueClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -52850,7 +54484,7 @@ func (r ListLavaflowGlobalSkillsClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListLavaflowGlobalSkillsClientResponse) StatusCode() int { +func (r CreateIssueClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -52858,29 +54492,24 @@ func (r ListLavaflowGlobalSkillsClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r ListLavaflowGlobalSkillsClientResponse) ContentType() string { +func (r CreateIssueClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } return "" } -type CreateLavaflowHeldFixOpenClientResponse struct { +type ListLavaflowConnectorBindingsClientResponse struct { Body []byte HTTPResponse *http.Response - JSON202 *LavaflowRun + JSON200 *LavaflowConnectorBindingsResponse JSON400 *Error JSON401 *Error - JSON403 *Error JSON404 *Error - JSON409 *Error - JSON413 *Error - JSON429 *Error - JSON503 *Error } // Status returns HTTPResponse.Status -func (r CreateLavaflowHeldFixOpenClientResponse) Status() string { +func (r ListLavaflowConnectorBindingsClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -52888,7 +54517,7 @@ func (r CreateLavaflowHeldFixOpenClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r CreateLavaflowHeldFixOpenClientResponse) StatusCode() int { +func (r ListLavaflowConnectorBindingsClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -52896,25 +54525,27 @@ func (r CreateLavaflowHeldFixOpenClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r CreateLavaflowHeldFixOpenClientResponse) ContentType() string { +func (r ListLavaflowConnectorBindingsClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } return "" } -type ListLavaflowResourcesClientResponse struct { +type CreateLavaflowConnectorBindingClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *LavaflowResourceList + JSON200 *LavaflowConnectorBinding + JSON201 *LavaflowConnectorBinding JSON400 *Error JSON401 *Error JSON403 *Error JSON404 *Error + JSON502 *Error } // Status returns HTTPResponse.Status -func (r ListLavaflowResourcesClientResponse) Status() string { +func (r CreateLavaflowConnectorBindingClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -52922,7 +54553,7 @@ func (r ListLavaflowResourcesClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListLavaflowResourcesClientResponse) StatusCode() int { +func (r CreateLavaflowConnectorBindingClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -52930,17 +54561,16 @@ func (r ListLavaflowResourcesClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r ListLavaflowResourcesClientResponse) ContentType() string { +func (r CreateLavaflowConnectorBindingClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } return "" } -type ListLavaflowRunsClientResponse struct { +type DeleteLavaflowConnectorBindingClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *PaginatedLavaflowRuns JSON400 *Error JSON401 *Error JSON403 *Error @@ -52948,7 +54578,7 @@ type ListLavaflowRunsClientResponse struct { } // Status returns HTTPResponse.Status -func (r ListLavaflowRunsClientResponse) Status() string { +func (r DeleteLavaflowConnectorBindingClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -52956,7 +54586,7 @@ func (r ListLavaflowRunsClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListLavaflowRunsClientResponse) StatusCode() int { +func (r DeleteLavaflowConnectorBindingClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -52964,14 +54594,14 @@ func (r ListLavaflowRunsClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r ListLavaflowRunsClientResponse) ContentType() string { +func (r DeleteLavaflowConnectorBindingClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } return "" } -type CreateLavaflowRunClientResponse struct { +type CreateLavaflowHeldFixOpenClientResponse struct { Body []byte HTTPResponse *http.Response JSON202 *LavaflowRun @@ -52982,44 +54612,11 @@ type CreateLavaflowRunClientResponse struct { JSON409 *Error JSON413 *Error JSON429 *Error + JSON503 *Error } // Status returns HTTPResponse.Status -func (r CreateLavaflowRunClientResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} - -// StatusCode returns HTTPResponse.StatusCode -func (r CreateLavaflowRunClientResponse) 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 CreateLavaflowRunClientResponse) ContentType() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Header.Get("Content-Type") - } - return "" -} - -type GetLavaflowRunClientResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *LavaflowRun - JSON400 *Error - JSON401 *Error - JSON403 *Error - JSON404 *Error -} - -// Status returns HTTPResponse.Status -func (r GetLavaflowRunClientResponse) Status() string { +func (r CreateLavaflowHeldFixOpenClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -53027,7 +54624,7 @@ func (r GetLavaflowRunClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetLavaflowRunClientResponse) StatusCode() int { +func (r CreateLavaflowHeldFixOpenClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -53035,17 +54632,17 @@ func (r GetLavaflowRunClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r GetLavaflowRunClientResponse) ContentType() string { +func (r CreateLavaflowHeldFixOpenClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } return "" } -type ListLavaflowScansClientResponse struct { +type ListLavaflowResourcesClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *PaginatedLavaflowScans + JSON200 *LavaflowResourceList JSON400 *Error JSON401 *Error JSON403 *Error @@ -53053,7 +54650,7 @@ type ListLavaflowScansClientResponse struct { } // Status returns HTTPResponse.Status -func (r ListLavaflowScansClientResponse) Status() string { +func (r ListLavaflowResourcesClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -53061,7 +54658,7 @@ func (r ListLavaflowScansClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListLavaflowScansClientResponse) StatusCode() int { +func (r ListLavaflowResourcesClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -53069,17 +54666,17 @@ func (r ListLavaflowScansClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r ListLavaflowScansClientResponse) ContentType() string { +func (r ListLavaflowResourcesClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } return "" } -type GetLavaflowSettingsClientResponse struct { +type ListLavaflowRunsClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *LavaflowSettings + JSON200 *PaginatedLavaflowRuns JSON400 *Error JSON401 *Error JSON403 *Error @@ -53087,7 +54684,7 @@ type GetLavaflowSettingsClientResponse struct { } // Status returns HTTPResponse.Status -func (r GetLavaflowSettingsClientResponse) Status() string { +func (r ListLavaflowRunsClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -53095,7 +54692,7 @@ func (r GetLavaflowSettingsClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetLavaflowSettingsClientResponse) StatusCode() int { +func (r ListLavaflowRunsClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -53103,17 +54700,17 @@ func (r GetLavaflowSettingsClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r GetLavaflowSettingsClientResponse) ContentType() string { +func (r ListLavaflowRunsClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } return "" } -type PatchLavaflowSettingsClientResponse struct { +type CreateLavaflowRunClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *LavaflowSettings + JSON202 *LavaflowRun JSON400 *Error JSON401 *Error JSON403 *Error @@ -53121,11 +54718,10 @@ type PatchLavaflowSettingsClientResponse struct { JSON409 *Error JSON413 *Error JSON429 *Error - JSON503 *Error } // Status returns HTTPResponse.Status -func (r PatchLavaflowSettingsClientResponse) Status() string { +func (r CreateLavaflowRunClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -53133,7 +54729,7 @@ func (r PatchLavaflowSettingsClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r PatchLavaflowSettingsClientResponse) StatusCode() int { +func (r CreateLavaflowRunClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -53141,17 +54737,17 @@ func (r PatchLavaflowSettingsClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r PatchLavaflowSettingsClientResponse) ContentType() string { +func (r CreateLavaflowRunClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } return "" } -type ListLavaflowSkillVersionsClientResponse struct { +type GetLavaflowRunClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *LavaflowSkillVersionList + JSON200 *LavaflowRun JSON400 *Error JSON401 *Error JSON403 *Error @@ -53159,7 +54755,7 @@ type ListLavaflowSkillVersionsClientResponse struct { } // Status returns HTTPResponse.Status -func (r ListLavaflowSkillVersionsClientResponse) Status() string { +func (r GetLavaflowRunClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -53167,7 +54763,7 @@ func (r ListLavaflowSkillVersionsClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListLavaflowSkillVersionsClientResponse) StatusCode() int { +func (r GetLavaflowRunClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -53175,17 +54771,17 @@ func (r ListLavaflowSkillVersionsClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r ListLavaflowSkillVersionsClientResponse) ContentType() string { +func (r GetLavaflowRunClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } return "" } -type ListLavaflowSkillsClientResponse struct { +type ListLavaflowScansClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *LavaflowSkillList + JSON200 *PaginatedLavaflowScans JSON400 *Error JSON401 *Error JSON403 *Error @@ -53193,7 +54789,7 @@ type ListLavaflowSkillsClientResponse struct { } // Status returns HTTPResponse.Status -func (r ListLavaflowSkillsClientResponse) Status() string { +func (r ListLavaflowScansClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -53201,7 +54797,7 @@ func (r ListLavaflowSkillsClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ListLavaflowSkillsClientResponse) StatusCode() int { +func (r ListLavaflowScansClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -53209,25 +54805,25 @@ func (r ListLavaflowSkillsClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r ListLavaflowSkillsClientResponse) ContentType() string { +func (r ListLavaflowScansClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } return "" } -type DeleteLavaflowSkillClientResponse struct { +type GetLavaflowSettingsClientResponse struct { Body []byte HTTPResponse *http.Response + JSON200 *LavaflowSettings JSON400 *Error JSON401 *Error JSON403 *Error JSON404 *Error - JSON429 *Error } // Status returns HTTPResponse.Status -func (r DeleteLavaflowSkillClientResponse) Status() string { +func (r GetLavaflowSettingsClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -53235,7 +54831,7 @@ func (r DeleteLavaflowSkillClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r DeleteLavaflowSkillClientResponse) StatusCode() int { +func (r GetLavaflowSettingsClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -53243,55 +54839,21 @@ func (r DeleteLavaflowSkillClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r DeleteLavaflowSkillClientResponse) ContentType() string { +func (r GetLavaflowSettingsClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } return "" } -type GetLavaflowSkillClientResponse struct { +type PatchLavaflowSettingsClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *LavaflowSkill + JSON200 *LavaflowSettings JSON400 *Error JSON401 *Error JSON403 *Error JSON404 *Error -} - -// Status returns HTTPResponse.Status -func (r GetLavaflowSkillClientResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} - -// StatusCode returns HTTPResponse.StatusCode -func (r GetLavaflowSkillClientResponse) 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 GetLavaflowSkillClientResponse) ContentType() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Header.Get("Content-Type") - } - return "" -} - -type UpdateLavaflowSkillClientResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *LavaflowSkill - JSON400 *LavaflowSkillError - JSON401 *Error - JSON403 *Error - JSON404 *Error JSON409 *Error JSON413 *Error JSON429 *Error @@ -53299,109 +54861,7 @@ type UpdateLavaflowSkillClientResponse struct { } // Status returns HTTPResponse.Status -func (r UpdateLavaflowSkillClientResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} - -// StatusCode returns HTTPResponse.StatusCode -func (r UpdateLavaflowSkillClientResponse) 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 UpdateLavaflowSkillClientResponse) ContentType() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Header.Get("Content-Type") - } - return "" -} - -type ListLavaflowSlackChannelsClientResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *LavaflowSlackChannelsResponse - JSON400 *Error - JSON401 *Error - JSON404 *Error -} - -// Status returns HTTPResponse.Status -func (r ListLavaflowSlackChannelsClientResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} - -// StatusCode returns HTTPResponse.StatusCode -func (r ListLavaflowSlackChannelsClientResponse) 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 ListLavaflowSlackChannelsClientResponse) ContentType() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Header.Get("Content-Type") - } - return "" -} - -type BindLavaflowSlackChannelClientResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *LavaflowSlackChannel - JSON201 *LavaflowSlackChannel - JSON400 *Error - JSON401 *Error - JSON403 *Error - JSON404 *Error - JSON502 *Error -} - -// Status returns HTTPResponse.Status -func (r BindLavaflowSlackChannelClientResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} - -// StatusCode returns HTTPResponse.StatusCode -func (r BindLavaflowSlackChannelClientResponse) 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 BindLavaflowSlackChannelClientResponse) ContentType() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Header.Get("Content-Type") - } - return "" -} - -type UnbindLavaflowSlackChannelClientResponse struct { - Body []byte - HTTPResponse *http.Response - JSON400 *Error - JSON401 *Error - JSON403 *Error - JSON404 *Error -} - -// Status returns HTTPResponse.Status -func (r UnbindLavaflowSlackChannelClientResponse) Status() string { +func (r PatchLavaflowSettingsClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -53409,7 +54869,7 @@ func (r UnbindLavaflowSlackChannelClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r UnbindLavaflowSlackChannelClientResponse) StatusCode() int { +func (r PatchLavaflowSettingsClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -53417,7 +54877,7 @@ func (r UnbindLavaflowSlackChannelClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r UnbindLavaflowSlackChannelClientResponse) ContentType() string { +func (r PatchLavaflowSettingsClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } @@ -58710,6 +60170,261 @@ func (r UpdateFunctionClientResponse) ContentType() string { return "" } +type ListFunctionCandidatesClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *FunctionCandidateList + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON404 *Error + JSON500 *Error +} + +// Status returns HTTPResponse.Status +func (r ListFunctionCandidatesClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListFunctionCandidatesClientResponse) 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 ListFunctionCandidatesClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + +type CreateFunctionCandidateClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON202 *FunctionCandidate + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON404 *Error + JSON409 *Error + JSON413 *Error + JSON429 *Error + JSON500 *Error + JSON503 *Error +} + +// Status returns HTTPResponse.Status +func (r CreateFunctionCandidateClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CreateFunctionCandidateClientResponse) 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 CreateFunctionCandidateClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + +type DeleteFunctionCandidateClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON404 *Error + JSON409 *Error + JSON500 *Error +} + +// Status returns HTTPResponse.Status +func (r DeleteFunctionCandidateClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteFunctionCandidateClientResponse) 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 DeleteFunctionCandidateClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + +type GetFunctionCandidateClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *FunctionCandidate + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON404 *Error + JSON500 *Error +} + +// Status returns HTTPResponse.Status +func (r GetFunctionCandidateClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetFunctionCandidateClientResponse) 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 GetFunctionCandidateClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + +type ListFunctionCandidateDeploymentsClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *FunctionCandidateDeploymentList + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON404 *Error + JSON500 *Error +} + +// Status returns HTTPResponse.Status +func (r ListFunctionCandidateDeploymentsClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListFunctionCandidateDeploymentsClientResponse) 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 ListFunctionCandidateDeploymentsClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + +type RedeployFunctionCandidateClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON202 *FunctionCandidateDeployment + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON404 *Error + JSON409 *Error + JSON413 *Error + JSON429 *Error + JSON500 *Error + JSON503 *Error +} + +// Status returns HTTPResponse.Status +func (r RedeployFunctionCandidateClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r RedeployFunctionCandidateClientResponse) 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 RedeployFunctionCandidateClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + +type PromoteFunctionCandidateClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *FunctionServing + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON404 *Error + JSON409 *Error + JSON413 *Error + JSON500 *Error +} + +// Status returns HTTPResponse.Status +func (r PromoteFunctionCandidateClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r PromoteFunctionCandidateClientResponse) 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 PromoteFunctionCandidateClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + type ListFunctionDeploymentsClientResponse struct { Body []byte HTTPResponse *http.Response @@ -58898,6 +60613,78 @@ func (r UpdateFunctionSchedulerClientResponse) ContentType() string { return "" } +type GetFunctionServingClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *FunctionServing + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON404 *Error + JSON500 *Error +} + +// Status returns HTTPResponse.Status +func (r GetFunctionServingClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetFunctionServingClientResponse) 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 GetFunctionServingClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + +type RollbackFunctionServingClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *FunctionServing + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON404 *Error + JSON409 *Error + JSON413 *Error + JSON500 *Error +} + +// Status returns HTTPResponse.Status +func (r RollbackFunctionServingClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r RollbackFunctionServingClientResponse) 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 RollbackFunctionServingClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + type DisconnectProjectGitClientResponse struct { Body []byte HTTPResponse *http.Response @@ -60496,6 +62283,8 @@ type CreateServiceKeyClientResponse struct { HTTPResponse *http.Response JSON201 *ServiceKey JSON400 *Error + JSON403 *Error + JSON404 *Error JSON409 *Error } @@ -60617,6 +62406,7 @@ func (r RegenerateServiceKeyClientResponse) ContentType() string { type ReplaceSharedVariablesClientResponse struct { Body []byte HTTPResponse *http.Response + JSON200 *SharedVariablesReplaceResult JSON400 *Error JSON409 *Error JSON413 *Error @@ -61309,6 +63099,7 @@ type CreateVariableClientResponse struct { HTTPResponse *http.Response JSON201 *Variable JSON400 *Error + JSON409 *Error JSON503 *Error } @@ -61340,6 +63131,7 @@ type DeleteVariableClientResponse struct { Body []byte HTTPResponse *http.Response JSON404 *Error + JSON409 *Error } // Status returns HTTPResponse.Status @@ -61403,6 +63195,7 @@ type UpdateVariableClientResponse struct { JSON200 *Variable JSON400 *Error JSON404 *Error + JSON409 *Error JSON503 *Error } @@ -61461,6 +63254,44 @@ func (r DownloadPublicFileClientResponse) ContentType() string { return "" } +type PublishRealtimeMessageClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON202 *RealtimePublishResult + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON404 *Error + JSON409 *Error + JSON413 *Error + JSON429 *Error + JSON503 *Error +} + +// Status returns HTTPResponse.Status +func (r PublishRealtimeMessageClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r PublishRealtimeMessageClientResponse) 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 PublishRealtimeMessageClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + type CreateSandboxFileArchiveClientResponse struct { Body []byte HTTPResponse *http.Response @@ -63685,6 +65516,50 @@ func (c *ClientWithResponses) ListCapabilitiesWithResponse(ctx context.Context, return ParseListCapabilitiesClientResponse(rsp) } +// ListConnectorsWithResponse request returning *ListConnectorsClientResponse +func (c *ClientWithResponses) ListConnectorsWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*ListConnectorsClientResponse, error) { + rsp, err := c.ListConnectors(ctx, reqEditors...) + if err != nil { + return nil, err + } + return ParseListConnectorsClientResponse(rsp) +} + +// CreateConnectorWithBodyWithResponse request with arbitrary body returning *CreateConnectorClientResponse +func (c *ClientWithResponses) CreateConnectorWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateConnectorClientResponse, error) { + rsp, err := c.CreateConnectorWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCreateConnectorClientResponse(rsp) +} + +func (c *ClientWithResponses) CreateConnectorWithResponse(ctx context.Context, body CreateConnectorJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateConnectorClientResponse, error) { + rsp, err := c.CreateConnector(ctx, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCreateConnectorClientResponse(rsp) +} + +// DeleteConnectorWithResponse request returning *DeleteConnectorClientResponse +func (c *ClientWithResponses) DeleteConnectorWithResponse(ctx context.Context, connectorId ConnectorId, reqEditors ...RequestEditorFn) (*DeleteConnectorClientResponse, error) { + rsp, err := c.DeleteConnector(ctx, connectorId, reqEditors...) + if err != nil { + return nil, err + } + return ParseDeleteConnectorClientResponse(rsp) +} + +// GetConnectorWithResponse request returning *GetConnectorClientResponse +func (c *ClientWithResponses) GetConnectorWithResponse(ctx context.Context, connectorId ConnectorId, reqEditors ...RequestEditorFn) (*GetConnectorClientResponse, error) { + rsp, err := c.GetConnector(ctx, connectorId, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetConnectorClientResponse(rsp) +} + // ListPostgresVersionsWithResponse request returning *ListPostgresVersionsClientResponse func (c *ClientWithResponses) ListPostgresVersionsWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*ListPostgresVersionsClientResponse, error) { rsp, err := c.ListPostgresVersions(ctx, reqEditors...) @@ -64221,13 +66096,56 @@ func (c *ClientWithResponses) ListImportSourcesWithResponse(ctx context.Context, return ParseListImportSourcesClientResponse(rsp) } -// ListLavaflowGlobalSkillsWithResponse request returning *ListLavaflowGlobalSkillsClientResponse -func (c *ClientWithResponses) ListLavaflowGlobalSkillsWithResponse(ctx context.Context, params *ListLavaflowGlobalSkillsParams, reqEditors ...RequestEditorFn) (*ListLavaflowGlobalSkillsClientResponse, error) { - rsp, err := c.ListLavaflowGlobalSkills(ctx, params, reqEditors...) +// CreateIssueWithBodyWithResponse request with arbitrary body returning *CreateIssueClientResponse +func (c *ClientWithResponses) CreateIssueWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateIssueClientResponse, error) { + rsp, err := c.CreateIssueWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCreateIssueClientResponse(rsp) +} + +func (c *ClientWithResponses) CreateIssueWithResponse(ctx context.Context, body CreateIssueJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateIssueClientResponse, error) { + rsp, err := c.CreateIssue(ctx, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCreateIssueClientResponse(rsp) +} + +// ListLavaflowConnectorBindingsWithResponse request returning *ListLavaflowConnectorBindingsClientResponse +func (c *ClientWithResponses) ListLavaflowConnectorBindingsWithResponse(ctx context.Context, params *ListLavaflowConnectorBindingsParams, reqEditors ...RequestEditorFn) (*ListLavaflowConnectorBindingsClientResponse, error) { + rsp, err := c.ListLavaflowConnectorBindings(ctx, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseListLavaflowConnectorBindingsClientResponse(rsp) +} + +// CreateLavaflowConnectorBindingWithBodyWithResponse request with arbitrary body returning *CreateLavaflowConnectorBindingClientResponse +func (c *ClientWithResponses) CreateLavaflowConnectorBindingWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateLavaflowConnectorBindingClientResponse, error) { + rsp, err := c.CreateLavaflowConnectorBindingWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCreateLavaflowConnectorBindingClientResponse(rsp) +} + +func (c *ClientWithResponses) CreateLavaflowConnectorBindingWithResponse(ctx context.Context, body CreateLavaflowConnectorBindingJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateLavaflowConnectorBindingClientResponse, error) { + rsp, err := c.CreateLavaflowConnectorBinding(ctx, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCreateLavaflowConnectorBindingClientResponse(rsp) +} + +// DeleteLavaflowConnectorBindingWithResponse request returning *DeleteLavaflowConnectorBindingClientResponse +func (c *ClientWithResponses) DeleteLavaflowConnectorBindingWithResponse(ctx context.Context, bindingId openapi_types.UUID, params *DeleteLavaflowConnectorBindingParams, reqEditors ...RequestEditorFn) (*DeleteLavaflowConnectorBindingClientResponse, error) { + rsp, err := c.DeleteLavaflowConnectorBinding(ctx, bindingId, params, reqEditors...) if err != nil { return nil, err } - return ParseListLavaflowGlobalSkillsClientResponse(rsp) + return ParseDeleteLavaflowConnectorBindingClientResponse(rsp) } // CreateLavaflowHeldFixOpenWithBodyWithResponse request with arbitrary body returning *CreateLavaflowHeldFixOpenClientResponse @@ -64326,94 +66244,6 @@ func (c *ClientWithResponses) PatchLavaflowSettingsWithResponse(ctx context.Cont return ParsePatchLavaflowSettingsClientResponse(rsp) } -// ListLavaflowSkillVersionsWithResponse request returning *ListLavaflowSkillVersionsClientResponse -func (c *ClientWithResponses) ListLavaflowSkillVersionsWithResponse(ctx context.Context, params *ListLavaflowSkillVersionsParams, reqEditors ...RequestEditorFn) (*ListLavaflowSkillVersionsClientResponse, error) { - rsp, err := c.ListLavaflowSkillVersions(ctx, params, reqEditors...) - if err != nil { - return nil, err - } - return ParseListLavaflowSkillVersionsClientResponse(rsp) -} - -// ListLavaflowSkillsWithResponse request returning *ListLavaflowSkillsClientResponse -func (c *ClientWithResponses) ListLavaflowSkillsWithResponse(ctx context.Context, params *ListLavaflowSkillsParams, reqEditors ...RequestEditorFn) (*ListLavaflowSkillsClientResponse, error) { - rsp, err := c.ListLavaflowSkills(ctx, params, reqEditors...) - if err != nil { - return nil, err - } - return ParseListLavaflowSkillsClientResponse(rsp) -} - -// DeleteLavaflowSkillWithResponse request returning *DeleteLavaflowSkillClientResponse -func (c *ClientWithResponses) DeleteLavaflowSkillWithResponse(ctx context.Context, skillId LavaflowSkillId, params *DeleteLavaflowSkillParams, reqEditors ...RequestEditorFn) (*DeleteLavaflowSkillClientResponse, error) { - rsp, err := c.DeleteLavaflowSkill(ctx, skillId, params, reqEditors...) - if err != nil { - return nil, err - } - return ParseDeleteLavaflowSkillClientResponse(rsp) -} - -// GetLavaflowSkillWithResponse request returning *GetLavaflowSkillClientResponse -func (c *ClientWithResponses) GetLavaflowSkillWithResponse(ctx context.Context, skillId LavaflowSkillId, params *GetLavaflowSkillParams, reqEditors ...RequestEditorFn) (*GetLavaflowSkillClientResponse, error) { - rsp, err := c.GetLavaflowSkill(ctx, skillId, params, reqEditors...) - if err != nil { - return nil, err - } - return ParseGetLavaflowSkillClientResponse(rsp) -} - -// UpdateLavaflowSkillWithBodyWithResponse request with arbitrary body returning *UpdateLavaflowSkillClientResponse -func (c *ClientWithResponses) UpdateLavaflowSkillWithBodyWithResponse(ctx context.Context, skillId LavaflowSkillId, params *UpdateLavaflowSkillParams, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateLavaflowSkillClientResponse, error) { - rsp, err := c.UpdateLavaflowSkillWithBody(ctx, skillId, params, contentType, body, reqEditors...) - if err != nil { - return nil, err - } - return ParseUpdateLavaflowSkillClientResponse(rsp) -} - -func (c *ClientWithResponses) UpdateLavaflowSkillWithResponse(ctx context.Context, skillId LavaflowSkillId, params *UpdateLavaflowSkillParams, body UpdateLavaflowSkillJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateLavaflowSkillClientResponse, error) { - rsp, err := c.UpdateLavaflowSkill(ctx, skillId, params, body, reqEditors...) - if err != nil { - return nil, err - } - return ParseUpdateLavaflowSkillClientResponse(rsp) -} - -// ListLavaflowSlackChannelsWithResponse request returning *ListLavaflowSlackChannelsClientResponse -func (c *ClientWithResponses) ListLavaflowSlackChannelsWithResponse(ctx context.Context, params *ListLavaflowSlackChannelsParams, reqEditors ...RequestEditorFn) (*ListLavaflowSlackChannelsClientResponse, error) { - rsp, err := c.ListLavaflowSlackChannels(ctx, params, reqEditors...) - if err != nil { - return nil, err - } - return ParseListLavaflowSlackChannelsClientResponse(rsp) -} - -// BindLavaflowSlackChannelWithBodyWithResponse request with arbitrary body returning *BindLavaflowSlackChannelClientResponse -func (c *ClientWithResponses) BindLavaflowSlackChannelWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*BindLavaflowSlackChannelClientResponse, error) { - rsp, err := c.BindLavaflowSlackChannelWithBody(ctx, contentType, body, reqEditors...) - if err != nil { - return nil, err - } - return ParseBindLavaflowSlackChannelClientResponse(rsp) -} - -func (c *ClientWithResponses) BindLavaflowSlackChannelWithResponse(ctx context.Context, body BindLavaflowSlackChannelJSONRequestBody, reqEditors ...RequestEditorFn) (*BindLavaflowSlackChannelClientResponse, error) { - rsp, err := c.BindLavaflowSlackChannel(ctx, body, reqEditors...) - if err != nil { - return nil, err - } - return ParseBindLavaflowSlackChannelClientResponse(rsp) -} - -// UnbindLavaflowSlackChannelWithResponse request returning *UnbindLavaflowSlackChannelClientResponse -func (c *ClientWithResponses) UnbindLavaflowSlackChannelWithResponse(ctx context.Context, bindingId openapi_types.UUID, params *UnbindLavaflowSlackChannelParams, reqEditors ...RequestEditorFn) (*UnbindLavaflowSlackChannelClientResponse, error) { - rsp, err := c.UnbindLavaflowSlackChannel(ctx, bindingId, params, reqEditors...) - if err != nil { - return nil, err - } - return ParseUnbindLavaflowSlackChannelClientResponse(rsp) -} - // GetLavaflowStatsWithResponse request returning *GetLavaflowStatsClientResponse func (c *ClientWithResponses) GetLavaflowStatsWithResponse(ctx context.Context, params *GetLavaflowStatsParams, reqEditors ...RequestEditorFn) (*GetLavaflowStatsClientResponse, error) { rsp, err := c.GetLavaflowStats(ctx, params, reqEditors...) @@ -66195,6 +68025,77 @@ func (c *ClientWithResponses) UpdateFunctionWithResponse(ctx context.Context, id return ParseUpdateFunctionClientResponse(rsp) } +// ListFunctionCandidatesWithResponse request returning *ListFunctionCandidatesClientResponse +func (c *ClientWithResponses) ListFunctionCandidatesWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, reqEditors ...RequestEditorFn) (*ListFunctionCandidatesClientResponse, error) { + rsp, err := c.ListFunctionCandidates(ctx, id, functionId, reqEditors...) + if err != nil { + return nil, err + } + return ParseListFunctionCandidatesClientResponse(rsp) +} + +// CreateFunctionCandidateWithBodyWithResponse request with arbitrary body returning *CreateFunctionCandidateClientResponse +func (c *ClientWithResponses) CreateFunctionCandidateWithBodyWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateFunctionCandidateClientResponse, error) { + rsp, err := c.CreateFunctionCandidateWithBody(ctx, id, functionId, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCreateFunctionCandidateClientResponse(rsp) +} + +// DeleteFunctionCandidateWithResponse request returning *DeleteFunctionCandidateClientResponse +func (c *ClientWithResponses) DeleteFunctionCandidateWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, reqEditors ...RequestEditorFn) (*DeleteFunctionCandidateClientResponse, error) { + rsp, err := c.DeleteFunctionCandidate(ctx, id, functionId, candidateId, reqEditors...) + if err != nil { + return nil, err + } + return ParseDeleteFunctionCandidateClientResponse(rsp) +} + +// GetFunctionCandidateWithResponse request returning *GetFunctionCandidateClientResponse +func (c *ClientWithResponses) GetFunctionCandidateWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, reqEditors ...RequestEditorFn) (*GetFunctionCandidateClientResponse, error) { + rsp, err := c.GetFunctionCandidate(ctx, id, functionId, candidateId, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetFunctionCandidateClientResponse(rsp) +} + +// ListFunctionCandidateDeploymentsWithResponse request returning *ListFunctionCandidateDeploymentsClientResponse +func (c *ClientWithResponses) ListFunctionCandidateDeploymentsWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, reqEditors ...RequestEditorFn) (*ListFunctionCandidateDeploymentsClientResponse, error) { + rsp, err := c.ListFunctionCandidateDeployments(ctx, id, functionId, candidateId, reqEditors...) + if err != nil { + return nil, err + } + return ParseListFunctionCandidateDeploymentsClientResponse(rsp) +} + +// RedeployFunctionCandidateWithBodyWithResponse request with arbitrary body returning *RedeployFunctionCandidateClientResponse +func (c *ClientWithResponses) RedeployFunctionCandidateWithBodyWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*RedeployFunctionCandidateClientResponse, error) { + rsp, err := c.RedeployFunctionCandidateWithBody(ctx, id, functionId, candidateId, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseRedeployFunctionCandidateClientResponse(rsp) +} + +// PromoteFunctionCandidateWithBodyWithResponse request with arbitrary body returning *PromoteFunctionCandidateClientResponse +func (c *ClientWithResponses) PromoteFunctionCandidateWithBodyWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PromoteFunctionCandidateClientResponse, error) { + rsp, err := c.PromoteFunctionCandidateWithBody(ctx, id, functionId, candidateId, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePromoteFunctionCandidateClientResponse(rsp) +} + +func (c *ClientWithResponses) PromoteFunctionCandidateWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, candidateId FunctionCandidateId, body PromoteFunctionCandidateJSONRequestBody, reqEditors ...RequestEditorFn) (*PromoteFunctionCandidateClientResponse, error) { + rsp, err := c.PromoteFunctionCandidate(ctx, id, functionId, candidateId, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePromoteFunctionCandidateClientResponse(rsp) +} + // ListFunctionDeploymentsWithResponse request returning *ListFunctionDeploymentsClientResponse func (c *ClientWithResponses) ListFunctionDeploymentsWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, params *ListFunctionDeploymentsParams, reqEditors ...RequestEditorFn) (*ListFunctionDeploymentsClientResponse, error) { rsp, err := c.ListFunctionDeployments(ctx, id, functionId, params, reqEditors...) @@ -66265,6 +68166,32 @@ func (c *ClientWithResponses) UpdateFunctionSchedulerWithResponse(ctx context.Co return ParseUpdateFunctionSchedulerClientResponse(rsp) } +// GetFunctionServingWithResponse request returning *GetFunctionServingClientResponse +func (c *ClientWithResponses) GetFunctionServingWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, reqEditors ...RequestEditorFn) (*GetFunctionServingClientResponse, error) { + rsp, err := c.GetFunctionServing(ctx, id, functionId, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetFunctionServingClientResponse(rsp) +} + +// RollbackFunctionServingWithBodyWithResponse request with arbitrary body returning *RollbackFunctionServingClientResponse +func (c *ClientWithResponses) RollbackFunctionServingWithBodyWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*RollbackFunctionServingClientResponse, error) { + rsp, err := c.RollbackFunctionServingWithBody(ctx, id, functionId, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseRollbackFunctionServingClientResponse(rsp) +} + +func (c *ClientWithResponses) RollbackFunctionServingWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, body RollbackFunctionServingJSONRequestBody, reqEditors ...RequestEditorFn) (*RollbackFunctionServingClientResponse, error) { + rsp, err := c.RollbackFunctionServing(ctx, id, functionId, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseRollbackFunctionServingClientResponse(rsp) +} + // DisconnectProjectGitWithResponse request returning *DisconnectProjectGitClientResponse func (c *ClientWithResponses) DisconnectProjectGitWithResponse(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*DisconnectProjectGitClientResponse, error) { rsp, err := c.DisconnectProjectGit(ctx, id, reqEditors...) @@ -67192,6 +69119,23 @@ func (c *ClientWithResponses) DownloadPublicFileWithResponse(ctx context.Context return ParseDownloadPublicFileClientResponse(rsp) } +// PublishRealtimeMessageWithBodyWithResponse request with arbitrary body returning *PublishRealtimeMessageClientResponse +func (c *ClientWithResponses) PublishRealtimeMessageWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PublishRealtimeMessageClientResponse, error) { + rsp, err := c.PublishRealtimeMessageWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePublishRealtimeMessageClientResponse(rsp) +} + +func (c *ClientWithResponses) PublishRealtimeMessageWithResponse(ctx context.Context, body PublishRealtimeMessageJSONRequestBody, reqEditors ...RequestEditorFn) (*PublishRealtimeMessageClientResponse, error) { + rsp, err := c.PublishRealtimeMessage(ctx, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePublishRealtimeMessageClientResponse(rsp) +} + // CreateSandboxFileArchiveWithBodyWithResponse request with arbitrary body returning *CreateSandboxFileArchiveClientResponse func (c *ClientWithResponses) CreateSandboxFileArchiveWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateSandboxFileArchiveClientResponse, error) { rsp, err := c.CreateSandboxFileArchiveWithBody(ctx, contentType, body, reqEditors...) @@ -69256,6 +71200,208 @@ func ParseListCapabilitiesClientResponse(rsp *http.Response) (*ListCapabilitiesC return response, nil } +// ParseListConnectorsClientResponse parses an HTTP response from a ListConnectorsWithResponse call +func ParseListConnectorsClientResponse(rsp *http.Response) (*ListConnectorsClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &ListConnectorsClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest ConnectorsResponse + 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 == 401: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + } + + return response, nil +} + +// ParseCreateConnectorClientResponse parses an HTTP response from a CreateConnectorWithResponse call +func ParseCreateConnectorClientResponse(rsp *http.Response) (*CreateConnectorClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &CreateConnectorClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: + var dest Connector + 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 == 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 == 422: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON422 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 502: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON502 = &dest + + } + + return response, nil +} + +// ParseDeleteConnectorClientResponse parses an HTTP response from a DeleteConnectorWithResponse call +func ParseDeleteConnectorClientResponse(rsp *http.Response) (*DeleteConnectorClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &DeleteConnectorClientResponse{ + 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 == 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 == 502: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON502 = &dest + + } + + return response, nil +} + +// ParseGetConnectorClientResponse parses an HTTP response from a GetConnectorWithResponse call +func ParseGetConnectorClientResponse(rsp *http.Response) (*GetConnectorClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetConnectorClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Connector + 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 == 404: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + } + + return response, nil +} + // ParseListPostgresVersionsClientResponse parses an HTTP response from a ListPostgresVersionsWithResponse call func ParseListPostgresVersionsClientResponse(rsp *http.Response) (*ListPostgresVersionsClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) @@ -71554,291 +73700,12 @@ func ParseStartProjectImportClientResponse(rsp *http.Response) (*StartProjectImp } response.JSON409 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 422: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON422 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON429 = &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 -} - -// ParseGetProjectImportRunClientResponse parses an HTTP response from a GetProjectImportRunWithResponse call -func ParseGetProjectImportRunClientResponse(rsp *http.Response) (*GetProjectImportRunClientResponse, error) { - bodyBytes, err := io.ReadAll(rsp.Body) - defer func() { _ = rsp.Body.Close() }() - if err != nil { - return nil, err - } - - response := &GetProjectImportRunClientResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ProjectImportRun - 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 == 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 == 500: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON500 = &dest - - } - - return response, nil -} - -// ParseListImportSourcesClientResponse parses an HTTP response from a ListImportSourcesWithResponse call -func ParseListImportSourcesClientResponse(rsp *http.Response) (*ListImportSourcesClientResponse, error) { - bodyBytes, err := io.ReadAll(rsp.Body) - defer func() { _ = rsp.Body.Close() }() - if err != nil { - return nil, err - } - - response := &ListImportSourcesClientResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest ImportSourcesResponse - 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 == 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 == 429: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON429 = &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 -} - -// ParseListLavaflowGlobalSkillsClientResponse parses an HTTP response from a ListLavaflowGlobalSkillsWithResponse call -func ParseListLavaflowGlobalSkillsClientResponse(rsp *http.Response) (*ListLavaflowGlobalSkillsClientResponse, error) { - bodyBytes, err := io.ReadAll(rsp.Body) - defer func() { _ = rsp.Body.Close() }() - if err != nil { - return nil, err - } - - response := &ListLavaflowGlobalSkillsClientResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LavaflowGlobalSkillList - 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 - - } - - return response, nil -} - -// ParseCreateLavaflowHeldFixOpenClientResponse parses an HTTP response from a CreateLavaflowHeldFixOpenWithResponse call -func ParseCreateLavaflowHeldFixOpenClientResponse(rsp *http.Response) (*CreateLavaflowHeldFixOpenClientResponse, error) { - bodyBytes, err := io.ReadAll(rsp.Body) - defer func() { _ = rsp.Body.Close() }() - if err != nil { - return nil, err - } - - response := &CreateLavaflowHeldFixOpenClientResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 202: - var dest LavaflowRun - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON202 = &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 == 413: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 422: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON413 = &dest + response.JSON422 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: var dest Error @@ -71847,6 +73714,13 @@ func ParseCreateLavaflowHeldFixOpenClientResponse(rsp *http.Response) (*CreateLa } response.JSON429 = &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 { @@ -71859,22 +73733,22 @@ func ParseCreateLavaflowHeldFixOpenClientResponse(rsp *http.Response) (*CreateLa return response, nil } -// ParseListLavaflowResourcesClientResponse parses an HTTP response from a ListLavaflowResourcesWithResponse call -func ParseListLavaflowResourcesClientResponse(rsp *http.Response) (*ListLavaflowResourcesClientResponse, error) { +// ParseGetProjectImportRunClientResponse parses an HTTP response from a GetProjectImportRunWithResponse call +func ParseGetProjectImportRunClientResponse(rsp *http.Response) (*GetProjectImportRunClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListLavaflowResourcesClientResponse{ + response := &GetProjectImportRunClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LavaflowResourceList + var dest ProjectImportRun if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -71894,41 +73768,41 @@ func ParseListLavaflowResourcesClientResponse(rsp *http.Response) (*ListLavaflow } response.JSON401 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: + 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.JSON403 = &dest + response.JSON404 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + 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.JSON404 = &dest + response.JSON500 = &dest } return response, nil } -// ParseListLavaflowRunsClientResponse parses an HTTP response from a ListLavaflowRunsWithResponse call -func ParseListLavaflowRunsClientResponse(rsp *http.Response) (*ListLavaflowRunsClientResponse, error) { +// ParseListImportSourcesClientResponse parses an HTTP response from a ListImportSourcesWithResponse call +func ParseListImportSourcesClientResponse(rsp *http.Response) (*ListImportSourcesClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListLavaflowRunsClientResponse{ + response := &ListImportSourcesClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest PaginatedLavaflowRuns + var dest ImportSourcesResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -71962,31 +73836,59 @@ func ParseListLavaflowRunsClientResponse(rsp *http.Response) (*ListLavaflowRunsC } 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 == 429: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &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 } -// ParseCreateLavaflowRunClientResponse parses an HTTP response from a CreateLavaflowRunWithResponse call -func ParseCreateLavaflowRunClientResponse(rsp *http.Response) (*CreateLavaflowRunClientResponse, error) { +// ParseCreateIssueClientResponse parses an HTTP response from a CreateIssueWithResponse call +func ParseCreateIssueClientResponse(rsp *http.Response) (*CreateIssueClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &CreateLavaflowRunClientResponse{ + response := &CreateIssueClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 202: - var dest LavaflowRun + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: + var dest Issue if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON202 = &dest + response.JSON201 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest Error @@ -71995,13 +73897,6 @@ func ParseCreateLavaflowRunClientResponse(rsp *http.Response) (*CreateLavaflowRu } 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 { @@ -72030,34 +73925,27 @@ func ParseCreateLavaflowRunClientResponse(rsp *http.Response) (*CreateLavaflowRu } response.JSON413 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON429 = &dest - } return response, nil } -// ParseGetLavaflowRunClientResponse parses an HTTP response from a GetLavaflowRunWithResponse call -func ParseGetLavaflowRunClientResponse(rsp *http.Response) (*GetLavaflowRunClientResponse, error) { +// ParseListLavaflowConnectorBindingsClientResponse parses an HTTP response from a ListLavaflowConnectorBindingsWithResponse call +func ParseListLavaflowConnectorBindingsClientResponse(rsp *http.Response) (*ListLavaflowConnectorBindingsClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetLavaflowRunClientResponse{ + response := &ListLavaflowConnectorBindingsClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LavaflowRun + var dest LavaflowConnectorBindingsResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -72077,13 +73965,6 @@ func ParseGetLavaflowRunClientResponse(rsp *http.Response) (*GetLavaflowRunClien } 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 { @@ -72096,27 +73977,34 @@ func ParseGetLavaflowRunClientResponse(rsp *http.Response) (*GetLavaflowRunClien return response, nil } -// ParseListLavaflowScansClientResponse parses an HTTP response from a ListLavaflowScansWithResponse call -func ParseListLavaflowScansClientResponse(rsp *http.Response) (*ListLavaflowScansClientResponse, error) { +// ParseCreateLavaflowConnectorBindingClientResponse parses an HTTP response from a CreateLavaflowConnectorBindingWithResponse call +func ParseCreateLavaflowConnectorBindingClientResponse(rsp *http.Response) (*CreateLavaflowConnectorBindingClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListLavaflowScansClientResponse{ + response := &CreateLavaflowConnectorBindingClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest PaginatedLavaflowScans + var dest LavaflowConnectorBinding 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 LavaflowConnectorBinding + 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 { @@ -72145,32 +74033,32 @@ func ParseListLavaflowScansClientResponse(rsp *http.Response) (*ListLavaflowScan } response.JSON404 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 502: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON502 = &dest + } return response, nil } -// ParseGetLavaflowSettingsClientResponse parses an HTTP response from a GetLavaflowSettingsWithResponse call -func ParseGetLavaflowSettingsClientResponse(rsp *http.Response) (*GetLavaflowSettingsClientResponse, error) { +// ParseDeleteLavaflowConnectorBindingClientResponse parses an HTTP response from a DeleteLavaflowConnectorBindingWithResponse call +func ParseDeleteLavaflowConnectorBindingClientResponse(rsp *http.Response) (*DeleteLavaflowConnectorBindingClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetLavaflowSettingsClientResponse{ + response := &DeleteLavaflowConnectorBindingClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LavaflowSettings - 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 { @@ -72204,26 +74092,26 @@ func ParseGetLavaflowSettingsClientResponse(rsp *http.Response) (*GetLavaflowSet return response, nil } -// ParsePatchLavaflowSettingsClientResponse parses an HTTP response from a PatchLavaflowSettingsWithResponse call -func ParsePatchLavaflowSettingsClientResponse(rsp *http.Response) (*PatchLavaflowSettingsClientResponse, error) { +// ParseCreateLavaflowHeldFixOpenClientResponse parses an HTTP response from a CreateLavaflowHeldFixOpenWithResponse call +func ParseCreateLavaflowHeldFixOpenClientResponse(rsp *http.Response) (*CreateLavaflowHeldFixOpenClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &PatchLavaflowSettingsClientResponse{ + response := &CreateLavaflowHeldFixOpenClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LavaflowSettings + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 202: + var dest LavaflowRun if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON200 = &dest + response.JSON202 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest Error @@ -72286,22 +74174,22 @@ func ParsePatchLavaflowSettingsClientResponse(rsp *http.Response) (*PatchLavaflo return response, nil } -// ParseListLavaflowSkillVersionsClientResponse parses an HTTP response from a ListLavaflowSkillVersionsWithResponse call -func ParseListLavaflowSkillVersionsClientResponse(rsp *http.Response) (*ListLavaflowSkillVersionsClientResponse, error) { +// ParseListLavaflowResourcesClientResponse parses an HTTP response from a ListLavaflowResourcesWithResponse call +func ParseListLavaflowResourcesClientResponse(rsp *http.Response) (*ListLavaflowResourcesClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListLavaflowSkillVersionsClientResponse{ + response := &ListLavaflowResourcesClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LavaflowSkillVersionList + var dest LavaflowResourceList if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -72340,22 +74228,22 @@ func ParseListLavaflowSkillVersionsClientResponse(rsp *http.Response) (*ListLava return response, nil } -// ParseListLavaflowSkillsClientResponse parses an HTTP response from a ListLavaflowSkillsWithResponse call -func ParseListLavaflowSkillsClientResponse(rsp *http.Response) (*ListLavaflowSkillsClientResponse, error) { +// ParseListLavaflowRunsClientResponse parses an HTTP response from a ListLavaflowRunsWithResponse call +func ParseListLavaflowRunsClientResponse(rsp *http.Response) (*ListLavaflowRunsClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListLavaflowSkillsClientResponse{ + response := &ListLavaflowRunsClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LavaflowSkillList + var dest PaginatedLavaflowRuns if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -72394,20 +74282,27 @@ func ParseListLavaflowSkillsClientResponse(rsp *http.Response) (*ListLavaflowSki return response, nil } -// ParseDeleteLavaflowSkillClientResponse parses an HTTP response from a DeleteLavaflowSkillWithResponse call -func ParseDeleteLavaflowSkillClientResponse(rsp *http.Response) (*DeleteLavaflowSkillClientResponse, error) { +// ParseCreateLavaflowRunClientResponse parses an HTTP response from a CreateLavaflowRunWithResponse call +func ParseCreateLavaflowRunClientResponse(rsp *http.Response) (*CreateLavaflowRunClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &DeleteLavaflowSkillClientResponse{ + response := &CreateLavaflowRunClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 202: + var dest LavaflowRun + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON202 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -72436,6 +74331,20 @@ func ParseDeleteLavaflowSkillClientResponse(rsp *http.Response) (*DeleteLavaflow } 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 == 413: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON413 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -72448,22 +74357,22 @@ func ParseDeleteLavaflowSkillClientResponse(rsp *http.Response) (*DeleteLavaflow return response, nil } -// ParseGetLavaflowSkillClientResponse parses an HTTP response from a GetLavaflowSkillWithResponse call -func ParseGetLavaflowSkillClientResponse(rsp *http.Response) (*GetLavaflowSkillClientResponse, error) { +// ParseGetLavaflowRunClientResponse parses an HTTP response from a GetLavaflowRunWithResponse call +func ParseGetLavaflowRunClientResponse(rsp *http.Response) (*GetLavaflowRunClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetLavaflowSkillClientResponse{ + response := &GetLavaflowRunClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LavaflowSkill + var dest LavaflowRun if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -72502,29 +74411,29 @@ func ParseGetLavaflowSkillClientResponse(rsp *http.Response) (*GetLavaflowSkillC return response, nil } -// ParseUpdateLavaflowSkillClientResponse parses an HTTP response from a UpdateLavaflowSkillWithResponse call -func ParseUpdateLavaflowSkillClientResponse(rsp *http.Response) (*UpdateLavaflowSkillClientResponse, error) { +// ParseListLavaflowScansClientResponse parses an HTTP response from a ListLavaflowScansWithResponse call +func ParseListLavaflowScansClientResponse(rsp *http.Response) (*ListLavaflowScansClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &UpdateLavaflowSkillClientResponse{ + response := &ListLavaflowScansClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LavaflowSkill + var dest PaginatedLavaflowScans 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 LavaflowSkillError + var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -72551,55 +74460,27 @@ func ParseUpdateLavaflowSkillClientResponse(rsp *http.Response) (*UpdateLavaflow } 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 == 413: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON413 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON429 = &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 } -// ParseListLavaflowSlackChannelsClientResponse parses an HTTP response from a ListLavaflowSlackChannelsWithResponse call -func ParseListLavaflowSlackChannelsClientResponse(rsp *http.Response) (*ListLavaflowSlackChannelsClientResponse, error) { +// ParseGetLavaflowSettingsClientResponse parses an HTTP response from a GetLavaflowSettingsWithResponse call +func ParseGetLavaflowSettingsClientResponse(rsp *http.Response) (*GetLavaflowSettingsClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListLavaflowSlackChannelsClientResponse{ + response := &GetLavaflowSettingsClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LavaflowSlackChannelsResponse + var dest LavaflowSettings if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -72619,6 +74500,13 @@ func ParseListLavaflowSlackChannelsClientResponse(rsp *http.Response) (*ListLava } 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 { @@ -72631,34 +74519,27 @@ func ParseListLavaflowSlackChannelsClientResponse(rsp *http.Response) (*ListLava return response, nil } -// ParseBindLavaflowSlackChannelClientResponse parses an HTTP response from a BindLavaflowSlackChannelWithResponse call -func ParseBindLavaflowSlackChannelClientResponse(rsp *http.Response) (*BindLavaflowSlackChannelClientResponse, error) { +// ParsePatchLavaflowSettingsClientResponse parses an HTTP response from a PatchLavaflowSettingsWithResponse call +func ParsePatchLavaflowSettingsClientResponse(rsp *http.Response) (*PatchLavaflowSettingsClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &BindLavaflowSlackChannelClientResponse{ + response := &PatchLavaflowSettingsClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest LavaflowSlackChannel + var dest LavaflowSettings 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 LavaflowSlackChannel - 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 { @@ -72687,59 +74568,33 @@ func ParseBindLavaflowSlackChannelClientResponse(rsp *http.Response) (*BindLavaf } response.JSON404 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 502: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON502 = &dest - - } - - return response, nil -} - -// ParseUnbindLavaflowSlackChannelClientResponse parses an HTTP response from a UnbindLavaflowSlackChannelWithResponse call -func ParseUnbindLavaflowSlackChannelClientResponse(rsp *http.Response) (*UnbindLavaflowSlackChannelClientResponse, error) { - bodyBytes, err := io.ReadAll(rsp.Body) - defer func() { _ = rsp.Body.Close() }() - if err != nil { - return nil, err - } - - response := &UnbindLavaflowSlackChannelClientResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + 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.JSON400 = &dest + response.JSON409 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 413: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON401 = &dest + response.JSON413 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON403 = &dest + response.JSON429 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + 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.JSON404 = &dest + response.JSON503 = &dest } @@ -78122,22 +79977,444 @@ func ParseDeleteFrontendClientResponse(rsp *http.Response) (*DeleteFrontendClien return response, nil } -// ParseGetFrontendClientResponse parses an HTTP response from a GetFrontendWithResponse call -func ParseGetFrontendClientResponse(rsp *http.Response) (*GetFrontendClientResponse, error) { +// ParseGetFrontendClientResponse parses an HTTP response from a GetFrontendWithResponse call +func ParseGetFrontendClientResponse(rsp *http.Response) (*GetFrontendClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetFrontendClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Frontend + 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 == 500: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + } + + return response, nil +} + +// ParseListFrontendCandidatesClientResponse parses an HTTP response from a ListFrontendCandidatesWithResponse call +func ParseListFrontendCandidatesClientResponse(rsp *http.Response) (*ListFrontendCandidatesClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &ListFrontendCandidatesClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest FrontendCandidateList + 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 == 500: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + } + + return response, nil +} + +// ParseCreateFrontendCandidateClientResponse parses an HTTP response from a CreateFrontendCandidateWithResponse call +func ParseCreateFrontendCandidateClientResponse(rsp *http.Response) (*CreateFrontendCandidateClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &CreateFrontendCandidateClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 202: + var dest FrontendCandidate + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON202 = &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 == 413: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON413 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &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 +} + +// ParseDeleteFrontendCandidateClientResponse parses an HTTP response from a DeleteFrontendCandidateWithResponse call +func ParseDeleteFrontendCandidateClientResponse(rsp *http.Response) (*DeleteFrontendCandidateClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &DeleteFrontendCandidateClientResponse{ + 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 == 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 + + } + + return response, nil +} + +// ParseGetFrontendCandidateClientResponse parses an HTTP response from a GetFrontendCandidateWithResponse call +func ParseGetFrontendCandidateClientResponse(rsp *http.Response) (*GetFrontendCandidateClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetFrontendCandidateClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest FrontendCandidate + 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 == 500: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + } + + return response, nil +} + +// ParseRedeployFrontendCandidateClientResponse parses an HTTP response from a RedeployFrontendCandidateWithResponse call +func ParseRedeployFrontendCandidateClientResponse(rsp *http.Response) (*RedeployFrontendCandidateClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &RedeployFrontendCandidateClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 202: + var dest FrontendCandidateDeployment + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON202 = &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 == 413: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON413 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &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 +} + +// ParsePromoteFrontendCandidateClientResponse parses an HTTP response from a PromoteFrontendCandidateWithResponse call +func ParsePromoteFrontendCandidateClientResponse(rsp *http.Response) (*PromoteFrontendCandidateClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetFrontendClientResponse{ + response := &PromoteFrontendCandidateClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Frontend + var dest FrontendServing if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -78171,6 +80448,20 @@ func ParseGetFrontendClientResponse(rsp *http.Response) (*GetFrontendClientRespo } 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 == 413: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON413 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -78183,22 +80474,22 @@ func ParseGetFrontendClientResponse(rsp *http.Response) (*GetFrontendClientRespo return response, nil } -// ParseListFrontendCandidatesClientResponse parses an HTTP response from a ListFrontendCandidatesWithResponse call -func ParseListFrontendCandidatesClientResponse(rsp *http.Response) (*ListFrontendCandidatesClientResponse, error) { +// ParseListFrontendDeploymentsClientResponse parses an HTTP response from a ListFrontendDeploymentsWithResponse call +func ParseListFrontendDeploymentsClientResponse(rsp *http.Response) (*ListFrontendDeploymentsClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListFrontendCandidatesClientResponse{ + response := &ListFrontendDeploymentsClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FrontendCandidateList + var dest PaginatedFrontendDeployments if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -78244,26 +80535,26 @@ func ParseListFrontendCandidatesClientResponse(rsp *http.Response) (*ListFronten return response, nil } -// ParseCreateFrontendCandidateClientResponse parses an HTTP response from a CreateFrontendCandidateWithResponse call -func ParseCreateFrontendCandidateClientResponse(rsp *http.Response) (*CreateFrontendCandidateClientResponse, error) { +// ParseCreateFrontendDeploymentClientResponse parses an HTTP response from a CreateFrontendDeploymentWithResponse call +func ParseCreateFrontendDeploymentClientResponse(rsp *http.Response) (*CreateFrontendDeploymentClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &CreateFrontendCandidateClientResponse{ + response := &CreateFrontendDeploymentClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 202: - var dest FrontendCandidate + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Frontend if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON202 = &dest + response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest Error @@ -78300,26 +80591,26 @@ func ParseCreateFrontendCandidateClientResponse(rsp *http.Response) (*CreateFron } response.JSON409 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 413: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON413 = &dest + response.JSON429 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + 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.JSON429 = &dest + response.JSON500 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 501: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON500 = &dest + response.JSON501 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: var dest Error @@ -78333,15 +80624,15 @@ func ParseCreateFrontendCandidateClientResponse(rsp *http.Response) (*CreateFron return response, nil } -// ParseDeleteFrontendCandidateClientResponse parses an HTTP response from a DeleteFrontendCandidateWithResponse call -func ParseDeleteFrontendCandidateClientResponse(rsp *http.Response) (*DeleteFrontendCandidateClientResponse, error) { +// ParseDeleteFrontendCustomDomainClientResponse parses an HTTP response from a DeleteFrontendCustomDomainWithResponse call +func ParseDeleteFrontendCustomDomainClientResponse(rsp *http.Response) (*DeleteFrontendCustomDomainClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &DeleteFrontendCandidateClientResponse{ + response := &DeleteFrontendCustomDomainClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } @@ -78394,22 +80685,22 @@ func ParseDeleteFrontendCandidateClientResponse(rsp *http.Response) (*DeleteFron return response, nil } -// ParseGetFrontendCandidateClientResponse parses an HTTP response from a GetFrontendCandidateWithResponse call -func ParseGetFrontendCandidateClientResponse(rsp *http.Response) (*GetFrontendCandidateClientResponse, error) { +// ParseGetFrontendCustomDomainClientResponse parses an HTTP response from a GetFrontendCustomDomainWithResponse call +func ParseGetFrontendCustomDomainClientResponse(rsp *http.Response) (*GetFrontendCustomDomainClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetFrontendCandidateClientResponse{ + response := &GetFrontendCustomDomainClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FrontendCandidate + var dest FrontendCustomDomainResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -78455,26 +80746,33 @@ func ParseGetFrontendCandidateClientResponse(rsp *http.Response) (*GetFrontendCa return response, nil } -// ParseRedeployFrontendCandidateClientResponse parses an HTTP response from a RedeployFrontendCandidateWithResponse call -func ParseRedeployFrontendCandidateClientResponse(rsp *http.Response) (*RedeployFrontendCandidateClientResponse, error) { +// ParseCreateFrontendCustomDomainClientResponse parses an HTTP response from a CreateFrontendCustomDomainWithResponse call +func ParseCreateFrontendCustomDomainClientResponse(rsp *http.Response) (*CreateFrontendCustomDomainClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &RedeployFrontendCandidateClientResponse{ + response := &CreateFrontendCustomDomainClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 202: - var dest FrontendCandidateDeployment + 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.JSON202 = &dest + 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 @@ -78505,26 +80803,12 @@ func ParseRedeployFrontendCandidateClientResponse(rsp *http.Response) (*Redeploy response.JSON404 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: - var dest Error + var dest FrontendCustomDomainConflictError 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 == 413: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON413 = &dest - - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON429 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -78544,34 +80828,27 @@ func ParseRedeployFrontendCandidateClientResponse(rsp *http.Response) (*Redeploy return response, nil } -// ParsePromoteFrontendCandidateClientResponse parses an HTTP response from a PromoteFrontendCandidateWithResponse call -func ParsePromoteFrontendCandidateClientResponse(rsp *http.Response) (*PromoteFrontendCandidateClientResponse, error) { +// ParseListFrontendDomainsClientResponse parses an HTTP response from a ListFrontendDomainsWithResponse call +func ParseListFrontendDomainsClientResponse(rsp *http.Response) (*ListFrontendDomainsClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &PromoteFrontendCandidateClientResponse{ + response := &ListFrontendDomainsClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FrontendServing + var dest FrontendCustomDomainList 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 { @@ -78593,20 +80870,6 @@ func ParsePromoteFrontendCandidateClientResponse(rsp *http.Response) (*PromoteFr } 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 == 413: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON413 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -78619,27 +80882,34 @@ func ParsePromoteFrontendCandidateClientResponse(rsp *http.Response) (*PromoteFr return response, nil } -// ParseListFrontendDeploymentsClientResponse parses an HTTP response from a ListFrontendDeploymentsWithResponse call -func ParseListFrontendDeploymentsClientResponse(rsp *http.Response) (*ListFrontendDeploymentsClientResponse, error) { +// ParseCreateFrontendDomainClientResponse parses an HTTP response from a CreateFrontendDomainWithResponse call +func ParseCreateFrontendDomainClientResponse(rsp *http.Response) (*CreateFrontendDomainClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListFrontendDeploymentsClientResponse{ + response := &CreateFrontendDomainClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest PaginatedFrontendDeployments + 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 { @@ -78668,6 +80938,13 @@ func ParseListFrontendDeploymentsClientResponse(rsp *http.Response) (*ListFronte } response.JSON404 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: + var dest FrontendCustomDomainConflictError + 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 { @@ -78675,39 +80952,32 @@ func ParseListFrontendDeploymentsClientResponse(rsp *http.Response) (*ListFronte } 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 } -// ParseCreateFrontendDeploymentClientResponse parses an HTTP response from a CreateFrontendDeploymentWithResponse call -func ParseCreateFrontendDeploymentClientResponse(rsp *http.Response) (*CreateFrontendDeploymentClientResponse, error) { +// ParseDeleteFrontendDomainClientResponse parses an HTTP response from a DeleteFrontendDomainWithResponse call +func ParseDeleteFrontendDomainClientResponse(rsp *http.Response) (*DeleteFrontendDomainClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &CreateFrontendDeploymentClientResponse{ + response := &DeleteFrontendDomainClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Frontend - 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 { @@ -78736,53 +81006,93 @@ func ParseCreateFrontendDeploymentClientResponse(rsp *http.Response) (*CreateFro } response.JSON409 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + 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.JSON429 = &dest + response.JSON500 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + } + + return response, nil +} + +// ParseGetFrontendDomainClientResponse parses an HTTP response from a GetFrontendDomainWithResponse call +func ParseGetFrontendDomainClientResponse(rsp *http.Response) (*GetFrontendDomainClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetFrontendDomainClientResponse{ + 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 == 401: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON500 = &dest + response.JSON401 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 501: + 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.JSON501 = &dest + response.JSON403 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + 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.JSON503 = &dest + response.JSON404 = &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 } -// ParseDeleteFrontendCustomDomainClientResponse parses an HTTP response from a DeleteFrontendCustomDomainWithResponse call -func ParseDeleteFrontendCustomDomainClientResponse(rsp *http.Response) (*DeleteFrontendCustomDomainClientResponse, error) { +// ParseUpdateFrontendDomainClientResponse parses an HTTP response from a UpdateFrontendDomainWithResponse call +func ParseUpdateFrontendDomainClientResponse(rsp *http.Response) (*UpdateFrontendDomainClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &DeleteFrontendCustomDomainClientResponse{ + response := &UpdateFrontendDomainClientResponse{ 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 == 400: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -78830,34 +81140,27 @@ func ParseDeleteFrontendCustomDomainClientResponse(rsp *http.Response) (*DeleteF return response, nil } -// ParseGetFrontendCustomDomainClientResponse parses an HTTP response from a GetFrontendCustomDomainWithResponse call -func ParseGetFrontendCustomDomainClientResponse(rsp *http.Response) (*GetFrontendCustomDomainClientResponse, error) { +// ParseListFrontendRoutesClientResponse parses an HTTP response from a ListFrontendRoutesWithResponse call +func ParseListFrontendRoutesClientResponse(rsp *http.Response) (*ListFrontendRoutesClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetFrontendCustomDomainClientResponse{ + response := &ListFrontendRoutesClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FrontendCustomDomainResponse + var dest FrontendRouteList 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 { @@ -78872,13 +81175,6 @@ func ParseGetFrontendCustomDomainClientResponse(rsp *http.Response) (*GetFronten } 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 == 500: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -78891,29 +81187,22 @@ func ParseGetFrontendCustomDomainClientResponse(rsp *http.Response) (*GetFronten return response, nil } -// ParseCreateFrontendCustomDomainClientResponse parses an HTTP response from a CreateFrontendCustomDomainWithResponse call -func ParseCreateFrontendCustomDomainClientResponse(rsp *http.Response) (*CreateFrontendCustomDomainClientResponse, error) { +// ParseCreateFrontendRouteClientResponse parses an HTTP response from a CreateFrontendRouteWithResponse call +func ParseCreateFrontendRouteClientResponse(rsp *http.Response) (*CreateFrontendRouteClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &CreateFrontendCustomDomainClientResponse{ + response := &CreateFrontendRouteClientResponse{ 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 + var dest FrontendRoute if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -78948,7 +81237,7 @@ func ParseCreateFrontendCustomDomainClientResponse(rsp *http.Response) (*CreateF response.JSON404 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: - var dest FrontendCustomDomainConflictError + var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -78961,39 +81250,25 @@ func ParseCreateFrontendCustomDomainClientResponse(rsp *http.Response) (*CreateF } 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 } -// ParseListFrontendDomainsClientResponse parses an HTTP response from a ListFrontendDomainsWithResponse call -func ParseListFrontendDomainsClientResponse(rsp *http.Response) (*ListFrontendDomainsClientResponse, error) { +// ParseDeleteFrontendRouteClientResponse parses an HTTP response from a DeleteFrontendRouteWithResponse call +func ParseDeleteFrontendRouteClientResponse(rsp *http.Response) (*DeleteFrontendRouteClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListFrontendDomainsClientResponse{ + response := &DeleteFrontendRouteClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FrontendCustomDomainList - 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 == 401: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -79027,34 +81302,27 @@ func ParseListFrontendDomainsClientResponse(rsp *http.Response) (*ListFrontendDo return response, nil } -// ParseCreateFrontendDomainClientResponse parses an HTTP response from a CreateFrontendDomainWithResponse call -func ParseCreateFrontendDomainClientResponse(rsp *http.Response) (*CreateFrontendDomainClientResponse, error) { +// ParseUpdateFrontendRouteClientResponse parses an HTTP response from a UpdateFrontendRouteWithResponse call +func ParseUpdateFrontendRouteClientResponse(rsp *http.Response) (*UpdateFrontendRouteClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &CreateFrontendDomainClientResponse{ + response := &UpdateFrontendRouteClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FrontendCustomDomainResponse + var dest FrontendRoute 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 { @@ -79084,7 +81352,7 @@ func ParseCreateFrontendDomainClientResponse(rsp *http.Response) (*CreateFronten response.JSON404 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: - var dest FrontendCustomDomainConflictError + var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -79097,32 +81365,86 @@ func ParseCreateFrontendDomainClientResponse(rsp *http.Response) (*CreateFronten } response.JSON500 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + } + + return response, nil +} + +// ParseListFrontendFunctionRoutesClientResponse parses an HTTP response from a ListFrontendFunctionRoutesWithResponse call +func ParseListFrontendFunctionRoutesClientResponse(rsp *http.Response) (*ListFrontendFunctionRoutesClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &ListFrontendFunctionRoutesClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest FrontendFunctionRouteList + 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 == 401: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON503 = &dest + 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 } -// ParseDeleteFrontendDomainClientResponse parses an HTTP response from a DeleteFrontendDomainWithResponse call -func ParseDeleteFrontendDomainClientResponse(rsp *http.Response) (*DeleteFrontendDomainClientResponse, error) { +// ParseCreateFrontendFunctionRouteClientResponse parses an HTTP response from a CreateFrontendFunctionRouteWithResponse call +func ParseCreateFrontendFunctionRouteClientResponse(rsp *http.Response) (*CreateFrontendFunctionRouteClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &DeleteFrontendDomainClientResponse{ + response := &CreateFrontendFunctionRouteClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: + var dest FrontendFunctionRoute + 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 { @@ -79163,27 +81485,20 @@ func ParseDeleteFrontendDomainClientResponse(rsp *http.Response) (*DeleteFronten return response, nil } -// ParseGetFrontendDomainClientResponse parses an HTTP response from a GetFrontendDomainWithResponse call -func ParseGetFrontendDomainClientResponse(rsp *http.Response) (*GetFrontendDomainClientResponse, error) { +// ParseDeleteFrontendFunctionRouteClientResponse parses an HTTP response from a DeleteFrontendFunctionRouteWithResponse call +func ParseDeleteFrontendFunctionRouteClientResponse(rsp *http.Response) (*DeleteFrontendFunctionRouteClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetFrontendDomainClientResponse{ + response := &DeleteFrontendFunctionRouteClientResponse{ 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 == 401: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -79217,22 +81532,22 @@ func ParseGetFrontendDomainClientResponse(rsp *http.Response) (*GetFrontendDomai return response, nil } -// ParseUpdateFrontendDomainClientResponse parses an HTTP response from a UpdateFrontendDomainWithResponse call -func ParseUpdateFrontendDomainClientResponse(rsp *http.Response) (*UpdateFrontendDomainClientResponse, error) { +// ParseUpdateFrontendFunctionRouteClientResponse parses an HTTP response from a UpdateFrontendFunctionRouteWithResponse call +func ParseUpdateFrontendFunctionRouteClientResponse(rsp *http.Response) (*UpdateFrontendFunctionRouteClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &UpdateFrontendDomainClientResponse{ + response := &UpdateFrontendFunctionRouteClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FrontendCustomDomainResponse + var dest FrontendFunctionRoute if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -79285,27 +81600,34 @@ func ParseUpdateFrontendDomainClientResponse(rsp *http.Response) (*UpdateFronten return response, nil } -// ParseListFrontendRoutesClientResponse parses an HTTP response from a ListFrontendRoutesWithResponse call -func ParseListFrontendRoutesClientResponse(rsp *http.Response) (*ListFrontendRoutesClientResponse, 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 := &ListFrontendRoutesClientResponse{ + response := &RedeployFrontendClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FrontendRouteList + var dest Frontend 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 { @@ -79320,6 +81642,20 @@ func ParseListFrontendRoutesClientResponse(rsp *http.Response) (*ListFrontendRou } 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 { @@ -79327,31 +81663,38 @@ func ParseListFrontendRoutesClientResponse(rsp *http.Response) (*ListFrontendRou } 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 } -// ParseCreateFrontendRouteClientResponse parses an HTTP response from a CreateFrontendRouteWithResponse call -func ParseCreateFrontendRouteClientResponse(rsp *http.Response) (*CreateFrontendRouteClientResponse, error) { +// ParseGetFrontendServingClientResponse parses an HTTP response from a GetFrontendServingWithResponse call +func ParseGetFrontendServingClientResponse(rsp *http.Response) (*GetFrontendServingClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &CreateFrontendRouteClientResponse{ + response := &GetFrontendServingClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest FrontendRoute + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest FrontendServing if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON201 = &dest + response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest Error @@ -79381,13 +81724,6 @@ func ParseCreateFrontendRouteClientResponse(rsp *http.Response) (*CreateFrontend } 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 { @@ -79400,20 +81736,34 @@ func ParseCreateFrontendRouteClientResponse(rsp *http.Response) (*CreateFrontend return response, nil } -// ParseDeleteFrontendRouteClientResponse parses an HTTP response from a DeleteFrontendRouteWithResponse call -func ParseDeleteFrontendRouteClientResponse(rsp *http.Response) (*DeleteFrontendRouteClientResponse, error) { +// ParseRollbackFrontendServingClientResponse parses an HTTP response from a RollbackFrontendServingWithResponse call +func ParseRollbackFrontendServingClientResponse(rsp *http.Response) (*RollbackFrontendServingClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &DeleteFrontendRouteClientResponse{ + response := &RollbackFrontendServingClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest FrontendServing + 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 { @@ -79435,6 +81785,20 @@ func ParseDeleteFrontendRouteClientResponse(rsp *http.Response) (*DeleteFrontend } 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 == 413: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON413 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -79447,22 +81811,22 @@ func ParseDeleteFrontendRouteClientResponse(rsp *http.Response) (*DeleteFrontend return response, nil } -// ParseUpdateFrontendRouteClientResponse parses an HTTP response from a UpdateFrontendRouteWithResponse call -func ParseUpdateFrontendRouteClientResponse(rsp *http.Response) (*UpdateFrontendRouteClientResponse, 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 := &UpdateFrontendRouteClientResponse{ + response := &GetFrontendUsageHistoryClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FrontendRoute + var dest FrontendUsageHistoryResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -79496,52 +81860,85 @@ func ParseUpdateFrontendRouteClientResponse(rsp *http.Response) (*UpdateFrontend } response.JSON404 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: + 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.JSON409 = &dest + response.JSON500 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + } + + return response, nil +} + +// ParseListFunctionsClientResponse parses an HTTP response from a ListFunctionsWithResponse call +func ParseListFunctionsClientResponse(rsp *http.Response) (*ListFunctionsClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &ListFunctionsClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest PaginatedFunctions + 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 == 404: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON500 = &dest + response.JSON404 = &dest } return response, nil } -// ParseListFrontendFunctionRoutesClientResponse parses an HTTP response from a ListFrontendFunctionRoutesWithResponse call -func ParseListFrontendFunctionRoutesClientResponse(rsp *http.Response) (*ListFrontendFunctionRoutesClientResponse, error) { +// ParseCreateFunctionClientResponse parses an HTTP response from a CreateFunctionWithResponse call +func ParseCreateFunctionClientResponse(rsp *http.Response) (*CreateFunctionClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListFrontendFunctionRoutesClientResponse{ + response := &CreateFunctionClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FrontendFunctionRouteList + var dest Function 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 == 401: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: + var dest Function + 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.JSON401 = &dest + response.JSON400 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: var dest Error @@ -79550,6 +81947,20 @@ func ParseListFrontendFunctionRoutesClientResponse(rsp *http.Response) (*ListFro } response.JSON403 = &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 == 429: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -79557,31 +81968,45 @@ func ParseListFrontendFunctionRoutesClientResponse(rsp *http.Response) (*ListFro } 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 } -// ParseCreateFrontendFunctionRouteClientResponse parses an HTTP response from a CreateFrontendFunctionRouteWithResponse call -func ParseCreateFrontendFunctionRouteClientResponse(rsp *http.Response) (*CreateFrontendFunctionRouteClientResponse, error) { +// ParseCreateFunctionsBatchClientResponse parses an HTTP response from a CreateFunctionsBatchWithResponse call +func ParseCreateFunctionsBatchClientResponse(rsp *http.Response) (*CreateFunctionsBatchClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &CreateFrontendFunctionRouteClientResponse{ + response := &CreateFunctionsBatchClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest FrontendFunctionRoute + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 202: + var dest BatchFunctionDeployResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON201 = &dest + response.JSON202 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 207: + var dest BatchFunctionDeployResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON207 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest Error @@ -79590,73 +82015,125 @@ func ParseCreateFrontendFunctionRouteClientResponse(rsp *http.Response) (*Create } response.JSON400 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + 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.JSON401 = &dest + response.JSON403 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: + 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.JSON403 = &dest + response.JSON409 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON404 = &dest + response.JSON429 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: + 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.JSON409 = &dest + response.JSON503 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + } + + 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) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &DeleteFunctionClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + 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.JSON500 = &dest + response.JSON404 = &dest } return response, nil } -// ParseDeleteFrontendFunctionRouteClientResponse parses an HTTP response from a DeleteFrontendFunctionRouteWithResponse call -func ParseDeleteFrontendFunctionRouteClientResponse(rsp *http.Response) (*DeleteFrontendFunctionRouteClientResponse, error) { +// ParseGetFunctionClientResponse parses an HTTP response from a GetFunctionWithResponse call +func ParseGetFunctionClientResponse(rsp *http.Response) (*GetFunctionClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &DeleteFrontendFunctionRouteClientResponse{ + response := &GetFunctionClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Function + 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 == 404: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON401 = &dest + response.JSON404 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: + } + + return response, nil +} + +// ParseUpdateFunctionClientResponse parses an HTTP response from a UpdateFunctionWithResponse call +func ParseUpdateFunctionClientResponse(rsp *http.Response) (*UpdateFunctionClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &UpdateFunctionClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Function + 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.JSON403 = &dest + response.JSON400 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: var dest Error @@ -79665,34 +82142,34 @@ func ParseDeleteFrontendFunctionRouteClientResponse(rsp *http.Response) (*Delete } response.JSON404 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + 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.JSON500 = &dest + response.JSON409 = &dest } return response, nil } -// ParseUpdateFrontendFunctionRouteClientResponse parses an HTTP response from a UpdateFrontendFunctionRouteWithResponse call -func ParseUpdateFrontendFunctionRouteClientResponse(rsp *http.Response) (*UpdateFrontendFunctionRouteClientResponse, error) { +// ParseListFunctionCandidatesClientResponse parses an HTTP response from a ListFunctionCandidatesWithResponse call +func ParseListFunctionCandidatesClientResponse(rsp *http.Response) (*ListFunctionCandidatesClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &UpdateFrontendFunctionRouteClientResponse{ + response := &ListFunctionCandidatesClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FrontendFunctionRoute + var dest FunctionCandidateList if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -79726,13 +82203,6 @@ func ParseUpdateFrontendFunctionRouteClientResponse(rsp *http.Response) (*Update } 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 { @@ -79745,26 +82215,26 @@ func ParseUpdateFrontendFunctionRouteClientResponse(rsp *http.Response) (*Update return response, nil } -// ParseRedeployFrontendClientResponse parses an HTTP response from a RedeployFrontendWithResponse call -func ParseRedeployFrontendClientResponse(rsp *http.Response) (*RedeployFrontendClientResponse, error) { +// ParseCreateFunctionCandidateClientResponse parses an HTTP response from a CreateFunctionCandidateWithResponse call +func ParseCreateFunctionCandidateClientResponse(rsp *http.Response) (*CreateFunctionCandidateClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &RedeployFrontendClientResponse{ + response := &CreateFunctionCandidateClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Frontend + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 202: + var dest FunctionCandidate if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON200 = &dest + response.JSON202 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest Error @@ -79801,6 +82271,20 @@ func ParseRedeployFrontendClientResponse(rsp *http.Response) (*RedeployFrontendC } response.JSON409 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 413: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON413 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -79820,27 +82304,20 @@ func ParseRedeployFrontendClientResponse(rsp *http.Response) (*RedeployFrontendC return response, nil } -// ParseGetFrontendServingClientResponse parses an HTTP response from a GetFrontendServingWithResponse call -func ParseGetFrontendServingClientResponse(rsp *http.Response) (*GetFrontendServingClientResponse, error) { +// ParseDeleteFunctionCandidateClientResponse parses an HTTP response from a DeleteFunctionCandidateWithResponse call +func ParseDeleteFunctionCandidateClientResponse(rsp *http.Response) (*DeleteFunctionCandidateClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetFrontendServingClientResponse{ + response := &DeleteFunctionCandidateClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FrontendServing - 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 { @@ -79869,6 +82346,13 @@ func ParseGetFrontendServingClientResponse(rsp *http.Response) (*GetFrontendServ } 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 { @@ -79881,22 +82365,22 @@ func ParseGetFrontendServingClientResponse(rsp *http.Response) (*GetFrontendServ return response, nil } -// ParseRollbackFrontendServingClientResponse parses an HTTP response from a RollbackFrontendServingWithResponse call -func ParseRollbackFrontendServingClientResponse(rsp *http.Response) (*RollbackFrontendServingClientResponse, error) { +// ParseGetFunctionCandidateClientResponse parses an HTTP response from a GetFunctionCandidateWithResponse call +func ParseGetFunctionCandidateClientResponse(rsp *http.Response) (*GetFunctionCandidateClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &RollbackFrontendServingClientResponse{ + response := &GetFunctionCandidateClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FrontendServing + var dest FunctionCandidate if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -79930,20 +82414,6 @@ func ParseRollbackFrontendServingClientResponse(rsp *http.Response) (*RollbackFr } 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 == 413: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON413 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -79956,22 +82426,22 @@ func ParseRollbackFrontendServingClientResponse(rsp *http.Response) (*RollbackFr return response, nil } -// ParseGetFrontendUsageHistoryClientResponse parses an HTTP response from a GetFrontendUsageHistoryWithResponse call -func ParseGetFrontendUsageHistoryClientResponse(rsp *http.Response) (*GetFrontendUsageHistoryClientResponse, error) { +// ParseListFunctionCandidateDeploymentsClientResponse parses an HTTP response from a ListFunctionCandidateDeploymentsWithResponse call +func ParseListFunctionCandidateDeploymentsClientResponse(rsp *http.Response) (*ListFunctionCandidateDeploymentsClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetFrontendUsageHistoryClientResponse{ + response := &ListFunctionCandidateDeploymentsClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FrontendUsageHistoryResponse + var dest FunctionCandidateDeploymentList if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -80017,87 +82487,68 @@ func ParseGetFrontendUsageHistoryClientResponse(rsp *http.Response) (*GetFronten return response, nil } -// ParseListFunctionsClientResponse parses an HTTP response from a ListFunctionsWithResponse call -func ParseListFunctionsClientResponse(rsp *http.Response) (*ListFunctionsClientResponse, error) { +// ParseRedeployFunctionCandidateClientResponse parses an HTTP response from a RedeployFunctionCandidateWithResponse call +func ParseRedeployFunctionCandidateClientResponse(rsp *http.Response) (*RedeployFunctionCandidateClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListFunctionsClientResponse{ + response := &RedeployFunctionCandidateClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest PaginatedFunctions + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 202: + var dest FunctionCandidateDeployment if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON200 = &dest + response.JSON202 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + 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.JSON404 = &dest - - } - - return response, nil -} - -// ParseCreateFunctionClientResponse parses an HTTP response from a CreateFunctionWithResponse call -func ParseCreateFunctionClientResponse(rsp *http.Response) (*CreateFunctionClientResponse, error) { - bodyBytes, err := io.ReadAll(rsp.Body) - defer func() { _ = rsp.Body.Close() }() - if err != nil { - return nil, err - } - - response := &CreateFunctionClientResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + response.JSON400 = &dest - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Function + 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.JSON200 = &dest + response.JSON401 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest Function + 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.JSON201 = &dest + response.JSON403 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + 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.JSON400 = &dest + response.JSON404 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: + 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.JSON403 = &dest + response.JSON409 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 413: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON409 = &dest + response.JSON413 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: var dest Error @@ -80125,40 +82576,40 @@ func ParseCreateFunctionClientResponse(rsp *http.Response) (*CreateFunctionClien return response, nil } -// ParseCreateFunctionsBatchClientResponse parses an HTTP response from a CreateFunctionsBatchWithResponse call -func ParseCreateFunctionsBatchClientResponse(rsp *http.Response) (*CreateFunctionsBatchClientResponse, error) { +// ParsePromoteFunctionCandidateClientResponse parses an HTTP response from a PromoteFunctionCandidateWithResponse call +func ParsePromoteFunctionCandidateClientResponse(rsp *http.Response) (*PromoteFunctionCandidateClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &CreateFunctionsBatchClientResponse{ + response := &PromoteFunctionCandidateClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 202: - var dest BatchFunctionDeployResponse + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest FunctionServing if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON202 = &dest + response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 207: - var dest BatchFunctionDeployResponse + 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.JSON207 = &dest + response.JSON400 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + 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.JSON400 = &dest + response.JSON401 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: var dest Error @@ -80167,6 +82618,13 @@ func ParseCreateFunctionsBatchClientResponse(rsp *http.Response) (*CreateFunctio } 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 { @@ -80174,39 +82632,46 @@ func ParseCreateFunctionsBatchClientResponse(rsp *http.Response) (*CreateFunctio } response.JSON409 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 413: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON429 = &dest + response.JSON413 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + 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.JSON503 = &dest + response.JSON500 = &dest } return response, nil } -// ParseDeleteFunctionClientResponse parses an HTTP response from a DeleteFunctionWithResponse call -func ParseDeleteFunctionClientResponse(rsp *http.Response) (*DeleteFunctionClientResponse, error) { +// ParseListFunctionDeploymentsClientResponse parses an HTTP response from a ListFunctionDeploymentsWithResponse call +func ParseListFunctionDeploymentsClientResponse(rsp *http.Response) (*ListFunctionDeploymentsClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &DeleteFunctionClientResponse{ + response := &ListFunctionDeploymentsClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest PaginatedFunctionDeployments + 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 == 404: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -80219,22 +82684,22 @@ func ParseDeleteFunctionClientResponse(rsp *http.Response) (*DeleteFunctionClien return response, nil } -// ParseGetFunctionClientResponse parses an HTTP response from a GetFunctionWithResponse call -func ParseGetFunctionClientResponse(rsp *http.Response) (*GetFunctionClientResponse, error) { +// ParseListFunctionSchedulersClientResponse parses an HTTP response from a ListFunctionSchedulersWithResponse call +func ParseListFunctionSchedulersClientResponse(rsp *http.Response) (*ListFunctionSchedulersClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetFunctionClientResponse{ + response := &ListFunctionSchedulersClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Function + var dest FunctionSchedulerListResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -80252,26 +82717,26 @@ func ParseGetFunctionClientResponse(rsp *http.Response) (*GetFunctionClientRespo return response, nil } -// ParseUpdateFunctionClientResponse parses an HTTP response from a UpdateFunctionWithResponse call -func ParseUpdateFunctionClientResponse(rsp *http.Response) (*UpdateFunctionClientResponse, error) { +// ParseCreateFunctionSchedulerClientResponse parses an HTTP response from a CreateFunctionSchedulerWithResponse call +func ParseCreateFunctionSchedulerClientResponse(rsp *http.Response) (*CreateFunctionSchedulerClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &UpdateFunctionClientResponse{ + response := &CreateFunctionSchedulerClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Function + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: + var dest FunctionScheduler if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON200 = &dest + response.JSON201 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest Error @@ -80280,46 +82745,39 @@ func ParseUpdateFunctionClientResponse(rsp *http.Response) (*UpdateFunctionClien } 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 == 403: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON404 = &dest + response.JSON403 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: + 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.JSON409 = &dest + response.JSON404 = &dest } return response, nil } -// ParseListFunctionDeploymentsClientResponse parses an HTTP response from a ListFunctionDeploymentsWithResponse call -func ParseListFunctionDeploymentsClientResponse(rsp *http.Response) (*ListFunctionDeploymentsClientResponse, error) { +// ParseDeleteFunctionSchedulerClientResponse parses an HTTP response from a DeleteFunctionSchedulerWithResponse call +func ParseDeleteFunctionSchedulerClientResponse(rsp *http.Response) (*DeleteFunctionSchedulerClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListFunctionDeploymentsClientResponse{ + response := &DeleteFunctionSchedulerClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest PaginatedFunctionDeployments - 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 == 404: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -80332,22 +82790,22 @@ func ParseListFunctionDeploymentsClientResponse(rsp *http.Response) (*ListFuncti return response, nil } -// ParseListFunctionSchedulersClientResponse parses an HTTP response from a ListFunctionSchedulersWithResponse call -func ParseListFunctionSchedulersClientResponse(rsp *http.Response) (*ListFunctionSchedulersClientResponse, error) { +// ParseGetFunctionSchedulerClientResponse parses an HTTP response from a GetFunctionSchedulerWithResponse call +func ParseGetFunctionSchedulerClientResponse(rsp *http.Response) (*GetFunctionSchedulerClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &ListFunctionSchedulersClientResponse{ + response := &GetFunctionSchedulerClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FunctionSchedulerListResponse + var dest FunctionScheduler if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -80365,26 +82823,26 @@ func ParseListFunctionSchedulersClientResponse(rsp *http.Response) (*ListFunctio return response, nil } -// ParseCreateFunctionSchedulerClientResponse parses an HTTP response from a CreateFunctionSchedulerWithResponse call -func ParseCreateFunctionSchedulerClientResponse(rsp *http.Response) (*CreateFunctionSchedulerClientResponse, error) { +// ParseUpdateFunctionSchedulerClientResponse parses an HTTP response from a UpdateFunctionSchedulerWithResponse call +func ParseUpdateFunctionSchedulerClientResponse(rsp *http.Response) (*UpdateFunctionSchedulerClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &CreateFunctionSchedulerClientResponse{ + response := &UpdateFunctionSchedulerClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: var dest FunctionScheduler if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON201 = &dest + response.JSON200 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest Error @@ -80393,13 +82851,6 @@ func ParseCreateFunctionSchedulerClientResponse(rsp *http.Response) (*CreateFunc } response.JSON400 = &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 { @@ -80412,52 +82863,47 @@ func ParseCreateFunctionSchedulerClientResponse(rsp *http.Response) (*CreateFunc return response, nil } -// ParseDeleteFunctionSchedulerClientResponse parses an HTTP response from a DeleteFunctionSchedulerWithResponse call -func ParseDeleteFunctionSchedulerClientResponse(rsp *http.Response) (*DeleteFunctionSchedulerClientResponse, error) { +// ParseGetFunctionServingClientResponse parses an HTTP response from a GetFunctionServingWithResponse call +func ParseGetFunctionServingClientResponse(rsp *http.Response) (*GetFunctionServingClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &DeleteFunctionSchedulerClientResponse{ + response := &GetFunctionServingClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: - var dest Error + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest FunctionServing if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON404 = &dest - - } - - return response, nil -} + response.JSON200 = &dest -// ParseGetFunctionSchedulerClientResponse parses an HTTP response from a GetFunctionSchedulerWithResponse call -func ParseGetFunctionSchedulerClientResponse(rsp *http.Response) (*GetFunctionSchedulerClientResponse, error) { - bodyBytes, err := io.ReadAll(rsp.Body) - defer func() { _ = rsp.Body.Close() }() - if err != nil { - return nil, err - } + 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 - response := &GetFunctionSchedulerClientResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } + 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 - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FunctionScheduler + 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.JSON200 = &dest + response.JSON403 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: var dest Error @@ -80466,27 +82912,34 @@ func ParseGetFunctionSchedulerClientResponse(rsp *http.Response) (*GetFunctionSc } response.JSON404 = &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 } -// ParseUpdateFunctionSchedulerClientResponse parses an HTTP response from a UpdateFunctionSchedulerWithResponse call -func ParseUpdateFunctionSchedulerClientResponse(rsp *http.Response) (*UpdateFunctionSchedulerClientResponse, error) { +// ParseRollbackFunctionServingClientResponse parses an HTTP response from a RollbackFunctionServingWithResponse call +func ParseRollbackFunctionServingClientResponse(rsp *http.Response) (*RollbackFunctionServingClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &UpdateFunctionSchedulerClientResponse{ + response := &RollbackFunctionServingClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FunctionScheduler + var dest FunctionServing if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -80499,6 +82952,20 @@ func ParseUpdateFunctionSchedulerClientResponse(rsp *http.Response) (*UpdateFunc } 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 { @@ -80506,6 +82973,27 @@ func ParseUpdateFunctionSchedulerClientResponse(rsp *http.Response) (*UpdateFunc } 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 == 413: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON413 = &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 @@ -82623,6 +85111,20 @@ func ParseCreateServiceKeyClientResponse(rsp *http.Response) (*CreateServiceKeyC } response.JSON400 = &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 { @@ -82731,6 +85233,13 @@ func ParseReplaceSharedVariablesClientResponse(rsp *http.Response) (*ReplaceShar } switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest SharedVariablesReplaceResult + 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 { @@ -83636,6 +86145,13 @@ func ParseCreateVariableClientResponse(rsp *http.Response) (*CreateVariableClien } response.JSON400 = &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 == 503: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -83669,6 +86185,13 @@ func ParseDeleteVariableClientResponse(rsp *http.Response) (*DeleteVariableClien } 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 + } return response, nil @@ -83742,6 +86265,13 @@ func ParseUpdateVariableClientResponse(rsp *http.Response) (*UpdateVariableClien } 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 == 503: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -83787,6 +86317,88 @@ func ParseDownloadPublicFileClientResponse(rsp *http.Response) (*DownloadPublicF return response, nil } +// ParsePublishRealtimeMessageClientResponse parses an HTTP response from a PublishRealtimeMessageWithResponse call +func ParsePublishRealtimeMessageClientResponse(rsp *http.Response) (*PublishRealtimeMessageClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &PublishRealtimeMessageClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 202: + var dest RealtimePublishResult + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON202 = &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 == 413: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON413 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON429 = &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 +} + // ParseCreateSandboxFileArchiveClientResponse parses an HTTP response from a CreateSandboxFileArchiveWithResponse call func ParseCreateSandboxFileArchiveClientResponse(rsp *http.Response) (*CreateSandboxFileArchiveClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) diff --git a/openapi/cli-surface.yaml b/openapi/cli-surface.yaml new file mode 100644 index 00000000..320af9ce --- /dev/null +++ b/openapi/cli-surface.yaml @@ -0,0 +1,497 @@ +# How the volcano CLI (Kong/volcano-cli) reaches each operation in +# api/openapi.yaml. Every route and dashboard action needs a CLI path; a missing +# one is a gap to close, not an exception. +# +# Each operation, keyed by method and path as the spec writes them, has +# exactly one of: +# +# command the full volcano command path that calls it, or that gives the +# same result through another operation; `flags` optionally names +# the flags that select it +# manifest the volcano-config.yaml section, when `volcano cloud config +# deploy` is the only way the CLI reaches it +# reason one of `reasons` below; a gap links its `issue`, and a retiring +# route links the `pr` that removes it +# +# TestEveryOperationHasACLIEntry fails until a new operation is listed. The +# volcano CLI vendors this file and checks that each command exists. + +reasons: + data_plane: An application, SDK or end user calls it with an application credential or none. + client_protocol: A protocol endpoint other clients speak directly, such as /mcp, the OpenAPI document and capability discovery. + browser: A redirect leg a CLI flow drives indirectly, such as an OAuth callback around a device-style poll. + gap: A command should call it and none does yet. + retiring: The route is being removed. + +operations: + 'GET /sandboxes/presets': { command: volcano cloud sandboxes presets } + 'GET /projects/{id}/sandboxes': { command: volcano cloud sandboxes templates list } + 'POST /projects/{id}/sandboxes': { command: volcano cloud sandboxes templates create } + 'GET /projects/{id}/sandboxes/{sandboxId}': { command: volcano cloud sandboxes templates get } + 'PATCH /projects/{id}/sandboxes/{sandboxId}': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2429 } + 'DELETE /projects/{id}/sandboxes/{sandboxId}': { command: volcano cloud sandboxes templates delete } + 'POST /projects/{id}/sandboxes/{sandboxId}/deployments': { command: volcano cloud sandboxes templates deploy } + 'GET /projects/{id}/sandboxes/{sandboxId}/deployments': { command: volcano cloud sandboxes deployments list } + 'GET /projects/{id}/sandboxes/{sandboxId}/deployments/{deploymentId}': + { command: volcano cloud sandboxes deployments get } + 'GET /projects/{id}/sandboxes/{sandboxId}/deployments/{deploymentId}/logs': + { command: volcano cloud sandboxes deployments logs } + 'GET /projects/{id}/sandboxes/{sandboxId}/deployments/{deploymentId}/source': + { command: volcano cloud sandboxes deployments source } + 'GET /projects/{id}/sandbox-sessions': { command: volcano cloud sandboxes sessions } + 'POST /projects/{id}/sandbox-sessions': { command: volcano cloud sandboxes run } + 'POST /projects/{id}/sandbox-executions': { command: volcano cloud sandboxes exec } + 'GET /sandbox-sessions/{sessionId}': { command: volcano cloud sandboxes get } + 'DELETE /sandbox-sessions/{sessionId}': { command: volcano cloud sandboxes terminate } + 'POST /sandbox-sessions/{sessionId}/suspend': { command: volcano cloud sandboxes suspend } + 'POST /sandbox-sessions/{sessionId}/resume': { command: volcano cloud sandboxes resume } + 'POST /sandbox-sessions/{sessionId}/exec': { command: volcano cloud sandboxes exec } + 'POST /sandbox-sessions/{sessionId}/files/read': { command: volcano cloud sandboxes files read } + 'POST /sandbox-sessions/{sessionId}/files/write': { command: volcano cloud sandboxes files write } + 'POST /sandbox-file-archives': { command: volcano cloud sandboxes files upload } + 'POST /sandbox-file-parts': { command: volcano cloud sandboxes files upload } + 'GET /sandbox-session-files': { command: volcano cloud sandboxes files list } + 'PUT /sandbox-sessions/{sessionId}/grants/{subjectId}': { reason: data_plane } + 'DELETE /sandbox-sessions/{sessionId}/grants/{subjectId}': { reason: data_plane } + 'POST /sandbox-sessions/{sessionId}/access': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2429 } + 'POST /user/imports/connect': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2426 } + 'GET /imports/{provider}/callback': { reason: browser } + 'GET /user/imports/connections': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2426 } + 'DELETE /user/imports/connections/{connectionId}': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2426 } + 'GET /imports/{provider}/sources': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2426 } + 'POST /imports/{provider}/preflight': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2426 } + 'POST /imports/{provider}/runs': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2426 } + 'GET /imports/{provider}/runs/{runId}': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2426 } + 'POST /user/git/connect': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2412 } + 'GET /user/git/connections': { command: volcano git connect } + 'DELETE /user/git/connections/{connectionId}': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2428 } + 'GET /user/git/connections/{connectionId}/installations': { command: volcano git connect } + 'GET /user/git/connections/{connectionId}/installations/{installationId}/repositories': + { command: volcano git connect } + 'GET /user/domains': { command: volcano cloud domains list } + 'POST /user/domains': { command: volcano cloud domains verify } + 'DELETE /user/domains/{domain}': { command: volcano cloud domains remove } + 'DELETE /user/tokens/current': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2639 } + 'GET /user/sessions': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2639 } + 'DELETE /user/sessions': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2639 } + 'DELETE /user/sessions/{sessionId}': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2639 } + 'GET /github/callback': { reason: browser } + 'POST /user/slack/installations': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2958 } + 'POST /user/slack/connections': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2958 } + 'GET /user/slack/connections': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2958 } + 'DELETE /user/slack/connections/{connectionId}': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2958 } + 'GET /user/slack/channels': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2958 } + 'GET /slack/callback': { reason: browser } + 'GET /connectors': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2958 } + 'POST /connectors': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2958 } + 'GET /connectors/{connector_id}': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2958 } + 'DELETE /connectors/{connector_id}': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2958 } + 'GET /projects': { command: volcano projects } + 'POST /projects': { command: volcano projects create } + 'GET /projects/{id}': { command: volcano projects get } + 'PATCH /projects/{id}': { command: volcano projects rename } + 'DELETE /projects/{id}': { command: volcano projects delete } + 'GET /projects/{id}/health': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2420 } + 'POST /projects/{id}/metrics/query': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2420 } + 'GET /projects/{id}/logo': { reason: data_plane } + 'POST /projects/{id}/logo': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2425 } + 'DELETE /projects/{id}/logo': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2425 } + 'GET /projects/{id}/usage': { command: volcano projects usage } + 'PUT /projects/{id}/shared-variables': { manifest: shared_variables } + 'PUT /projects/{id}/frontend-shared-variables': { manifest: frontend_shared_variables } + 'GET /projects/{id}/config': { command: volcano cloud config pull } + 'PUT /projects/{id}/config': { command: volcano cloud config deploy } + 'GET /projects/{id}/source-export': { command: volcano cloud deploy } + 'POST /projects/{id}/source-export': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2428 } + 'DELETE /projects/{id}/source-export': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2428 } + 'PUT /projects/{id}/git-connection/production-branch': { command: volcano git production-branch } + 'PUT /projects/{id}/git-connection/root-directory': { command: volcano git root-directory } + 'GET /projects/{id}/git-connection/owner-push': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2428 } + 'GET /projects/{id}/git-connection': { command: volcano git status } + 'PUT /projects/{id}/git-connection': { command: volcano git connect } + 'DELETE /projects/{id}/git-connection': { command: volcano git disconnect } + 'GET /projects/{id}/git-deploy-settings': { command: volcano git status } + 'PUT /projects/{id}/git-deploy-settings': { command: volcano git auto-deploy } + 'GET /projects/{id}/git-deployment-runs': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2640 } + 'GET /projects/{id}/git-deployment-runs/{runId}': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2640 } + 'GET /projects/{id}/databases/{databaseName}/queries': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2420 } + 'GET /deployments': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2420 } + 'GET /shares': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/1940 } + 'POST /shares': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/1940 } + 'GET /shares/{share_id}': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/1940 } + 'PATCH /shares/{share_id}': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/1940 } + 'DELETE /shares/{share_id}': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/1940 } + 'GET /share-release-drafts': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/1940 } + 'GET /share-releases': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/1940 } + 'POST /share-releases': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/1940 } + 'GET /share-stats': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/1940 } + 'GET /share-previews/{share_id}': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/1940 } + 'POST /forks': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/1940 } + 'GET /projects/{id}/deployments': { command: volcano cloud deploy } + 'GET /projects/{id}/deployments/summary': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2420 } + 'GET /projects/{id}/domains': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2430 } + 'GET /projects/{id}/functions': { command: volcano cloud functions list } + 'POST /projects/{id}/functions': { command: volcano cloud functions deploy } + 'GET /projects/{id}/functions/{functionId}': { command: volcano cloud functions get } + 'PATCH /projects/{id}/functions/{functionId}': { command: volcano cloud functions update } + 'DELETE /projects/{id}/functions/{functionId}': { command: volcano cloud functions delete } + 'POST /functions/{functionId}/invoke': { command: volcano cloud functions invoke } + 'POST /durable-functions/{functionId}/executions': { reason: data_plane } + 'GET /durable-functions/{functionId}/executions/{executionId}': { reason: data_plane } + 'POST /durable-functions/{functionId}/executions/{executionId}/stop': { reason: data_plane } + 'POST /durable-functions/{functionId}/executions/{executionId}/messages': { reason: data_plane } + 'GET /durable-functions/{functionId}/executions/{executionId}/messages': { reason: data_plane } + 'GET /functions/resolve': { reason: data_plane } + 'POST /projects/{id}/logs/activity': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2420 } + 'POST /projects/{id}/logs/search': { command: volcano cloud functions logs } + 'POST /projects/{id}/logs/stream': { command: volcano cloud functions logs, flags: [--follow] } + 'POST /projects/{id}/functions/batch': { command: volcano cloud functions deploy } + 'GET /projects/{id}/schedulers': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2430 } + 'GET /projects/{id}/notifications': { command: volcano cloud notifications get } + 'PUT /projects/{id}/notifications': { command: volcano cloud notifications set } + 'POST /projects/{id}/notifications/webhook-secret': { command: volcano cloud notifications rotate-webhook-secret } + 'POST /projects/{id}/notifications/test': { command: volcano cloud notifications test } + 'GET /projects/{id}/functions/{functionId}/schedulers': { command: volcano cloud functions schedulers list } + 'POST /projects/{id}/functions/{functionId}/schedulers': { command: volcano cloud functions schedulers create } + 'GET /projects/{id}/functions/{functionId}/schedulers/{schedulerId}': + { command: volcano cloud functions schedulers list } + 'PATCH /projects/{id}/functions/{functionId}/schedulers/{schedulerId}': + { command: volcano cloud functions schedulers enable } + 'DELETE /projects/{id}/functions/{functionId}/schedulers/{schedulerId}': + { command: volcano cloud functions schedulers delete } + 'GET /projects/{id}/functions/{functionId}/deployments': { command: volcano cloud functions logs } + 'GET /projects/{id}/durable-functions': { command: volcano cloud durable list } + 'POST /projects/{id}/durable-functions': { command: volcano cloud durable deploy } + 'GET /projects/{id}/durable-functions/{functionId}': { command: volcano cloud durable get } + 'DELETE /projects/{id}/durable-functions/{functionId}': { command: volcano cloud durable delete } + 'GET /projects/{id}/durable-functions/{functionId}/deployments': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2420 } + 'GET /projects/{id}/durable-functions/{functionId}/schedulers': { command: volcano cloud durable schedulers list } + 'POST /projects/{id}/durable-functions/{functionId}/schedulers': { command: volcano cloud durable schedulers create } + 'GET /projects/{id}/durable-functions/{functionId}/schedulers/{schedulerId}': + { command: volcano cloud durable schedulers list } + 'PATCH /projects/{id}/durable-functions/{functionId}/schedulers/{schedulerId}': + { command: volcano cloud durable schedulers enable } + 'DELETE /projects/{id}/durable-functions/{functionId}/schedulers/{schedulerId}': + { command: volcano cloud durable schedulers delete } + 'POST /projects/{id}/durable-functions/{functionId}/executions': { command: volcano cloud durable start } + 'GET /projects/{id}/durable-functions/{functionId}/executions': { command: volcano cloud durable executions list } + 'GET /projects/{id}/durable-functions/{functionId}/executions/{executionId}': + { command: volcano cloud durable executions get } + 'GET /projects/{id}/durable-functions/{functionId}/executions/{executionId}/operations': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2420 } + 'POST /projects/{id}/durable-functions/{functionId}/executions/{executionId}/stop': + { command: volcano cloud durable executions stop } + 'POST /projects/{id}/durable-functions/{functionId}/executions/{executionId}/messages': + { command: volcano cloud durable messages send } + 'GET /projects/{id}/durable-functions/{functionId}/executions/{executionId}/messages': + { command: volcano cloud durable messages list } + 'GET /projects/{id}/durable-functions/{functionId}/executions/{executionId}/message-waits': + { command: volcano cloud durable messages waits } + 'POST /durable-messages/waits': { reason: data_plane } + 'POST /durable-messages/sessions': { reason: data_plane } + 'POST /durable-messages/publish': { reason: data_plane } + 'POST /realtime/v1/publish': { reason: data_plane } + 'POST /durable-callbacks': { reason: data_plane } + 'POST /durable-callbacks/succeed': { command: volcano cloud durable callbacks succeed } + 'POST /durable-callbacks/fail': { command: volcano cloud durable callbacks fail } + 'POST /durable-callbacks/heartbeat': { command: volcano cloud durable callbacks heartbeat } + 'POST /durable-approvals': { reason: data_plane } + 'GET /projects/{id}/capabilities': { command: volcano cloud lavaflow status } + 'GET /lavaflow/settings': { command: volcano cloud lavaflow settings } + 'PATCH /lavaflow/settings': { command: volcano cloud lavaflow settings set } + 'GET /lavaflow/scans': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2708 } + 'GET /lavaflow/stats': { command: volcano cloud lavaflow stats } + 'GET /lavaflow/resources': { command: volcano cloud lavaflow resources } + 'GET /lavaflow/runs': { command: volcano cloud lavaflow list } + 'POST /lavaflow/runs': { command: volcano cloud lavaflow runs start } + 'GET /lavaflow/runs/{run_id}': { command: volcano cloud lavaflow show } + 'POST /lavaflow/held-fix-opens': { command: volcano cloud lavaflow runs open } + 'GET /lavaflow/connector-bindings': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2958 } + 'POST /lavaflow/connector-bindings': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2958 } + 'DELETE /lavaflow/connector-bindings/{binding_id}': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2958 } + 'GET /projects/{id}/issues': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2427 } + 'POST /issues': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2427 } + 'GET /projects/{id}/issues/{issueId}': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2427 } + 'PATCH /projects/{id}/issues/{issueId}': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2427 } + 'GET /projects/{id}/durable-approvals': { command: volcano cloud durable approvals list } + 'GET /projects/{id}/durable-approvals/stats': { command: volcano cloud durable approvals stats } + 'GET /projects/{id}/durable-approvals/{approvalId}': { command: volcano cloud durable approvals get } + 'POST /projects/{id}/durable-approvals/{approvalId}/approve': { command: volcano cloud durable approvals approve } + 'POST /projects/{id}/durable-approvals/{approvalId}/deny': { command: volcano cloud durable approvals deny } + 'GET /projects/{id}/frontends': { command: volcano cloud frontends list } + 'POST /projects/{id}/frontends': { command: volcano cloud frontends deploy } + 'GET /projects/{id}/frontends/{frontendId}': { command: volcano cloud frontends get } + 'DELETE /projects/{id}/frontends/{frontendId}': { command: volcano cloud frontends delete } + 'POST /projects/{id}/frontends/{frontendId}/redeploy': { command: volcano cloud frontends redeploy } + 'GET /projects/{id}/frontends/{frontendId}/domain': { command: volcano cloud frontends domain get } + 'POST /projects/{id}/frontends/{frontendId}/domain': { command: volcano cloud frontends domain create } + 'DELETE /projects/{id}/frontends/{frontendId}/domain': { command: volcano cloud frontends domain delete } + 'GET /projects/{id}/frontends/{frontendId}/domains': { command: volcano cloud frontends domains list } + 'POST /projects/{id}/frontends/{frontendId}/domains': { command: volcano cloud frontends domains add } + 'GET /projects/{id}/frontends/{frontendId}/domains/{domain}': { command: volcano cloud frontends domains get } + 'PATCH /projects/{id}/frontends/{frontendId}/domains/{domain}': { command: volcano cloud frontends domains update } + 'DELETE /projects/{id}/frontends/{frontendId}/domains/{domain}': { command: volcano cloud frontends domains remove } + 'GET /projects/{id}/frontends/{frontendId}/deployments': { command: volcano cloud frontends logs } + 'POST /projects/{id}/frontends/{frontendId}/deployments': { command: volcano cloud frontends deploy, flags: [--from] } + 'GET /projects/{id}/frontends/{frontendId}/candidates': { command: volcano cloud frontends preview list } + 'POST /projects/{id}/frontends/{frontendId}/candidates': { command: volcano cloud frontends preview create } + 'GET /projects/{id}/frontends/{frontendId}/candidates/{candidateId}': { command: volcano cloud frontends preview get } + 'DELETE /projects/{id}/frontends/{frontendId}/candidates/{candidateId}': + { command: volcano cloud frontends preview delete } + 'POST /projects/{id}/frontends/{frontendId}/candidates/{candidateId}/deployments': + { command: volcano cloud frontends preview deploy } + 'GET /projects/{id}/frontends/{frontendId}/serving': { command: volcano cloud frontends serving } + 'POST /projects/{id}/frontends/{frontendId}/serving/rollback': { command: volcano cloud frontends rollback } + 'POST /projects/{id}/frontends/{frontendId}/candidates/{candidateId}/promote': + { command: volcano cloud frontends preview promote } + 'GET /projects/{id}/functions/{functionId}/candidates': { command: volcano cloud functions preview list } + 'POST /projects/{id}/functions/{functionId}/candidates': { command: volcano cloud functions preview create } + 'GET /projects/{id}/functions/{functionId}/candidates/{candidateId}': { command: volcano cloud functions preview get } + 'DELETE /projects/{id}/functions/{functionId}/candidates/{candidateId}': + { command: volcano cloud functions preview delete } + 'GET /projects/{id}/functions/{functionId}/candidates/{candidateId}/deployments': + { command: volcano cloud functions preview deployments } + 'POST /projects/{id}/functions/{functionId}/candidates/{candidateId}/deployments': + { command: volcano cloud functions preview deploy } + 'POST /projects/{id}/functions/{functionId}/candidates/{candidateId}/promote': + { command: volcano cloud functions preview promote } + 'GET /projects/{id}/functions/{functionId}/serving': { command: volcano cloud functions serving } + 'POST /projects/{id}/functions/{functionId}/serving/rollback': { command: volcano cloud functions rollback } + 'GET /projects/{id}/frontends/{frontendId}/usage': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2420 } + 'GET /projects/{id}/frontends/{frontendId}/function-routes': { command: volcano cloud frontends routes list } + 'POST /projects/{id}/frontends/{frontendId}/function-routes': { command: volcano cloud frontends routes create } + 'PUT /projects/{id}/frontends/{frontendId}/function-routes/{routeId}': + { command: volcano cloud frontends routes update } + 'DELETE /projects/{id}/frontends/{frontendId}/function-routes/{routeId}': + { command: volcano cloud frontends routes delete } + 'GET /projects/{id}/frontends/{frontendId}/frontend-routes': { command: volcano cloud frontends routes list } + 'POST /projects/{id}/frontends/{frontendId}/frontend-routes': { command: volcano cloud frontends routes create } + 'PUT /projects/{id}/frontends/{frontendId}/frontend-routes/{routeId}': + { command: volcano cloud frontends routes update } + 'DELETE /projects/{id}/frontends/{frontendId}/frontend-routes/{routeId}': + { command: volcano cloud frontends routes delete } + 'GET /projects/{id}/variable-environments': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2423 } + 'POST /projects/{id}/variable-environments': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2423 } + 'GET /projects/{id}/variable-environments/{environmentId}': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2423 } + 'PATCH /projects/{id}/variable-environments/{environmentId}': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2423 } + 'DELETE /projects/{id}/variable-environments/{environmentId}': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2423 } + 'GET /projects/{id}/variables': { command: volcano cloud variables list } + 'POST /projects/{id}/variables': { command: volcano cloud variables deploy } + 'GET /projects/{id}/databases': { command: volcano cloud databases list } + 'POST /projects/{id}/databases': { command: volcano cloud databases create } + 'GET /projects/{id}/databases/{databaseName}': { command: volcano cloud databases get } + 'DELETE /projects/{id}/databases/{databaseName}': { command: volcano cloud databases delete } + 'GET /projects/{id}/databases/{databaseName}/branches': { command: volcano cloud databases branches list } + 'POST /projects/{id}/databases/{databaseName}/branches': { command: volcano cloud databases branches create } + 'GET /projects/{id}/databases/{databaseName}/branches/{branchName}': { command: volcano cloud databases branches get } + 'PATCH /projects/{id}/databases/{databaseName}/branches/{branchName}': + { command: volcano cloud databases branches extend } + 'DELETE /projects/{id}/databases/{databaseName}/branches/{branchName}': + { command: volcano cloud databases branches delete } + 'POST /projects/{id}/databases/{databaseName}/branches/{branchName}/reset': + { command: volcano cloud databases branches reset } + 'POST /projects/{id}/databases/{databaseName}/branches/{branchName}/reset-password': + { command: volcano cloud databases branches rotate-password } + 'GET /projects/{id}/databases/{databaseName}/backups': { command: volcano cloud databases backups list } + 'POST /projects/{id}/databases/{databaseName}/backups': { command: volcano cloud databases backups create } + 'GET /projects/{id}/databases/{databaseName}/backups/{backupName}': { command: volcano cloud databases backups get } + 'DELETE /projects/{id}/databases/{databaseName}/backups/{backupName}': + { command: volcano cloud databases backups delete } + 'GET /projects/{id}/databases/{databaseName}/backup-schedule': + { command: volcano cloud databases backup-schedule get } + 'PUT /projects/{id}/databases/{databaseName}/backup-schedule': + { command: volcano cloud databases backup-schedule set } + 'GET /projects/{id}/databases/{databaseName}/restores': { command: volcano cloud databases restores list } + 'POST /projects/{id}/databases/{databaseName}/restores': { command: volcano cloud databases restore } + 'GET /projects/{id}/databases/{databaseName}/restores/{restoreId}': { command: volcano cloud databases restores get } + 'GET /projects/{id}/databases/{databaseName}/migrations': { command: volcano cloud databases migration status } + 'POST /projects/{id}/databases/{databaseName}/migrations/baseline': + { command: volcano cloud databases migration baseline } + 'GET /projects/{id}/databases/{databaseName}/migration-runs': { command: volcano cloud databases migration runs list } + 'POST /projects/{id}/databases/{databaseName}/migration-runs': { command: volcano cloud databases migration apply } + 'GET /projects/{id}/databases/{databaseName}/migration-runs/{runId}': + { command: volcano cloud databases migration runs get } + 'POST /projects/{id}/databases/{databaseName}/reset-password': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2422 } + 'PATCH /projects/{id}/databases/{databaseName}/type': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2421 } + 'GET /projects/{id}/databases/{databaseName}/stats': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2421 } + 'POST /databases/{databaseName}/query/ping': { reason: data_plane } + 'POST /databases/{databaseName}/query/select': { reason: data_plane } + 'POST /databases/{databaseName}/query/insert': { reason: data_plane } + 'POST /databases/{databaseName}/query/update': { reason: data_plane } + 'POST /databases/{databaseName}/query/delete': { reason: data_plane } + 'POST /databases/{databaseName}/branches/{branchName}/query/ping': { reason: data_plane } + 'POST /databases/{databaseName}/branches/{branchName}/query/select': { reason: data_plane } + 'POST /databases/{databaseName}/branches/{branchName}/query/insert': { reason: data_plane } + 'POST /databases/{databaseName}/branches/{branchName}/query/update': { reason: data_plane } + 'POST /databases/{databaseName}/branches/{branchName}/query/delete': { reason: data_plane } + 'GET /databases/regions': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2421 } + 'GET /databases/postgres-versions': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2421 } + 'GET /functions/runtimes': { command: volcano cloud functions runtimes } + 'GET /functions/regions': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2421 } + 'GET /projects/{id}/variables/{name}': { command: volcano cloud variables get } + 'PUT /projects/{id}/variables/{name}': { command: volcano cloud variables deploy } + 'DELETE /projects/{id}/variables/{name}': { command: volcano cloud variables delete } + 'GET /auth/password-policy': { reason: data_plane } + 'POST /auth/signup': { reason: data_plane } + 'POST /auth/signin': { reason: data_plane } + 'POST /auth/refresh': { reason: data_plane } + 'POST /auth/logout': { reason: data_plane } + 'POST /auth/forgot-password': { reason: data_plane } + 'POST /auth/reset-password': { reason: data_plane } + 'POST /auth/confirm': { reason: data_plane } + 'POST /auth/resend-confirmation': { reason: data_plane } + 'POST /auth/signup-anonymous': { reason: data_plane } + 'POST /auth/user/convert-anonymous': { reason: data_plane } + 'POST /auth/user/change-email': { reason: data_plane } + 'POST /auth/user/confirm-email-change': { reason: data_plane } + 'DELETE /auth/user/cancel-email-change': { reason: data_plane } + 'GET /auth/user/sessions': { reason: data_plane } + 'DELETE /auth/user/sessions': { reason: data_plane } + 'DELETE /auth/user/sessions/{sessionId}': { reason: data_plane } + 'GET /auth/user': { reason: data_plane } + 'PUT /auth/user': { reason: data_plane } + 'GET /auth/user/identities': { reason: data_plane } + 'DELETE /auth/user/identities/{identityId}': { reason: data_plane } + 'GET /auth/user/methods': { reason: data_plane } + 'POST /auth/user/methods/{methodId}/promote': { reason: data_plane } + 'GET /projects/{id}/auth/insights': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2424 } + 'GET /projects/{id}/auth/users': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2424 } + 'GET /projects/{id}/auth/users/{userId}': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2424 } + 'DELETE /projects/{id}/auth/users/{userId}': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2424 } + 'GET /projects/{id}/auth/users/{userId}/sessions': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2424 } + 'DELETE /projects/{id}/auth/users/{userId}/sessions': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2424 } + 'DELETE /projects/{id}/auth/users/{userId}/sessions/{sessionId}': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2424 } + 'POST /projects/{id}/auth/users/{userId}/ban': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2424 } + 'POST /projects/{id}/auth/users/{userId}/unban': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2424 } + 'GET /projects/{id}/email-templates': { manifest: auth.email.templates } + 'POST /projects/{id}/email-templates': { manifest: auth.email.templates } + 'GET /projects/{id}/email-templates/{type}': { manifest: auth.email.templates } + 'PUT /projects/{id}/email-templates/{type}': { manifest: auth.email.templates } + 'DELETE /projects/{id}/email-templates/{type}': { manifest: auth.email.templates } + 'GET /email-templates/defaults': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2425 } + 'GET /email-templates/defaults/{type}': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2425 } + 'GET /projects/{id}/auth/config': { manifest: auth } + 'PUT /projects/{id}/auth/config': { manifest: auth } + 'POST /projects/{id}/auth/config/test-email': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2425 } + 'GET /projects/{id}/auth/hosted-pages/{pageType}': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2425 } + 'PUT /projects/{id}/auth/hosted-pages/{pageType}': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2425 } + 'GET /projects/{id}/auth/pages/appearance': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2425 } + 'PUT /projects/{id}/auth/pages/theme': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2425 } + 'DELETE /projects/{id}/auth/pages/theme': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2425 } + 'PUT /projects/{id}/auth/pages/{pageType}/layout': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2425 } + 'DELETE /projects/{id}/auth/pages/{pageType}/layout': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2425 } + 'GET /projects/{id}/auth/pages/{pageType}/preview': { reason: browser } + 'POST /projects/{id}/auth/pages/{pageType}/preview': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2425 } + 'GET /projects/{id}/auth/hosted/{pageType}': { reason: data_plane } + 'GET /projects/{id}/auth/hosted': { reason: data_plane } + 'GET /projects/{id}/auth/hosted/login/options': { reason: data_plane } + 'POST /projects/{id}/auth/hosted/login/check-email': { reason: data_plane } + 'GET /projects/{id}/auth/methods': { manifest: auth.providers } + 'PUT /projects/{id}/auth/methods': { manifest: auth.providers } + 'GET /projects/{id}/oauth/configs': { manifest: auth.providers.oauth } + 'POST /projects/{id}/oauth/configs': { manifest: auth.providers.oauth } + 'GET /projects/{id}/oauth/configs/{provider}': { manifest: auth.providers.oauth } + 'PUT /projects/{id}/oauth/configs/{provider}': { manifest: auth.providers.oauth } + 'DELETE /projects/{id}/oauth/configs/{provider}': { manifest: auth.providers.oauth } + 'GET /projects/{id}/oauth/providers': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2425 } + 'GET /auth/oauth/{provider}/authorize': { reason: data_plane } + 'GET /auth/oauth/{provider}/callback': { reason: data_plane } + 'POST /auth/oauth/exchange': { reason: data_plane } + 'POST /auth/device/authorize': { command: volcano login } + 'POST /auth/device/token': { command: volcano login } + 'POST /auth/device/verify': { reason: data_plane } + 'POST /auth/platform/exchange': { command: volcano login } + 'GET /auth/oauth/providers': { reason: data_plane } + 'POST /auth/oauth/{provider}/link': { reason: data_plane } + 'DELETE /auth/oauth/{provider}/unlink': { reason: data_plane } + 'POST /auth/oauth/{provider}/refresh-token': { reason: data_plane } + 'GET /auth/oauth/{provider}/token': { reason: data_plane } + 'POST /auth/oauth/{provider}/call-api': { reason: data_plane } + 'GET /projects/{id}/anon-keys': { command: volcano projects keys anon list } + 'POST /projects/{id}/anon-keys': { command: volcano projects keys anon create } + 'GET /projects/{id}/anon-keys/{keyId}': { command: volcano projects keys anon list } + 'DELETE /projects/{id}/anon-keys/{keyId}': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2422 } + 'POST /projects/{id}/anon-keys/{keyId}/regenerate': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2422 } + 'POST /projects/{id}/anon-keys/{keyId}/set-default': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2422 } + 'GET /projects/{id}/access-tokens': { command: volcano cloud access-tokens list } + 'POST /projects/{id}/access-tokens': { command: volcano cloud access-tokens create } + 'GET /projects/{id}/access-tokens/usage': { command: volcano cloud access-tokens usage } + 'GET /projects/{id}/access-tokens/{tokenId}': { command: volcano cloud access-tokens get } + 'DELETE /projects/{id}/access-tokens/{tokenId}': { command: volcano cloud access-tokens revoke } + 'GET /projects/{id}/access-tokens/{tokenId}/usage': { command: volcano cloud access-tokens usage } + 'GET /projects/{id}/service-keys': { command: volcano projects keys service list } + 'POST /projects/{id}/service-keys': { command: volcano projects keys service create } + 'GET /projects/{id}/service-keys/{keyId}': { command: volcano projects keys service get } + 'DELETE /projects/{id}/service-keys/{keyId}': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2422 } + 'POST /projects/{id}/service-keys/{keyId}/regenerate': + { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2422 } + 'GET /projects/{id}/storage/buckets': { command: volcano cloud storage bucket list } + 'POST /projects/{id}/storage/buckets': { command: volcano cloud storage bucket create } + 'GET /projects/{id}/storage/buckets/{bucketName}': { command: volcano cloud storage bucket get } + 'PATCH /projects/{id}/storage/buckets/{bucketName}': { command: volcano cloud storage bucket update } + 'DELETE /projects/{id}/storage/buckets/{bucketName}': { command: volcano cloud storage bucket delete } + 'GET /projects/{id}/storage/buckets/{bucketName}/policies': { command: volcano cloud storage policy list } + 'POST /projects/{id}/storage/buckets/{bucketName}/policies': { command: volcano cloud storage policy create } + 'DELETE /projects/{id}/storage/buckets/{bucketName}/policies/{policyId}': + { command: volcano cloud storage policy delete } + 'GET /projects/{id}/storage/objects': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2430 } + 'GET /projects/{id}/storage/stats': { command: volcano cloud storage stats } + 'GET /projects/{id}/realtime/config': { manifest: realtime } + 'PUT /projects/{id}/realtime/config': { manifest: realtime } + 'GET /projects/{id}/realtime/stats': { reason: gap, issue: https://github.com/Kong/volcano-hosting/issues/2420 } + 'GET /storage/{bucketName}': { command: volcano cloud storage object list } + 'POST /locks/{key}/lease': { reason: data_plane } + 'PATCH /locks/{key}/lease': { reason: data_plane } + 'DELETE /locks/{key}/lease': { reason: data_plane } + 'GET /locks/{key}': { reason: data_plane } + 'DELETE /locks/{key}': { reason: data_plane } + 'POST /storage/{bucketName}/move': { command: volcano cloud storage object move } + 'POST /storage/{bucketName}/copy': { command: volcano cloud storage object copy } + 'POST /storage/{bucketName}/{path}': { command: volcano cloud storage object upload } + 'PUT /storage/{bucketName}/{path}': { reason: data_plane } + 'GET /storage/{bucketName}/{path}': { command: volcano cloud storage object download } + 'DELETE /storage/{bucketName}/{path}': { command: volcano cloud storage object delete } + 'PATCH /storage/{bucketName}/{path}/visibility': { command: volcano cloud storage object visibility } + 'GET /public/{projectId}/{bucketName}/{path}': { reason: data_plane } + 'GET /health': { command: volcano start } + 'GET /capabilities': { reason: client_protocol } + 'GET /openapi.json': { reason: client_protocol } + 'HEAD /openapi.json': { reason: client_protocol } + 'GET /openapi.yaml': { reason: client_protocol } + 'HEAD /openapi.yaml': { reason: client_protocol } + 'POST /mcp': { reason: client_protocol } diff --git a/openapi/openapi.yaml b/openapi/openapi.yaml index afc0dc7e..c5d652ce 100644 --- a/openapi/openapi.yaml +++ b/openapi/openapi.yaml @@ -4,7 +4,7 @@ info: description: |- Public API for Volcano clients, SDKs, and CLI tooling (Port 8000). - This specification intentionally excludes first-party/internal APIs. See api/openapi-internal.yaml for non-public internal and Builder operations. + This specification intentionally excludes first-party/internal APIs. See api/openapi-internal.yaml for non-public internal operations. version: 3.0.0 contact: name: Volcano @@ -24,7 +24,7 @@ tags: - name: Issues description: 'Preview, not generally available: runtime errors grouped into issues, LavaFlow Code Quality findings, and problems reported for a project. Where issues are not available, every endpoint answers `404` with code `feature_unavailable`.' - name: LavaFlow - description: 'Preview, not generally available: LavaFlow diagnoses a project''s issues and opens pull requests that fix them. It merges a fix only under `autonomy: merge`, where the project''s `lavaflow.merge` capability is available, once the fix passes review and its required checks and nothing holds it. LavaFlow sends this project''s logs and source code to an AI service that Volcano operates. Every endpoint names one project with `project_id`. Where LavaFlow is not available, every endpoint refuses a project that has no LavaFlow records: `404` with code `feature_unavailable` while LavaFlow is not offered to the project, and `403` with code `plan_required` when it is but the owner''s plan does not include it. A project with records keeps reading them and can still turn LavaFlow and skill learning off.' + description: 'Preview, not generally available: LavaFlow diagnoses a project''s issues and opens pull requests that fix them. It merges a fix only under `autonomy: merge`, where the project''s `lavaflow.merge` capability is available, once the fix passes review and its required checks and nothing holds it. LavaFlow sends this project''s logs and source code to an AI service that Volcano operates. Every endpoint names one project with `project_id`. Where LavaFlow is not available, every endpoint refuses a project that has no LavaFlow records: `404` with code `feature_unavailable` while LavaFlow is not offered to the project, and `403` with code `plan_required` when it is but the owner''s plan does not include it. A project with records keeps reading them and can still turn LavaFlow off.' - name: Functions description: Function deployment and management - name: Durable Functions @@ -75,6 +75,8 @@ tags: description: A project's owner shares it through a link that lets anyone fork a release the owner published into a project of their own - name: Forks description: A visitor's own project, created from a release a share offers + - name: Connectors + description: Links from Volcano to outside services, such as Slack workspaces the Volcano app is installed in - name: Slack Connections description: The Volcano Slack app's installations, and Slack identities connected to Volcano accounts, which LavaFlow takes reported problems through - name: Project Imports @@ -666,7 +668,7 @@ paths: schema: $ref: '#/components/schemas/SandboxExecutionResult' default: - description: Request refused or unavailable. Errors include invalid input (400), unauthenticated (401), forbidden (403), not found (404), conflicting retry (409), startup hook timeout (422), capacity exhausted (429), and temporarily unavailable (503). Code `feature_unavailable` with 404 means sandboxes are not available in this environment. Code `sandbox_plan_limit_exceeded` (403) means the requested resources exceed the plan. Code `sandbox_allowance_exhausted` (429) means the remaining allowance or credits cannot admit the operation. Code `sandbox_region_unavailable` (400) means the region is temporarily unavailable for Sandboxes; choose another from `GET /sandboxes/presets`. Code `feature_unavailable` with 400 means `network.egress` `deny_all` is not available in this environment; `GET /capabilities` lists it as `sandboxes.network_isolation`. Code `sandbox_image_outdated` (409) means the template's image predates what the request needs, such as `deny_all` on a template deployed to local mode before this version; redeploy the template. No command was sent. Code `feature_unavailable` with 400 means the request keeps no output while the `sandboxes.output_not_kept` capability is unavailable. Code `sandbox_start_failed` means startup failed or timed out before the command was sent. Its status is 422 for sandbox_run_hook_timeout on a custom deployment, 429 for sandbox_allowance_exhausted or sandbox_allowance_retention_expired, and 503 for managed-preset run-hook timeouts or other or unknown startup reasons. sandbox_start_timeout means the startup wait expired; sandbox_session_expired means the session lifetime ended before dispatch. Its error message includes the recorded startup reason when known, including on replay. The message is diagnostic text, not a stable machine-readable retry classification; investigate the reason before starting another billed attempt. Admission refusals include response code `sandbox_capacity_unavailable` (429), `sandbox_allowance_exhausted` (429), and `sandbox_plan_limit_exceeded` (403); no command was sent. Reusing the same Idempotency-Key replays these refusals or startup failure even after recovery; use a new key for a new attempt. A 403 or 429 without an explicit admission-refusal code or sandbox_start_failed does not prove no dispatch. Other failures may have an unknown execution outcome; do not use a new key to repeat a command with side effects. + description: Request refused or unavailable. Errors include invalid input (400), unauthenticated (401), forbidden (403), not found (404), conflicting retry (409), startup hook timeout (422), capacity exhausted (429), and temporarily unavailable (503). Code `feature_unavailable` with 404 means sandboxes are not available in this environment. Code `sandbox_plan_limit_exceeded` (403) means the requested resources exceed the plan. Code `sandbox_allowance_exhausted` (429) means the remaining allowance or credits cannot admit the operation. Code `sandbox_region_unavailable` (400) means the region is temporarily unavailable for Sandboxes; choose another from `GET /sandboxes/presets`. Code `feature_unavailable` with 400 means `network.egress` `deny_all` is not available in this environment; `GET /capabilities` lists it as `sandboxes.network_isolation`. Code `sandbox_image_outdated` (409) means the template's image predates what the request needs, such as `deny_all` on a template deployed to local mode before this version; redeploy the template. No command was sent. Code `feature_unavailable` with 400 means the request keeps no output while the `sandboxes.output_not_kept` capability is unavailable. Code `sandbox_start_failed` means startup failed or timed out before the command was sent. Its status is 422 for sandbox_run_hook_timeout on a custom deployment, 429 for sandbox_allowance_exhausted or sandbox_allowance_retention_expired, and 503 for managed-preset run-hook timeouts or other or unknown startup reasons. sandbox_start_timeout means the startup wait expired; sandbox_session_expired means the session lifetime ended before dispatch. For sandbox_launch_outcome_unknown, the session isn't billed. Its startup command may already have started and can run until the session would have expired; Volcano can't reach it. Start a new session with a new key. A session whose launch outcome was unknown when it ended for an earlier reason keeps that reason, with the same caveat. Its error message includes the recorded startup reason when known, including on replay. The message is diagnostic text, not a stable machine-readable retry classification; investigate the reason before starting another billed attempt. Admission refusals include response code `sandbox_capacity_unavailable` (429), `sandbox_allowance_exhausted` (429), and `sandbox_plan_limit_exceeded` (403); no command was sent. Reusing the same Idempotency-Key replays these refusals or startup failure even after recovery; use a new key for a new attempt. A 403 or 429 without an explicit admission-refusal code or sandbox_start_failed does not prove no dispatch. Other failures may have an unknown execution outcome; do not use a new key to repeat a command with side effects. content: application/json: schema: @@ -2513,6 +2515,214 @@ paths: application/json: schema: $ref: '#/components/schemas/Error' + /connectors: + get: + tags: + - Connectors + summary: List connectors + description: | + Lists the connectors the caller can use. A connector links Volcano to + an outside service. A `slack` connector is a Slack workspace the + Volcano app is installed in: it is listed to the person who installed + it there, and to anyone with a Slack identity in that workspace + connected to their Volcano account. Add one with + `POST /user/slack/installations`. An `aikido` connector is an Aikido + workspace the caller connected with `POST /connectors`; it holds their + Aikido credentials, so it is listed to them alone. The list answers + whether or not reporting problems from either service is available in + this environment, so turning it off strands no connector. + operationId: listConnectors + security: + - UserToken: [] + - AuthUserAccessToken: [] + responses: + '200': + description: The caller's connectors + content: + application/json: + schema: + $ref: '#/components/schemas/ConnectorsResponse' + '401': + description: Not authenticated + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + post: + tags: + - Connectors + summary: Connect a service + description: | + Connects an outside service with credentials the caller created there, + and answers `201` with the connector. Today that is an `aikido` + workspace, so LavaFlow can fix the security issues Aikido finds on the + caller's projects. Install the Volcano Slack app with + `POST /user/slack/installations` instead: it needs the browser. + + For Aikido, create a REST API client in Aikido's settings with read + access to issues, repositories and the workspace, and a webhook + signing secret on its webhooks page. Volcano checks the client with + Aikido, reads which workspace it belongs to, and stores all three + values encrypted; it never returns them. Then point an Aikido webhook + for new issues at `https:///webhooks/aikido`, and bind + projects with `POST /lavaflow/connector-bindings`. Volcano writes + nothing back to Aikido. A workspace connects to one Volcano account at + a time. + + Connecting Aikido needs LavaFlow and Aikido reports to be available in + this environment, as the `lavaflow.aikido` capability reports; + otherwise this answers `404` with code `feature_unavailable`. + operationId: createConnector + security: + - UserToken: [] + - AuthUserAccessToken: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ConnectorCreate' + responses: + '201': + description: The service is connected + content: + application/json: + schema: + $ref: '#/components/schemas/Connector' + '400': + description: The body is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Not authenticated + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Code `feature_unavailable` means Aikido reports are not available in this environment. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '409': + description: The Aikido workspace is already connected, by the caller or another Volcano account. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '422': + description: Aikido refused the client ID and secret, or the client cannot read the workspace. Check the region, the credentials and the client's read access. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '502': + description: Aikido did not answer; nothing was saved, so try again + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /connectors/{connector_id}: + get: + tags: + - Connectors + summary: Get a connector + description: | + Returns one connector the caller can use, as listing connectors shows + it. A connector the caller cannot see answers like one that doesn't + exist. + operationId: getConnector + security: + - UserToken: [] + - AuthUserAccessToken: [] + parameters: + - $ref: '#/components/parameters/ConnectorId' + responses: + '200': + description: The connector + content: + application/json: + schema: + $ref: '#/components/schemas/Connector' + '400': + description: Malformed connector ID + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Not authenticated + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No such connector. One the caller cannot see answers the same way. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + delete: + tags: + - Connectors + summary: Remove a connector + description: | + Removes a connector. Removing a `slack` connector uninstalls the + Volcano app from the Slack workspace, for every Volcano account that + uses it. Only the person who installed the app there can remove it + (`removable` is `true` for them); anyone else can uninstall the app in + Slack. The workspace's channels stop reporting problems at their next + check, which also cancels reports still queued. The channel bindings + stay, and report again if the app is installed in the workspace again. + + Removing an `aikido` connector deletes its credentials and its project + bindings, and cancels its queued reports at their next check. Remove + the webhook in Aikido too: Volcano refuses its deliveries from then on. + + Removing works whether or not reporting problems from either service + is available in this environment. + operationId: deleteConnector + security: + - UserToken: [] + - AuthUserAccessToken: [] + parameters: + - $ref: '#/components/parameters/ConnectorId' + responses: + '204': + description: Removed + '400': + description: Malformed connector ID + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Not authenticated + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Someone else installed the Volcano app in this Slack workspace; only they can remove it. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: No such connector. One the caller cannot see answers the same way. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '502': + description: Slack did not answer the uninstall; the connector is unchanged, so try again + content: + application/json: + schema: + $ref: '#/components/schemas/Error' /user/slack/installations: post: tags: @@ -2522,8 +2732,8 @@ paths: Starts an installation of the Volcano app in a Slack workspace, so LavaFlow can take problems reported there, and returns its Add to Slack URL. Send the browser to it; Slack returns it to `GET /slack/callback`, - which saves the installation. Installing again replaces the workspace's - installation. Enterprise Grid org-wide installs are refused. The + which saves the installation as a `slack` connector (`GET /connectors`). + Installing again replaces the workspace's installation. Enterprise Grid org-wide installs are refused. The callback finishes only in the browser that started the installation. The response also sets a short-lived HttpOnly cookie that binds the @@ -3339,6 +3549,12 @@ paths: pattern: ^[a-f0-9]{64}$ description: SHA-256 of the sorted unique current shared names joined by a newline. Use instead of expected_shared_variables for a compact conditional replacement. responses: + '200': + description: 'Shared list replaced and synchronization started for every affected function except the ones listed, which a promoted preview serves (`code: function_served_by_candidate`). The preview keeps the variables it was built with, so their variables were not synchronized; a rollback of a listed function to production synchronizes its own build, and so does deploying it.' + content: + application/json: + schema: + $ref: '#/components/schemas/SharedVariablesReplaceResult' '204': description: Shared list replaced and affected function synchronization started. '400': @@ -3530,7 +3746,11 @@ paths: `missing`. Validation failures (including plan-gate violations) return 422 and nothing is applied. Set `dry_run=true` to get the projected report without applying changes. Applies are serialized per project; - a concurrent apply returns 409. + a concurrent apply returns 409. A function a promoted preview serves + keeps the variables the preview was built with: when the apply's + variable changes would reach it, it is reported as `unchanged` with + `code: function_served_by_candidate` and a `notice`, while every other + resource is applied and synchronized. That entry is not an error. operationId: applyProjectConfig security: - UserToken: [] @@ -3738,7 +3958,7 @@ paths: The source has already been exported, the repository has already taken over as the source of truth, the confirmed production branch or repository is stale, a function or frontend deployment is still in progress, - a preview is serving one of the project's frontends, or the project + a promoted preview is serving one of the project's functions or frontends, or the project has no stored source to export content: application/json: @@ -5947,7 +6167,7 @@ paths: description: | The name of the function to invoke. Defaults to "handler" if not specified. Your code must export/define a function with this name: - - Node.js: exports.handler (in index.js, index.mjs or index.cjs, or in TypeScript in index.ts, index.mts or index.cts, which the build compiles without type-checking) + - Node.js: exports.handler (in index.js, index.mjs or index.cjs, or in TypeScript in index.ts, index.mts, index.cts or index.tsx, which the build compiles without type-checking) - Python: def handler() (in main.py) - Ruby: def handler() (in main.rb) default: handler @@ -6026,8 +6246,8 @@ paths: of `public` or out of HTTP invocation mode. The request is refused before the deploy starts, so nothing is deployed. The message `project variables changed during the upload; retry` means - `NODE_PATH` was created or deleted while the upload was processed; - send the same request again. + `NODE_PATH` was created, changed or deleted while the upload was + processed; send the same request again. content: application/json: schema: @@ -6202,11 +6422,12 @@ paths: - Function must have `visibility: public` - Function receives payload only (no `__volcano_auth`) - **Reserved payload keys:** the top-level `__volcano_auth` and - `__volcano_http` keys are reserved. Volcano removes caller-supplied - values for both before the function runs; only an auth user token adds - a server-built `__volcano_auth`, and only HTTP-mode ingress sets - `__volcano_http: true`. + **Reserved payload keys:** the top-level `__volcano_auth`, + `__volcano_http` and `__volcano_mount` keys are reserved. Volcano + removes caller-supplied values for all three before the function runs; + only an auth user token adds a server-built `__volcano_auth`, and only + HTTP-mode ingress sets `__volcano_http: true`. `__volcano_mount` is set + only by Volcano's first-party app mounts. **Transport and CORS:** - This operation is the authenticated direct RPC endpoint and always uses the @@ -6928,9 +7149,10 @@ paths: SDKs use this endpoint internally to invoke by function name while routing by function ID. Invoke the returned `invoke_url` as-is. It does not share a domain with the API, so a host - built from the API URL will not reach the function. When the deployment serves no public - invocation domain, as in local development, `invoke_url` is omitted and callers invoke - through `POST /functions/{functionId}/invoke`. + built from the API URL will not reach the function. In local development, and when the + deployment serves no public invocation domain, `invoke_url` is omitted and callers invoke + through `POST /functions/{functionId}/invoke`. A local function's own `invoke_url`, for + webhook testing, is on the function resource. **With Service Key**: - Allowed @@ -7001,11 +7223,13 @@ paths: summary: Get project log activity description: | Retrieve bucketed log counts for one resource type in the project. Set - `resource.type` to `function`, `frontend`, or `database`. Add + `resource.type` to `function`, `frontend`, `database`, or `app`. Add `resource.ids` to filter to one or more resources, and add `resource.deployments.ids` to count deployment logs instead of runtime logs for functions and frontends. Deployment logs are not supported for - databases. Database logs are a SUPERAGENT feature; `resource.type=database` + databases or apps. `app` counts the entries a first-party app, such as + the Builder, wrote into the project; an app's ID is UUIDv5 of its slug + (see `LogResource.id`). With no entries it answers 200 with none; an unknown app in `resource.ids` answers 404 `app not found`. The `app_logs` release gate controls new writes only: entries already written stay readable when it closes. Database logs are a SUPERAGENT feature; `resource.type=database` from a HOBBY project owner returns 403. The activity window is limited to the plan's retention window (HOBBY: 1 day, SUPERAGENT: 30 days); older start times are clamped to that window. Buckets are aligned to UTC clock @@ -7061,11 +7285,13 @@ paths: summary: Search project logs description: | Search or filter logs for one resource type in the project. Set - `resource.type` to `function`, `frontend`, or `database`. Add + `resource.type` to `function`, `frontend`, `database`, or `app`. Add `resource.ids` to filter to one or more resources, and add `resource.deployments.ids` to read deployment logs instead of runtime logs for functions and frontends. Deployment logs are not supported for - databases. Database logs are a SUPERAGENT feature; requests for + databases or apps. `app` reads the entries a first-party app, such as + the Builder, wrote into the project; an app's ID is UUIDv5 of its slug + (see `LogResource.id`). With no entries it answers 200 with none; an unknown app in `resource.ids` answers 404 `app not found`. The `app_logs` release gate controls new writes only: entries already written stay readable when it closes. Database logs are a SUPERAGENT feature; requests for `resource.type=database` from a HOBBY project owner return 403. Log history (runtime and deployment) is limited to the plan's retention window (HOBBY: 1 day, SUPERAGENT: 30 days); older time ranges are clamped to that @@ -7283,8 +7509,8 @@ paths: function cannot change kind — or the project's source is managed by Git, where deploys come from a push to the production branch. The message `project variables changed during the upload; retry` means - `NODE_PATH` was created or deleted while the upload was processed; - nothing was deployed, so send the same request again. + `NODE_PATH` was created, changed or deleted while the upload was + processed; nothing was deployed, so send the same request again. content: application/json: schema: @@ -7717,6 +7943,636 @@ paths: application/json: schema: $ref: '#/components/schemas/Error' + /projects/{id}/functions/{functionId}/candidates: + get: + tags: + - Functions + summary: List a function's previews + description: | + Returns the function's previews, oldest first, each with its latest deployment. A function has at most + 20 live previews. Reading never depends on the `functions.candidates` capability. A durable function has no previews: reading its previews answers an empty list, and reading its serving state answers its own build. + operationId: listFunctionCandidates + security: + - UserToken: [] + - ProjectAccessToken: [] + parameters: + - $ref: '#/components/parameters/ProjectId' + - $ref: '#/components/parameters/FunctionId' + responses: + '200': + description: The function's previews + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionCandidateList' + '400': + description: Bad request - invalid identifier + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized - invalid or missing token + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden - project ownership required + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Function not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + post: + tags: + - Functions + summary: Create a function preview + description: | + Builds the uploaded source with the function's runtime, handler and variables, and deploys it to a + runtime of its own in every region the function deploys to. The preview is invoked at + `https://.` and is always private, whatever the function's own + visibility: only the project's service key, with `functions.invoke`, can invoke it, and signed-in + users, anon keys and access tokens are refused. It gets none of the function's schedules or warmers. + The response is `202` while the first deployment runs; read the preview for its `status` and `url`. + + While the `functions.candidates` capability is unavailable, including on the local development server, it answers `404` with code `feature_unavailable`. Reading and deleting existing previews, and rolling the function back to its own build, keep + working. + + A preview builds like any deploy and spends the project's build minutes. A function has at most 20 + live previews, and each name is unique within the function. Without `ttl_seconds` a preview is kept + until it is deleted. Durable functions have no previews. + operationId: createFunctionCandidate + security: + - UserToken: [] + - ProjectAccessToken: [] + parameters: + - $ref: '#/components/parameters/ProjectId' + - $ref: '#/components/parameters/FunctionId' + requestBody: + required: true + content: + multipart/form-data: + schema: + type: object + required: + - name + - code + properties: + name: + type: string + minLength: 1 + maxLength: 128 + description: Names the preview within the function. Cannot be `production`. + ttl_seconds: + type: integer + minimum: 1 + maximum: 2592000 + description: Deletes the preview this many seconds after it is created, at most 30 days. Omit to keep it until deleted. + code: + type: string + format: binary + description: The function's source archive, as for deploying the function. Built with the function's runtime and handler. + responses: + '202': + description: Preview created; its first deployment is running + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionCandidate' + '400': + description: Bad request - invalid name, expiry, identifier or source archive, or a variable the source reads has no value the function can give it + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized - invalid or missing token + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden - project ownership required + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Function not found, or the capability is unavailable (code `feature_unavailable`) + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '409': + description: 'Conflict. `code: durable_function_unsupported` - the function is durable. `code: candidate_name_taken` - the function has a preview with this name. `code: candidate_limit_reached` - the function has the maximum previews. `code: function_deleting` or `code: project_deleting` - the function or project is being deleted.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '413': + description: Request body exceeds the function source archive limit + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '429': + description: Too many requests - the project's build minutes for the billing cycle are used up (code `build_minutes_exceeded`) + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '503': + description: Service unavailable - function deployments are not configured + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /projects/{id}/functions/{functionId}/candidates/{candidateId}: + get: + tags: + - Functions + summary: Get a function preview + description: | + Returns the preview with its latest deployment. Never depends on the `functions.candidates` capability. + operationId: getFunctionCandidate + security: + - UserToken: [] + - ProjectAccessToken: [] + parameters: + - $ref: '#/components/parameters/ProjectId' + - $ref: '#/components/parameters/FunctionId' + - $ref: '#/components/parameters/FunctionCandidateId' + responses: + '200': + description: The preview + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionCandidate' + '400': + description: Bad request - invalid identifier + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized - invalid or missing token + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden - project ownership required + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Function or preview not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + delete: + tags: + - Functions + summary: Delete a function preview + description: | + Starts removing the preview's runtime, URL, builds and stored source once any running deployment + finishes; the preview reads `deleting` until that is done, and answers `404` once it is gone. Asking + again for a preview that is already being deleted is the same request. + + A preview the function runs cannot be deleted: roll back first. Deleting one the function only keeps + for a rollback gives that rollback up; the function's own build stays one `to_production` rollback + away. Never depends on the `functions.candidates` capability. + operationId: deleteFunctionCandidate + security: + - UserToken: [] + - ProjectAccessToken: [] + parameters: + - $ref: '#/components/parameters/ProjectId' + - $ref: '#/components/parameters/FunctionId' + - $ref: '#/components/parameters/FunctionCandidateId' + responses: + '202': + description: Deletion started + '400': + description: Bad request - invalid identifier + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized - invalid or missing token + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden - project ownership required + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Function or preview not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '409': + description: '`code: candidate_in_use` - the function runs this preview; roll it back first.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /projects/{id}/functions/{functionId}/candidates/{candidateId}/deployments: + get: + tags: + - Functions + summary: List a function preview's deployments + description: | + Returns the preview's deployments, newest first, at most 100. Never depends on the + `functions.candidates` capability. + operationId: listFunctionCandidateDeployments + security: + - UserToken: [] + - ProjectAccessToken: [] + parameters: + - $ref: '#/components/parameters/ProjectId' + - $ref: '#/components/parameters/FunctionId' + - $ref: '#/components/parameters/FunctionCandidateId' + responses: + '200': + description: The preview's deployments + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionCandidateDeploymentList' + '400': + description: Bad request - invalid identifier + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized - invalid or missing token + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden - project ownership required + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Function or preview not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + post: + tags: + - Functions + summary: Deploy new source to a function preview + description: | + Builds the uploaded source and deploys it to the preview, which keeps serving its previous + deployment until this one succeeds. A preview takes one deployment at a time, and one the function + runs, or keeps for a rollback, takes none. While the `functions.candidates` capability is unavailable, including on the local development server, it answers `404` with code `feature_unavailable`. + + A deployment builds like any deploy and spends the project's build minutes. + operationId: redeployFunctionCandidate + security: + - UserToken: [] + - ProjectAccessToken: [] + parameters: + - $ref: '#/components/parameters/ProjectId' + - $ref: '#/components/parameters/FunctionId' + - $ref: '#/components/parameters/FunctionCandidateId' + requestBody: + required: true + content: + multipart/form-data: + schema: + type: object + required: + - code + properties: + code: + type: string + format: binary + description: The function's source archive, as for deploying the function. Built with the function's runtime and handler. + responses: + '202': + description: The deployment is running + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionCandidateDeployment' + '400': + description: Bad request - invalid identifier or source archive, or a variable the source reads has no value the function can give it + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized - invalid or missing token + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden - project ownership required + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Function or preview not found, or the capability is unavailable (code `feature_unavailable`) + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '409': + description: 'Conflict. `code: durable_function_unsupported` - the function is durable. `code: deployment_in_progress` - a deployment of the preview is running; retry once it finishes. `code: candidate_not_deployable` - the preview is being deleted. `code: candidate_in_use` - the function runs this preview or keeps it for a rollback. `code: function_deleting` - the function is being deleted.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '413': + description: Request body exceeds the function source archive limit + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '429': + description: Too many requests - the project's build minutes for the billing cycle are used up (code `build_minutes_exceeded`) + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '503': + description: Service unavailable - function deployments are not configured + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /projects/{id}/functions/{functionId}/candidates/{candidateId}/promote: + post: + tags: + - Functions + summary: Promote a function preview + description: | + Points the function's traffic at the preview's runtime. Nothing is deployed or rebuilt, so it + takes effect at once: every call to the function, through its own URL, the invoke route, a + schedule or a frontend route, runs the preview's code, while the function keeps its ID, URL, + visibility, schedules, metering and logs. The function's own build is kept as it is for a + rollback, and what the function ran becomes what a rollback returns to. + + The preview must be serving a successful deployment built with the variables, runtime and handler + the function has now, in every region the function deploys to, and the function must have a + successful deployment of its own. It is refused while a deployment of the function, or a + synchronization of its variables, runs. Promotion names the `revision` the caller read from + `serving`; a competing promotion or rollback makes it fail with `409`. Once the project's + repository is the source of truth, promotion is refused with `409`, as a direct deploy is. + While the `functions.candidates` capability is unavailable, including on the local development server, it answers `404` with code `feature_unavailable`. + operationId: promoteFunctionCandidate + security: + - UserToken: [] + - ProjectAccessToken: [] + parameters: + - $ref: '#/components/parameters/ProjectId' + - $ref: '#/components/parameters/FunctionId' + - $ref: '#/components/parameters/FunctionCandidateId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionPromotionRequest' + responses: + '200': + description: The function's traffic now runs on the preview + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionServing' + '400': + description: Bad request - invalid identifier or body + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized - invalid or missing token + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden - project ownership required + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Function or preview not found, or the capability is unavailable (code `feature_unavailable`) + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '409': + description: 'Conflict. `code: durable_function_unsupported` - the function is durable. `code: stale_revision` - the revision is stale; read `serving` again. `code: already_serving` - the function already runs this preview. `code: candidate_not_ready` - the preview serves no successful deployment, or its latest redeploy failed; redeploy it successfully first. `code: configuration_changed` - the preview was built with other variables, runtime or handler than the function has now; redeploy it. `code: candidate_regions_changed` - the function deploys to a region the preview was not built in; redeploy it. `code: deployment_in_progress` - a deployment of the preview or of the function, or a synchronization of the function''s variables, is running; retry once it finishes. `code: function_not_deployed` - the function has no successful deployment of its own to roll back to. `code: function_deleting` - the function is being deleted. `code: source_managed_by_git` - the project''s repository is the source of truth; deploy from it.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '413': + description: The request body is larger than 4 KiB + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /projects/{id}/functions/{functionId}/serving: + get: + tags: + - Functions + summary: Get what a function runs + description: | + Returns whether the function runs its own build or a promoted preview's, what a rollback returns + to, and its latest promotion or rollback. Never depends on the `functions.candidates` capability. + A durable function always runs its own build. + operationId: getFunctionServing + security: + - UserToken: [] + - ProjectAccessToken: [] + parameters: + - $ref: '#/components/parameters/ProjectId' + - $ref: '#/components/parameters/FunctionId' + responses: + '200': + description: What the function runs + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionServing' + '400': + description: Bad request - invalid identifier + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized - invalid or missing token + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden - project ownership required + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Function not found + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /projects/{id}/functions/{functionId}/serving/rollback: + post: + tags: + - Functions + summary: Roll back what a function runs + description: | + Points the function's traffic back at what served it before its last promotion or rollback, or at + its own build with `to_production`. A rollback is a new activation, so what it leaves becomes what + a further rollback returns to, and it can itself be undone. Nothing is deployed, so it takes effect + at once. It names the `revision` the caller read; a competing activation makes it fail with `409`. + + Rolling back to a preview promotes it again and is refused with `409` when promoting it would be, + and with `404` code `feature_unavailable` while the capability is unavailable. Rolling back to the + function's own build is not: it never depends on the capability, the project's source mode, or a + running deployment of the function. + operationId: rollbackFunctionServing + security: + - UserToken: [] + - ProjectAccessToken: [] + parameters: + - $ref: '#/components/parameters/ProjectId' + - $ref: '#/components/parameters/FunctionId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionRollbackRequest' + responses: + '200': + description: The function's traffic now runs on what it was rolled back to + content: + application/json: + schema: + $ref: '#/components/schemas/FunctionServing' + '400': + description: Bad request - invalid identifier or body + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Unauthorized - invalid or missing token + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: Forbidden - project ownership required + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: 'Function not found, or `code: feature_unavailable` while the `functions.candidates` capability is unavailable and the rollback would make a preview serve again' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '409': + description: 'Conflict. `code: durable_function_unsupported` - the function is durable. `code: stale_revision` - the revision is stale; read `serving` again. `code: nothing_to_roll_back` - the function runs its own build and keeps no preview to return to. `code: rollback_unavailable` - the preview to roll back to is gone or serves no successful deployment. `code: function_not_deployed` - the function has no successful deployment of its own. `code: function_deleting` - the function is being deleted. A rollback to a preview is also refused like a promotion: `code: candidate_not_ready`, `code: configuration_changed`, `code: candidate_regions_changed`, `code: deployment_in_progress` and `code: source_managed_by_git`.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '413': + description: The request body is larger than 4 KiB + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '500': + description: Internal server error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' /projects/{id}/durable-functions: get: tags: @@ -7893,8 +8749,9 @@ paths: Name is held by a standard function, or a deletion is queued or running. The request is refused before the deploy starts, so nothing is deployed. The message `project variables changed during - the upload; retry` means `NODE_PATH` was created or deleted while - the upload was processed; send the same request again. + the upload; retry` means `NODE_PATH` was created, changed or + deleted while the upload was processed; send the same request + again. content: application/json: schema: @@ -9291,12 +10148,14 @@ paths: | `lavaflow` | LavaFlow is released, offered to the project's owner, and included in the owner's plan | | `lavaflow.merge` | `lavaflow` is, and LavaFlow's merging is released in this environment | | `lavaflow.lineage` | `lavaflow` is, and fix lineage is released in this environment | + | `lavaflow.open_pr_ci_start` | `lavaflow` is, and LavaFlow's one CI start for fixes a person merges is released in this environment | | `lavaflow.code_quality` | `lavaflow` is, Code Quality is released in this environment, and the owner's plan allows Code Quality findings; with an allowance of 0 it is `unavailable` with `code` `plan_required` | | `lavaflow.slack` | `lavaflow` is, the Volcano Slack app is set up in this environment, and Slack reports have launched in it | + | `lavaflow.aikido` | `lavaflow` is, and Aikido reports have launched in this environment | - Where `lavaflow` isn't available, a project with LavaFlow settings or - runs lists it `read_only`: its LavaFlow reads answer, and its owner can - turn LavaFlow off. A project without them lists it `unavailable`, with + Where `lavaflow` isn't available, a project with LavaFlow settings, runs, + or bound Slack channels lists it `read_only`: its LavaFlow reads answer, + and its owner can turn LavaFlow off or remove channel bindings. A project without them lists it `unavailable`, with `code` `plan_required` when the owner's plan leaves LavaFlow out. Check it to decide what to offer for a project, instead of calling a @@ -9333,9 +10192,9 @@ paths: - LavaFlow summary: Get LavaFlow settings description: | - Returns whether LavaFlow works on the project's issues, how far it goes - on its own, and its saved context and instructions, which runs do not - use yet. A project + Returns whether LavaFlow works on the project's issues and how far it + goes on its own. LavaFlow takes project guidance from the repository's + AGENTS.md and CLAUDE.md, not from a setting. A project that never saved settings returns the defaults, with LavaFlow off. LavaFlow sends this project's logs and source code to an AI service that Volcano operates. @@ -9397,11 +10256,21 @@ paths: LavaFlow sends this project's logs and source code to an AI service that Volcano operates. - Only the project's owner can save, with a platform token, while their - account is active. A full-scope project access token can only turn - settings off: a body with `project_id` and one or both of - `"code_quality": {"enabled": false}` and `"skill_learning": "off"`, - each field spelled exactly and sent once, and nothing else. Any other + Turning LavaFlow on, from off, also starts runs for up to 5 open issues + with `exception: true` and an `event_count` of at least 2, last seen in + the past 7 days, most recently seen first, leaving out any issue + LavaFlow already ran; runs LavaFlow queued on its own and hasn't + started count toward the 5. They start like any run LavaFlow starts on + its own, up to 3 at once per project. Only the owner's save with a + `volcano login` token whose sign-in is live, a live Volcano dashboard + sign-in, or a platform token that expires, starts them; any other save turns LavaFlow on without them. A save while LavaFlow is on starts none, and neither + does LavaFlow becoming available to the project. + + Only the project's owner can save, with a platform token or a live + Volcano dashboard sign-in, while their account is active. A full-scope project access token can only turn + settings off: a body with `project_id` and + `"code_quality": {"enabled": false}`, each field spelled exactly and + sent once, and nothing else. Any other body from a project access token, including one that turns a setting on, adds a field, sends `null`, or names a field the schema doesn't have, gets `403` with code `person_required`, as does a request made @@ -9425,45 +10294,42 @@ paths: `merge_policy`, answers `400` with code `feature_unavailable`. A save that sends the saved values again passes this check, though it can still need the owner's check below, and a project at `merge` can - still change to another autonomy. + still change to another autonomy. The save doesn't read the + repository's branch rules: LavaFlow merges only into a base branch + that requires at least one status check, and holds every fix with + `no_required_checks` on any other. Changing `autonomy` to `merge` lets LavaFlow merge with no one else looking. So does turning `enabled` on while `autonomy` stays `merge`, and changing `merge_policy`, to any value, while `autonomy` is, or - becomes, `merge`. Under settings - saved with automatic runs off before this API, the runs LavaFlow - starts on its own stop at a draft pull request. Sending `enabled: - true` or `autonomy: merge` again, while LavaFlow is on and `autonomy` - is `merge`, lets them merge, so it needs the same check. Turning - `allow_ungated_workflows` on lets LavaFlow open a fix - where a workflow could run it with the repository's secrets before a - person approves it. Turning `code_quality` on starts work on every - frontend production deploy with no incident behind it, and turning - `skill_learning` up, from `off` to `review` or `auto` or from `review` - to `auto`, lets what LavaFlow learns steer later runs with less - review. Only the owner can make these changes, with a credential of - their own that expires: a sign-in session, a `volcano login` token - whose sign-in is live, or a platform token with an expiry. The owner's + becomes, `merge`. Turning `allow_ungated_workflows` on lets LavaFlow + open a fix where a workflow could run it with the repository's + secrets before a person approves it. Turning `code_quality` on starts + work on every frontend production deploy with no incident behind it. + Only the owner can make these changes, with a credential of + their own that expires: a `volcano login` token + whose sign-in is live, a live Volcano dashboard sign-in, or a + platform token with an expiry. The owner's GitHub account must also be able to push to the project's repository. A project access token, MCP, a platform token that never expires, a sign-in that ended, an owner who can't push, and a project with no repository get `403` with code `person_required`, and nothing is saved. Turning LavaFlow, `allow_ungated_workflows` or `code_quality` - off, and turning `skill_learning` down or off, needs no check. + off needs no check. Nothing is saved either when the push check can't be answered (`429` or `503`, with `Retry-After`). When the project points at another - repository, or at none, `autonomy` changes from `merge` to `open_pr`; - pointing back doesn't change it back. + repository, reaches its repository through another Volcano GitHub App + installation, or points at none, `autonomy` changes from `merge` to + `open_pr`; pointing back doesn't change it back. Reconnecting after a + reinstall of the App counts as another installation. Turning LavaFlow on needs a plan that includes it (`403`, code `plan_required`). LavaFlow is available where the project's `lavaflow` capability is, which includes the owner's plan. Where it is not, a project with LavaFlow records can still turn LavaFlow, Code - Quality or skill learning off, or several of them: a save that sends - `enabled: false`, `code_quality: {enabled: false}`, - `skill_learning: off` or several of them, and otherwise only - `allow_ungated_workflows: false` sent with `enabled` or - `skill_learning`. Any other save, + Quality or both off: a save that sends `enabled: false`, + `code_quality: {enabled: false}` or both, and otherwise only + `allow_ungated_workflows: false` sent with `enabled`. Any other save, and any save for a project without records, answers `404` with code `feature_unavailable` while LavaFlow is not offered to the project, and `403` with code `plan_required` when it is but the owner's plan does @@ -9471,6 +10337,7 @@ paths: operationId: patchLavaflowSettings security: - UserToken: [] + - AuthUserAccessToken: [] - ProjectAccessToken: [] requestBody: required: true @@ -9486,7 +10353,7 @@ paths: schema: $ref: '#/components/schemas/LavaflowSettings' '400': - description: 'The body is invalid: `project_id` missing or not a UUID, no field to change, an unknown field or autonomy, a `human_review_paths` pattern that is not relative to the repository root or holds a NUL character. Code `feature_unavailable` means the save sets `autonomy: merge` or changes `merge_policy` without the project''s `lavaflow.merge` capability, turns `code_quality` on while Code Quality isn''t released, or turns `skill_learning` up without the project''s `lavaflow.skills` capability.' + description: 'The body is invalid: `project_id` missing or not a UUID, no field to change, an unknown field or autonomy, a `human_review_paths` pattern that is not relative to the repository root or holds a NUL character. Code `feature_unavailable` means the save sets `autonomy: merge` or changes `merge_policy` without the project''s `lavaflow.merge` capability, or turns `code_quality` on while Code Quality isn''t released.' content: application/json: schema: @@ -9498,13 +10365,13 @@ paths: schema: $ref: '#/components/schemas/Error' '403': - description: 'Code `person_required` means a full-scope project access token made any save but turning Code Quality or skill learning off, MCP made the request, or the save turns on a setting only the project''s owner may turn on, and the owner did not make it with a credential of their own that expires: a sign-in session, a `volcano login` token whose sign-in is live, or a platform token with an expiry, never a project access token or a platform token that never expires. Those settings are `code_quality`, `allow_ungated_workflows`, `autonomy: merge`, `enabled` turned on while `autonomy` stays `merge`, a change to `merge_policy` while `autonomy` is or becomes `merge`, `enabled: true` or `autonomy: merge` sent again under settings saved with automatic runs off before this API, which lets the runs LavaFlow starts on its own merge, and `skill_learning` turned up from `off` or from `review`. It also means the owner''s GitHub account can''t push to the project''s repository, or the project has none. Code `plan_required` means the owner''s plan does not include LavaFlow, or allows no Code Quality findings for a save that turns `code_quality` on. Without a code: a read-only project access token made the request, the owner''s account is read-only, or the owner''s plan could not be read and nothing was saved; retry later.' + description: 'Code `person_required` means a full-scope project access token made any save but turning Code Quality off, MCP made the request, or the save turns on a setting only the project''s owner may turn on, and the owner did not make it with a credential of their own that expires: a `volcano login` token whose sign-in is live, a live Volcano dashboard sign-in, or a platform token with an expiry, never a project access token or a platform token that never expires. Those settings are `code_quality`, `allow_ungated_workflows`, `autonomy: merge`, `enabled` turned on while `autonomy` stays `merge`, and a change to `merge_policy` while `autonomy` is or becomes `merge`. It also means the owner''s GitHub account can''t push to the project''s repository, or the project has none. Code `plan_required` means the owner''s plan does not include LavaFlow, or allows no Code Quality findings for a save that turns `code_quality` on. Without a code: a read-only project access token made the request, the owner''s account is read-only, or the owner''s plan could not be read and nothing was saved; retry later.' content: application/json: schema: $ref: '#/components/schemas/Error' '404': - description: Not found. A project the caller can't read answers exactly like one that doesn't exist, and so does one being deleted. Code `feature_unavailable` means LavaFlow is not available for this project and the save does more than turn LavaFlow, Code Quality or skill learning off on a project with LavaFlow records. + description: Not found. A project the caller can't read answers exactly like one that doesn't exist, and so does one being deleted. Code `feature_unavailable` means LavaFlow is not available for this project and the save does more than turn LavaFlow or Code Quality off on a project with LavaFlow records. content: application/json: schema: @@ -9525,9 +10392,8 @@ paths: description: | The save turns on `code_quality`, `allow_ungated_workflows` or `autonomy: merge`, turns `enabled` on under `merge`, changes - `merge_policy` under `merge`, - lets the runs LavaFlow starts on its own merge again, or turns - `skill_learning` up, and the project, or its owner across their + `merge_policy` under `merge`, or + lets the runs LavaFlow starts on its own merge again, and the project, or its owner across their projects, used up the hour's checks of the owner's GitHub push access. Nothing was saved. Try again after `Retry-After`. headers: @@ -9543,9 +10409,8 @@ paths: description: | The save turns on `code_quality`, `allow_ungated_workflows` or `autonomy: merge`, turns `enabled` on under `merge`, changes - `merge_policy` under `merge`, - lets the runs LavaFlow starts on its own merge again, or turns - `skill_learning` up, and the owner's GitHub push access could not be + `merge_policy` under `merge`, or + lets the runs LavaFlow starts on its own merge again, and the owner's GitHub push access could not be checked now. Nothing was saved. Try again after `Retry-After`. headers: @@ -9557,20 +10422,20 @@ paths: application/json: schema: $ref: '#/components/schemas/Error' - /lavaflow/slack-channels: + /lavaflow/connector-bindings: get: tags: - LavaFlow - summary: List the project's Slack channels + summary: List the project's connector bindings description: | - Lists the Slack channels that report problems to LavaFlow for the - project. In a listed channel, someone whose Slack identity is connected - to the project owner's account can mention the Volcano app to report a - problem. Project access tokens can read the list, including read-only - ones, and so can MCP, as `get_lavaflow_slack_channels`. The list - answers whether or not the project's `lavaflow.slack` capability is - available. - operationId: listLavaflowSlackChannels + Lists where problems are reported to LavaFlow from for the project, + such as Slack channels. In a bound Slack channel, someone whose Slack + identity is connected to the project owner's account can mention the + Volcano app to report a problem. Project access tokens can read the + list, including read-only ones, and so can MCP, as + `get_lavaflow_connector_bindings`. The list answers whether or not the + project's `lavaflow.slack` capability is available. + operationId: listLavaflowConnectorBindings security: - UserToken: [] - ProjectAccessToken: [] @@ -9578,11 +10443,11 @@ paths: - $ref: '#/components/parameters/ProjectIdQuery' responses: '200': - description: The project's Slack channels + description: The project's connector bindings content: application/json: schema: - $ref: '#/components/schemas/LavaflowSlackChannelsResponse' + $ref: '#/components/schemas/LavaflowConnectorBindingsResponse' '400': description: '`project_id` is missing or not a UUID.' content: @@ -9604,49 +10469,62 @@ paths: post: tags: - LavaFlow - summary: Add a Slack channel to the project - description: | - Binds a Slack channel, so it reports problems to LavaFlow for the - project, and answers `201`. Binding a channel that is already bound - answers `200` with that binding, and makes the current owner the one - who bound it, so a retry is safe. The workspace must have the - Volcano app installed, and one of the Slack identities the caller's - sign-in session signed in as must belong to it and be a member of the - channel, so on an account several people share, each binds only - channels they are in. The channel must be one the picker lists: one - the Volcano app is in, and not archived, a Slack Connect channel, or - shared across an organization. - - Only the project's owner can bind, with a platform token. A project + summary: Bind a connector to the project + description: | + Binds a place in a connector to the project, so problems reported + there reach LavaFlow for it, and answers `201`. Send `slack` for a + `slack` connector and `aikido` for an `aikido` one. For a `slack` + connector the place is a channel. Binding a channel that is already + bound answers `200` with that binding, and makes the current owner the + one who bound it, so a retry is safe. One of the Slack identities the + caller's sign-in session signed in as must belong to the connector's + workspace and be a member of the channel, so on an account several + people share, each binds only channels they are in. The channel must + be one the picker (`GET /user/slack/channels`) lists: one the Volcano + app is in, and not archived, a Slack Connect channel, or shared + across an organization. + + For an `aikido` connector the place is the workspace's new code + (SAST) issues on the project's GitHub repository, at or above + `min_severity`. The caller must have + connected the workspace. Binding it again answers `200` and sets the + new minimum. Each issue starts a LavaFlow run that stops at a pull + request for review. + + Only the project's owner can bind, with a platform token or a live + dashboard sign-in session. A session must come from the dashboard's + own configured project; another project's session gets `403`. A project access token, or a request made through MCP, gets `403` with code - `person_required`. Binding needs the project's `lavaflow.slack` - capability: where it is unavailable, this answers `404` with code - `feature_unavailable`, or `403` with code `plan_required` when the - owner's plan does not include LavaFlow. - operationId: bindLavaflowSlackChannel + `person_required`. Binding a Slack channel needs the project's + `lavaflow.slack` capability, and binding Aikido its + `lavaflow.aikido` capability: where it is unavailable, this answers + `404` with code `feature_unavailable`, or `403` with code + `plan_required` when the owner's plan does not include LavaFlow. + operationId: createLavaflowConnectorBinding security: - UserToken: [] + - AuthUserAccessToken: [] requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/LavaflowSlackChannelBinding' + $ref: '#/components/schemas/LavaflowConnectorBindingCreate' responses: '200': - description: The channel was already bound for the project + description: The channel, or the Aikido workspace, was already bound for the project content: application/json: schema: - $ref: '#/components/schemas/LavaflowSlackChannel' + $ref: '#/components/schemas/LavaflowConnectorBinding' '201': - description: The channel is bound + description: The connector is bound content: application/json: schema: - $ref: '#/components/schemas/LavaflowSlackChannel' + $ref: '#/components/schemas/LavaflowConnectorBinding' '400': - description: 'The body is invalid, the app is not installed in the workspace, the caller''s sign-in session signed in as no Slack identity there, the channel cannot report problems (it is archived, a Slack Connect channel, or shared across an organization), or the Volcano app is not in the channel yet: invite it, then bind again.' + description: 'The body is invalid or names the wrong connector type, the connector is not one the caller can use or connected, the caller''s sign-in session signed in as no Slack identity in its workspace, the channel cannot report problems (it is archived, a Slack Connect channel, or shared across an organization), or the Volcano app is not in the channel yet: invite it, then bind again.' content: application/json: schema: @@ -9658,13 +10536,13 @@ paths: schema: $ref: '#/components/schemas/Error' '403': - description: Code `person_required` means a project access token or MCP made the request. Code `plan_required` means the owner's plan does not include LavaFlow. Without a code, the owner's account is read-only, or the owner's plan could not be read; retry later. + description: Code `person_required` means a project access token or MCP made the request. Code `plan_required` means the owner's plan does not include LavaFlow. Without a code, the session belongs to a project other than the dashboard's configured project, the owner's account is read-only, or the owner's plan could not be read. Retry later only when the plan could not be read. content: application/json: schema: $ref: '#/components/schemas/Error' '404': - description: Not found. A project the caller can't read answers exactly like one that doesn't exist, and so does a channel that no Slack identity the caller's sign-in session signed in as is a member of, and a private channel the Volcano app is not in, which the app cannot see. Code `feature_unavailable` means the project's `lavaflow.slack` capability is unavailable. + description: Not found. A project the caller can't read answers exactly like one that doesn't exist, and so does a channel that no Slack identity the caller's sign-in session signed in as is a member of, and a private channel the Volcano app is not in, which the app cannot see. Code `feature_unavailable` means the project's `lavaflow.slack`, or for Aikido its `lavaflow.aikido`, capability is unavailable. content: application/json: schema: @@ -9675,34 +10553,35 @@ paths: application/json: schema: $ref: '#/components/schemas/Error' - /lavaflow/slack-channels/{binding_id}: + /lavaflow/connector-bindings/{binding_id}: delete: tags: - LavaFlow - summary: Remove a Slack channel from the project + summary: Remove a connector binding description: | - Stops a Slack channel reporting problems for its project. Reports from - it still queued are canceled at their next check. The binding's own - project authorizes the request. Only the project's owner can remove - one, with a platform token. A project access token or MCP gets `403` - with code `person_required` for a binding of its own project, and - `404` for another project's, as for an unknown one. Removing works - whether or not the project's `lavaflow.slack` capability is available. - operationId: unbindLavaflowSlackChannel + Stops a bound place, such as a Slack channel or an Aikido workspace, + reporting problems for its project. Reports from it still queued are canceled at their next + check. The binding's own project authorizes the request. Only the + project's owner can remove one, with a platform token. A project + access token or MCP gets `403` with code `person_required` for a + binding of its own project, and `404` for another project's, as for an + unknown one. Removing works whether or not the project's + `lavaflow.slack` capability is available. + operationId: deleteLavaflowConnectorBinding security: - UserToken: [] parameters: - name: binding_id in: path required: true - description: The binding's ID, from listing the project's Slack channels + description: The binding's ID, from listing the project's connector bindings schema: type: string format: uuid - $ref: '#/components/parameters/ItemProjectIdQuery' responses: '204': - description: The channel no longer reports for the project + description: The place no longer reports for the project '400': description: '`project_id` is given, and it or the binding ID is not a UUID.' content: @@ -9738,7 +10617,9 @@ paths: that went live since the last scan, with `status: waiting` and the bound it waits at in `waiting_reason`. A bound never drops a deploy: the waiting scan covers every commit since the last one when it - starts. + starts. A platform publication pause is reported as `feature_paused` + and does not spend the scan's retry allowance. With publication enabled, + a separate pause on starting runs is reported as `feature_unavailable`. Each scan shows the commits it compared, the resources whose deploys it covers, what it did with what it found, and the findings whose @@ -9790,15 +10671,26 @@ paths: - LavaFlow summary: Get LavaFlow stats description: | - Counts the issues LavaFlow took on and the pull requests it opened per - UTC day, oldest first, with every day in the window present. Merges - never count. The window ends today, which is partial. The totals equal - the sum of `days` and of the per-resource counts from + The activity counts report issues LavaFlow took on and pull requests it + opened per UTC day, oldest first, with every day in the window present. + Merges do not count toward these activity fields. The window ends + today, which is partial. The activity `totals` equal the sum of the + activity `days` and of the per-resource counts from `GET /lavaflow/resources` for the same project, `days` and `category`. - `category` counts only runs in that category. These counts are issues - taken on and pull requests opened, while `GET /lavaflow/runs` counts - runs, so the two need not match. + `category` filters these activity counts to runs in that category. + Activity counts measure issues taken on and pull requests opened, + while `GET /lavaflow/runs` counts runs, so the two need not match. + + The optional `outcomes` object separately reports confirmed merges, + improvements observed live and actual automatic issue-resolution + episodes. `category` filters its merge and live counts; its primary + issue-resolution count includes every category. Outcome counts use + their own event dates and do not contribute to the activity totals. + Older servers omit `outcomes`; its absence means unavailable, not + zero. Null outcome counts mean unknown, not zero. Read the per-metric + coverage alongside the counts: partial coverage and retained + confirmations do not establish a complete total. operationId: getLavaflowStats security: - UserToken: [] @@ -9815,7 +10707,7 @@ paths: schema: $ref: '#/components/schemas/LavaflowStats' '400': - description: '`project_id` is missing or not a UUID, `days` is outside 1 to 90, or `category` is not a category.' + description: '`project_id` is missing or not a UUID, `days` is outside 1 to 217, or `category` is not a category.' content: application/json: schema: @@ -9873,390 +10765,7 @@ paths: schema: $ref: '#/components/schemas/LavaflowResourceList' '400': - description: '`project_id` is missing or not a UUID, `days` is outside 1 to 90, or `category` is not a category.' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '401': - description: Not authenticated - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '403': - description: Code `plan_required` means the owner's plan does not include LavaFlow and the project has no LavaFlow records. Without a code, the owner's plan could not be read; retry later. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '404': - description: Not found. A project the caller can't read answers exactly like one that doesn't exist, and so does one being deleted. Code `feature_unavailable` means LavaFlow is not available for this project and it has no LavaFlow records. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - /lavaflow/runs: - get: - tags: - - LavaFlow - summary: List LavaFlow runs - description: | - Pages the project's LavaFlow runs, newest first unless `order` says - otherwise. A page carries no run text; read a run for its diagnosis, - log lines and diff. Each run names its category, the resources it - involves and its issue. - - Every filter narrows the list, and filters combine. `include=counts` - adds `counts`, computed from the same filters: ask for them on the - first page, since they don't depend on the cursor. Keep the filters - and `order` while paging. - operationId: listLavaflowRuns - security: - - UserToken: [] - - ProjectAccessToken: [] - parameters: - - $ref: '#/components/parameters/ProjectIdQuery' - - $ref: '#/components/parameters/LavaflowRunLimit' - - $ref: '#/components/parameters/LavaflowRunCursor' - - $ref: '#/components/parameters/LavaflowRunStatusFilter' - - $ref: '#/components/parameters/LavaflowResourceIdFilter' - - $ref: '#/components/parameters/LavaflowCategoryFilter' - - $ref: '#/components/parameters/LavaflowInvolvedResourceFilter' - - $ref: '#/components/parameters/LavaflowIssueIdFilter' - - $ref: '#/components/parameters/LavaflowPullRequestStateFilter' - - $ref: '#/components/parameters/LavaflowRunDays' - - $ref: '#/components/parameters/LavaflowRunOrder' - - $ref: '#/components/parameters/LavaflowRunInclude' - responses: - '200': - description: A page of runs - content: - application/json: - schema: - $ref: '#/components/schemas/PaginatedLavaflowRuns' - '400': - description: '`project_id` is missing or not a UUID, a filter, `order`, `days`, `include` or `limit` is invalid, or the cursor is invalid or was issued for another `order`.' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '401': - description: Not authenticated - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '403': - description: Code `plan_required` means the owner's plan does not include LavaFlow and the project has no LavaFlow records. Without a code, the owner's plan could not be read; retry later. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '404': - description: Not found. A project the caller can't read answers exactly like one that doesn't exist, and so does one being deleted. An `issue_id` from another project answers `issue not found`, as an unknown one does. Code `feature_unavailable` means LavaFlow is not available for this project and it has no LavaFlow records. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - post: - tags: - - LavaFlow - summary: Start a LavaFlow run - description: | - Starts a run on one of the project's issues. LavaFlow starts runs on - its own only for issues with `exception: true`, and only while it is - on. Start one here for any other issue, or for one recorded before - LavaFlow was turned on. The run follows the project's settings, as - one LavaFlow starts on its own does, and answers `202` while it is - `queued`; read it with `GET /lavaflow/runs/{run_id}`. - - Only the project's owner can start a run, as a person, while their - account is active: with a platform token that expires, or `volcano - login`. A platform token that never expires, a `volcano login` token - whose sign-in ended, a full-scope project access token, and a request - made through MCP get `403` with code `person_required`; a read-only - project access token is refused as read-only first, without a code, - and so is the owner of a read-only account. - - Every start counts toward the run limits: 5 runs per issue and 200 per - project in any 24 hours. An issue has one run in progress at a time, - so sending the request again while the first run is in progress - answers `409` with code `lavaflow_run_in_progress`. - - A run on a Code Quality issue is a Code Quality run. It starts only - while Code Quality is available to the project, as - `lavaflow.code_quality` in `GET /capabilities` reports, and on for it. - operationId: createLavaflowRun - security: - - UserToken: [] - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/LavaflowRunCreate' - responses: - '202': - description: The run, queued - content: - application/json: - schema: - $ref: '#/components/schemas/LavaflowRun' - '400': - description: 'The body is invalid: `project_id` or `issue_id` missing or not a UUID, or an unknown field. Code `feature_unavailable` means the issue is a Code Quality issue and Code Quality is not available.' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '401': - description: Not authenticated - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '403': - description: 'Code `person_required` means the request didn''t come from the owner''s live person credential: a platform token that never expires, a `volcano login` token whose sign-in ended, a full-scope project access token, or MCP made it. Start a run with a platform token that expires, or `volcano login`. Code `plan_required` means the owner''s plan does not include LavaFlow, or, for a Code Quality issue, Code Quality. Without a code: a read-only project access token made the request, the owner''s account is read-only or inactive, or the owner''s plan could not be read; retry later.' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '404': - description: Not found. A project the caller can't read answers exactly like one that doesn't exist, and so does one being deleted. Code `issue_not_found` means the project has no issue `issue_id`; an issue of another project answers the same. Code `feature_unavailable` means LavaFlow is not available for this project. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '409': - description: The run did not start. Code `lavaflow_disabled` means LavaFlow is off for the project, or, for a Code Quality issue, Code Quality is; turn it on. Code `repository_required` means LavaFlow was turned on for a repository the project no longer links, and `repository_changed` that the project links another repository than LavaFlow was turned on for; turn LavaFlow on again. Code `lavaflow_run_in_progress` means the issue has a run in progress. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '413': - description: Request body exceeds 4,096 bytes - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '429': - description: A run limit is reached. Code `issue_run_limit_reached` means the issue started 5 runs in the last 24 hours, and `project_run_limit_reached` that the project started 200. Try again after `Retry-After`. - headers: - Retry-After: - description: Seconds until the limit has room for the run. - schema: - type: integer - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - /lavaflow/runs/{run_id}: - get: - tags: - - LavaFlow - summary: Get a LavaFlow run - description: | - Returns a run, with its diagnosis, the log lines it cites, its diff and - its review. The run's project authorizes the read, so `project_id` is - optional. The text holds the project's logs and source code, so this - endpoint takes the same access as the project's log endpoints. - - A run held because the repository's workflows could run its fix with - the repository's secrets before a person approves it - (`pull_request_skipped: ungated_workflows`) lists every such job in - `held_workflows`, beside the fix's `diff` and `diff_sha256`. - operationId: getLavaflowRun - security: - - UserToken: [] - - ProjectAccessToken: [] - parameters: - - $ref: '#/components/parameters/LavaflowRunId' - - $ref: '#/components/parameters/ItemProjectIdQuery' - responses: - '200': - description: The run - content: - application/json: - schema: - $ref: '#/components/schemas/LavaflowRun' - '400': - description: '`project_id` is given and not a UUID.' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '401': - description: Not authenticated - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '403': - description: Code `plan_required` means the owner's plan does not include LavaFlow and the project has no LavaFlow records. Without a code, the owner's plan could not be read; retry later. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '404': - description: Not found. A run of a project the caller can't read, or of a project being deleted, answers exactly like one that doesn't exist, and so does a run of another project than a given `project_id`. Code `feature_unavailable` means LavaFlow is not available for the project and it has no LavaFlow records. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - /lavaflow/held-fix-opens: - post: - tags: - - LavaFlow - summary: Open a held LavaFlow fix - description: | - Opens the pull request for a fix LavaFlow held because the - repository's workflows could run it with the repository's secrets - before a person approves it (`pull_request_skipped: - ungated_workflows`). Read the run first: send its `id` as `run_id`, - with the `diff_sha256` and `held_workflows.jobs_sha256` it served, to - say you read that diff and that list of jobs. LavaFlow opens the fix it - saved, exactly as reviewed, past those jobs only. It writes no new - fix. - - Right before it queues the run, LavaFlow serves the diff again and - reads the workflows again. A diff served differently since you read - it, or a job list or a commit the workflows were read at that changed, - answers `409` with code `run_changed`; read the run again, which lists - what LavaFlow found. The response is the run, `202` while it is - `queued`. LavaFlow reads the workflows again before it opens the pull - request, and once more as it pushes the fix: a job you didn't read, a - new commit on a branch the workflows were read on, even one that - changes no job, or a production branch other than the one you read - them on holds the fix again with a new list. - - Opening a fix lets its pull request open, nothing more. LavaFlow - starts no CI on it and never merges it, as for every fix opened past - ungated workflows; a person pushes to the branch or merges it. The - pull request's description names who opened it and lists the jobs. - One exception: when LavaFlow's read before the pull request opens - finds no job that runs the fix before a person approves it, because - the workflows were gated since you read them, the fix opens as any - other fix and follows the project's merge settings. A run whose - `held_workflows` lists no job opens the same way. - - Only the project's owner can open a fix, as a person, while their - account is active: with a sign-in session, a `volcano login` token - whose sign-in is live, or a platform token that expires. Their GitHub - account must be able to push to the project's repository. A project - access token, a request made through MCP, a platform token that never - expires, and a sign-in that ended get `403` with code - `person_required`. Opening a fix uses one of the run's attempts: the - attempt that opens it is one of the run's, so a run held again on its - last attempt can't be opened again. It starts no new run and counts - toward no run limit. - operationId: createLavaflowHeldFixOpen - security: - - UserToken: [] - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/LavaflowHeldFixOpen' - responses: - '202': - description: The run, queued to open its fix - content: - application/json: - schema: - $ref: '#/components/schemas/LavaflowRun' - '400': - description: 'The body is invalid: `project_id` or `run_id` missing or not a UUID, `diff_sha256` or `jobs_sha256` missing or not 64 lowercase hex characters, or an unknown field.' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '401': - description: Not authenticated - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '403': - description: 'Code `person_required` means the request didn''t come from the owner''s live person credential: a full-scope project access token, MCP, a platform token that never expires, or a `volcano login` token whose sign-in ended made it, or the owner''s GitHub account can''t push to the project''s repository, or the project has none. Open the fix with a platform token that expires, or `volcano login`. Code `plan_required` means the owner''s plan does not include LavaFlow. Without a code: a read-only project access token made the request, the owner''s account is read-only or inactive, or the owner''s plan could not be read; retry later.' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '404': - description: Not found. A project the caller can't read answers exactly like one that doesn't exist, and so does one being deleted. A run of another project than `project_id` answers as one that doesn't exist. Code `feature_unavailable` means LavaFlow is not available for this project. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '409': - description: 'Nothing was queued. Code `run_not_held` means the run holds no fix you can open: it was not held for ungated workflows, its pull request opened or is queued to, its diff is cut short or withholds a file, or LavaFlow could not list every job that held it (`held_workflows` is `null`). Code `run_changed` means the diff or the jobs are not the ones you named: read the run again. Code `run_attempts_exhausted` means the run has no attempt left. Code `lavaflow_disabled` means LavaFlow is off for the project; turn it on. Code `repository_required` means LavaFlow was turned on for a repository the project no longer links, `repository_changed` that the project links another repository than LavaFlow was turned on for, or than the fix was written for, and `repository_unreadable` that LavaFlow can no longer read the repository''s workflows. Code `lavaflow_run_in_progress` means another run of the issue is in progress.' - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '413': - description: Request body exceeds 4,096 bytes - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '429': - description: The project, or its owner across their projects, used up the hour's checks of the owner's GitHub push access. Nothing was queued. Try again after `Retry-After`. - headers: - Retry-After: - description: Seconds until the budget's hour ends. - schema: - type: integer - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '503': - description: GitHub didn't answer the owner's push check or the read of the workflows. Nothing was queued. Try again after `Retry-After`. - headers: - Retry-After: - description: Seconds to wait before trying again. - schema: - type: integer - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - /lavaflow/skills: - get: - tags: - - LavaFlow - summary: List LavaFlow skills - description: | - Lists the project's skills, newest first: short, cited notes on how - the project wants something done, with each one's active version, - counts and source. A project skill belongs to its project and never - leaves it. Filter by `status`. The list holds at most 350 skills, so - it has no pages. - - LavaFlow doesn't yet learn skills from corrections to its fixes or - load them into runs; both come in a later release. - - Project access tokens can list skills, including read-only ones. - Skills stay readable while the project's `lavaflow.skills` capability - is unavailable. - operationId: listLavaflowSkills - security: - - UserToken: [] - - ProjectAccessToken: [] - parameters: - - $ref: '#/components/parameters/ProjectIdQuery' - - $ref: '#/components/parameters/LavaflowSkillStatusFilter' - responses: - '200': - description: The project's skills - content: - application/json: - schema: - $ref: '#/components/schemas/LavaflowSkillList' - '400': - description: '`project_id` is missing or not a UUID, or `status` is unknown.' + description: '`project_id` is missing or not a UUID, `days` is outside 1 to 217, or `category` is not a category.' content: application/json: schema: @@ -10279,31 +10788,50 @@ paths: application/json: schema: $ref: '#/components/schemas/Error' - /lavaflow/skills/{skill_id}: + /lavaflow/runs: get: tags: - LavaFlow - summary: Get a LavaFlow skill + summary: List LavaFlow runs description: | - Returns one of a project's skills with its active version. The skill's - project authorizes the read, so `project_id` is optional. Project - access tokens can read skills, including read-only ones. - operationId: getLavaflowSkill + Pages the project's LavaFlow runs, newest first unless `order` says + otherwise. A page carries bounded display text, including the saved + proposed fix's optional `fix_summary`; read a run for its diagnosis, + log lines and diff. Each run names its category, the resources it + involves and its issue. A confirmed Code Quality finding can supply + `issue.severity`, and a recorded pull request can supply `branch`. + Unknown or withheld optional fields are omitted. + + Every filter narrows the list, and filters combine. `include=counts` + adds `counts`, computed from the same filters: ask for them on the + first page, since they don't depend on the cursor. Keep the filters + and `order` while paging. + operationId: listLavaflowRuns security: - UserToken: [] - ProjectAccessToken: [] parameters: - - $ref: '#/components/parameters/LavaflowSkillId' - - $ref: '#/components/parameters/ItemProjectIdQuery' + - $ref: '#/components/parameters/ProjectIdQuery' + - $ref: '#/components/parameters/LavaflowRunLimit' + - $ref: '#/components/parameters/LavaflowRunCursor' + - $ref: '#/components/parameters/LavaflowRunStatusFilter' + - $ref: '#/components/parameters/LavaflowResourceIdFilter' + - $ref: '#/components/parameters/LavaflowCategoryFilter' + - $ref: '#/components/parameters/LavaflowInvolvedResourceFilter' + - $ref: '#/components/parameters/LavaflowIssueIdFilter' + - $ref: '#/components/parameters/LavaflowPullRequestStateFilter' + - $ref: '#/components/parameters/LavaflowRunDays' + - $ref: '#/components/parameters/LavaflowRunOrder' + - $ref: '#/components/parameters/LavaflowRunInclude' responses: '200': - description: The skill + description: A page of runs content: application/json: schema: - $ref: '#/components/schemas/LavaflowSkill' + $ref: '#/components/schemas/PaginatedLavaflowRuns' '400': - description: '`project_id` is given and not a UUID.' + description: '`project_id` is missing or not a UUID, a filter, `order`, `days`, `include` or `limit` is invalid, or the cursor is invalid or was issued for another `order`.' content: application/json: schema: @@ -10321,73 +10849,63 @@ paths: schema: $ref: '#/components/schemas/Error' '404': - description: Not found. A skill of a project the caller can't read, or of a project being deleted, answers exactly like one that doesn't exist, and so does a skill of another project than a given `project_id`. Code `feature_unavailable` means LavaFlow is not available for the project and it has no LavaFlow records. + description: Not found. A project the caller can't read answers exactly like one that doesn't exist, and so does one being deleted. An `issue_id` from another project answers `issue not found`, as an unknown one does. Code `feature_unavailable` means LavaFlow is not available for this project and it has no LavaFlow records. content: application/json: schema: $ref: '#/components/schemas/Error' - patch: + post: tags: - LavaFlow - summary: Change a LavaFlow skill - description: | - Changes only the fields you send: a skill's `description`, `body` or - `applies_to`, or its `status`: `active` activates a proposed skill or - restores a retired one, and `retired` retires it. `applies_to` merges - member by member: an omitted member keeps its value, and a list you - send replaces it, so `[]` clears it. Citations can't be changed. - A skill is a standing instruction to LavaFlow, so only the project's - owner changes one, signed in as a person: with a sign-in session, a - `volcano login` token whose sign-in is live, or a platform token with - an expiry. A change other than retiring also needs the owner's GitHub - account to be able to push to the project's repository. A project - access token, MCP, a platform token that never expires, a sign-in - that ended, an owner who can't push, and a project with no repository - get `403` with code `person_required`, and nothing is saved. Retiring - needs no repository. Nothing is saved either when the push check - can't be answered (`429` or `503`, with `Retry-After`). - - A project keeps its 200 most recently retired skills: retiring - another deletes the oldest retired skill and its versions. - - Every change but retiring passes the skill check. Only a change to - the text adds a version; activating or restoring doesn't. Text that - holds a credential, a project secret value, an email address, a link - or a host name, an invisible or control character, a CI-skip - directive, or an instruction to skip or weaken tests, CI or - LavaFlow's rules answers `400` with code `skill_refused` and the - `rules` it failed; nothing is saved, and the text is not kept. When - the check can't run, the change answers `503` with code - `scan_unavailable` and `Retry-After`. - - Retiring works while the project's `lavaflow.skills` capability is - unavailable. Any other change answers `400` with code - `feature_unavailable` then. - operationId: updateLavaflowSkill - security: - - UserToken: [] - parameters: - - $ref: '#/components/parameters/LavaflowSkillId' - - $ref: '#/components/parameters/ItemProjectIdQuery' + summary: Start a LavaFlow run + description: | + Starts a run on one of the project's issues. LavaFlow starts runs on + its own only for issues with `exception: true`, and only while it is + on. Start one here for any other issue, or for one recorded before + LavaFlow was turned on. The run follows the project's settings, as + one LavaFlow starts on its own does, and answers `202` while it is + `queued`; read it with `GET /lavaflow/runs/{run_id}`. + + Only the project's owner can start a run, as a person, while their + account is active: with a platform token that expires, `volcano + login`, or a live Volcano dashboard sign-in. A platform token that + never expires, a `volcano login` token + whose sign-in ended, a full-scope project access token, and a request + made through MCP get `403` with code `person_required`; a read-only + project access token is refused as read-only first, without a code, + and so is the owner of a read-only account. + + Every start counts toward the run limits: 5 runs per issue and 200 per + project in any 24 hours. An issue has one run in progress at a time, + so sending the request again while the first run is in progress + answers `409` with code `lavaflow_run_in_progress`. + + A run on a Code Quality issue is a Code Quality run. It starts only + while Code Quality is available to the project, as + `lavaflow.code_quality` in `GET /capabilities` reports, and on for it. + operationId: createLavaflowRun + security: + - UserToken: [] + - AuthUserAccessToken: [] requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/LavaflowSkillUpdate' + $ref: '#/components/schemas/LavaflowRunCreate' responses: - '200': - description: Saved + '202': + description: The run, queued content: application/json: schema: - $ref: '#/components/schemas/LavaflowSkill' + $ref: '#/components/schemas/LavaflowRun' '400': - description: 'The body is invalid: no field to change, an unknown field, or a field past its size. Code `skill_refused` means the check refused the text, and `rules` names why. Code `feature_unavailable` means the change does more than retire the skill while the project''s `lavaflow.skills` capability is unavailable.' + description: 'The body is invalid: `project_id` or `issue_id` missing or not a UUID, or an unknown field. Code `feature_unavailable` means the issue is a Code Quality issue and Code Quality is not available.' content: application/json: schema: - $ref: '#/components/schemas/LavaflowSkillError' + $ref: '#/components/schemas/Error' '401': description: Not authenticated content: @@ -10395,73 +10913,72 @@ paths: schema: $ref: '#/components/schemas/Error' '403': - description: 'Code `person_required` means the change was not made by the project''s owner signed in as a person: a full-scope project access token, MCP, a platform token that never expires, or a `volcano login` token whose sign-in ended made it. For a change other than retiring, it also means the owner''s GitHub account can''t push to the project''s repository, or the project has none. Without a code: a read-only project access token made it, the owner''s account is read-only, or the owner''s plan could not be read; retry later.' + description: 'Code `person_required` means the request didn''t come from the owner''s live person credential: a platform token that never expires, a `volcano login` token whose sign-in ended, a full-scope project access token, or MCP made it. Start a run with a platform token that expires, `volcano login`, or the dashboard. Code `plan_required` means the owner''s plan does not include LavaFlow, or, for a Code Quality issue, Code Quality. Without a code: a read-only project access token made the request, the owner''s account is read-only or inactive, or the owner''s plan could not be read; retry later.' content: application/json: schema: $ref: '#/components/schemas/Error' '404': - description: Not found, as the read answers. Code `feature_unavailable` means LavaFlow is not available for the project and it has no LavaFlow records. + description: Not found. A project the caller can't read answers exactly like one that doesn't exist, and so does one being deleted. Code `issue_not_found` means the project has no issue `issue_id`; an issue of another project answers the same. Code `feature_unavailable` means LavaFlow is not available for this project. content: application/json: schema: $ref: '#/components/schemas/Error' '409': - description: 'Code `skill_limit_reached` means the change would take the project past a cap: 100 active or 50 proposed skills, or 1 MiB of skill text across every version the project keeps. Without a code, another change to the skill landed first, or the project now points at another repository than the push check admitted; read the skill and send the change again.' + description: The run did not start. Code `lavaflow_disabled` means LavaFlow is off for the project, or, for a Code Quality issue, Code Quality is; turn it on. Code `repository_required` means LavaFlow was turned on for a repository the project no longer links, and `repository_changed` that the project links another repository than LavaFlow was turned on for; turn LavaFlow on again. Code `lavaflow_run_in_progress` means the issue has a run in progress. content: application/json: schema: $ref: '#/components/schemas/Error' '413': - description: Request body exceeds 65,536 bytes + description: Request body exceeds 4,096 bytes content: application/json: schema: $ref: '#/components/schemas/Error' '429': - description: The project made more than 10 skill changes in the last minute, its changes used the day's 200 checks, or the owner's GitHub push access was checked too often. Nothing was saved. Try again after `Retry-After`. - headers: - Retry-After: - description: Seconds to wait before changing a skill again. - schema: - type: integer - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '503': - description: Code `scan_unavailable` means the check could not run. Without a code, the owner's GitHub push access could not be checked. Either way nothing was saved. Try again after `Retry-After`. + description: A run limit is reached. Code `issue_run_limit_reached` means the issue started 5 runs in the last 24 hours, and `project_run_limit_reached` that the project started 200. Try again after `Retry-After`. headers: Retry-After: - description: Seconds to wait before changing the skill again. + description: Seconds until the limit has room for the run. schema: type: integer content: application/json: schema: $ref: '#/components/schemas/Error' - delete: + /lavaflow/runs/{run_id}: + get: tags: - LavaFlow - summary: Delete a LavaFlow skill + summary: Get a LavaFlow run description: | - Deletes a skill and every version of its text. A record that it - existed stays, without its text. Only the project's owner deletes a - skill, signed in as a person: with a sign-in session, a `volcano - login` token whose sign-in is live, or a platform token with an - expiry. A project access token, MCP, a platform token that never - expires, and a sign-in that ended get `403` with code - `person_required`. Deleting needs no repository, and works while the - project's `lavaflow.skills` capability is unavailable. - operationId: deleteLavaflowSkill + Returns a run, with its diagnosis, the log lines it cites, its diff, + its review, including the findings the review left open and what it + asks a person to decide, and whether the repository's own checks + passed when LavaFlow ran them on the fix, with the commands they ran. + The run's project authorizes the read, so `project_id` is optional. + The text holds the project's logs and source code, so this endpoint + takes the same access as the project's log endpoints. + + A run held because the repository's workflows could run its fix with + the repository's secrets before a person approves it + (`pull_request_skipped: ungated_workflows`) lists every such job in + `held_workflows`, beside the fix's `diff` and `diff_sha256`. + operationId: getLavaflowRun security: - UserToken: [] + - ProjectAccessToken: [] parameters: - - $ref: '#/components/parameters/LavaflowSkillId' + - $ref: '#/components/parameters/LavaflowRunId' - $ref: '#/components/parameters/ItemProjectIdQuery' responses: - '204': - description: Deleted + '200': + description: The run + content: + application/json: + schema: + $ref: '#/components/schemas/LavaflowRun' '400': description: '`project_id` is given and not a UUID.' content: @@ -10475,53 +10992,81 @@ paths: schema: $ref: '#/components/schemas/Error' '403': - description: 'Code `person_required` means the project''s owner, signed in as a person, did not make the request: a full-scope project access token, MCP, a platform token that never expires, or a `volcano login` token whose sign-in ended made it. Without a code: a read-only project access token made it, the owner''s account is read-only, or the owner''s plan could not be read; retry later.' + description: Code `plan_required` means the owner's plan does not include LavaFlow and the project has no LavaFlow records. Without a code, the owner's plan could not be read; retry later. content: application/json: schema: $ref: '#/components/schemas/Error' '404': - description: Not found, as the read answers. Code `feature_unavailable` means LavaFlow is not available for the project and it has no LavaFlow records. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - '429': - description: The project made more than 10 skill changes in the last minute. Nothing was deleted. Try again after `Retry-After`. - headers: - Retry-After: - description: Seconds to wait before changing a skill again. - schema: - type: integer + description: Not found. A run of a project the caller can't read, or of a project being deleted, answers exactly like one that doesn't exist, and so does a run of another project than a given `project_id`. Code `feature_unavailable` means LavaFlow is not available for the project and it has no LavaFlow records. content: application/json: schema: $ref: '#/components/schemas/Error' - /lavaflow/skill-versions: - get: + /lavaflow/held-fix-opens: + post: tags: - LavaFlow - summary: List a LavaFlow skill's versions + summary: Open a held LavaFlow fix description: | - Lists a skill's versions, newest first, each with its text, source and - content hash. A skill keeps its 20 newest versions and its active one. - Project access tokens can list them, including read-only ones. - operationId: listLavaflowSkillVersions + Opens the pull request for a fix LavaFlow held because the + repository's workflows could run it with the repository's secrets + before a person approves it (`pull_request_skipped: + ungated_workflows`). Read the run first: send its `id` as `run_id`, + with the `diff_sha256` and `held_workflows.jobs_sha256` it served, to + say you read that diff and that list of jobs. LavaFlow opens the fix it + saved, exactly as reviewed, past those jobs only. It writes no new + fix. + + Right before it queues the run, LavaFlow serves the diff again and + reads the workflows again. A diff served differently since you read + it, or a job list or a commit the workflows were read at that changed, + answers `409` with code `run_changed`; read the run again, which lists + what LavaFlow found. The response is the run, `202` while it is + `queued`. LavaFlow reads the workflows again before it opens the pull + request, and once more as it pushes the fix: a job you didn't read, a + new commit on a branch the workflows were read on, even one that + changes no job, or a production branch other than the one you read + them on holds the fix again with a new list. + + Opening a fix lets its pull request open, nothing more. LavaFlow + starts no CI on it and never merges it, as for every fix opened past + ungated workflows; a person pushes to the branch or merges it. The + pull request's description names who opened it and lists the jobs. + One exception: when LavaFlow's read before the pull request opens + finds no job that runs the fix before a person approves it, because + the workflows were gated since you read them, the fix opens as any + other fix and follows the project's merge settings. A run whose + `held_workflows` lists no job opens the same way. + + Only the project's owner can open a fix, as a person, while their + account is active: with a `volcano login` token + whose sign-in is live, or a platform token that expires. Their GitHub + account must be able to push to the project's repository. A project + access token, a request made through MCP, a platform token that never + expires, and a sign-in that ended get `403` with code + `person_required`. Opening a fix uses one of the run's attempts: the + attempt that opens it is one of the run's, so a run held again on its + last attempt can't be opened again. It starts no new run and counts + toward no run limit. + operationId: createLavaflowHeldFixOpen security: - UserToken: [] - - ProjectAccessToken: [] - parameters: - - $ref: '#/components/parameters/ProjectIdQuery' - - $ref: '#/components/parameters/LavaflowSkillIdQuery' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LavaflowHeldFixOpen' responses: - '200': - description: The skill's versions + '202': + description: The run, queued to open its fix content: application/json: schema: - $ref: '#/components/schemas/LavaflowSkillVersionList' + $ref: '#/components/schemas/LavaflowRun' '400': - description: '`project_id` or `skill_id` is missing or not a UUID.' + description: 'The body is invalid: `project_id` or `run_id` missing or not a UUID, `diff_sha256` or `jobs_sha256` missing or not 64 lowercase hex characters, or an unknown field.' content: application/json: schema: @@ -10533,63 +11078,123 @@ paths: schema: $ref: '#/components/schemas/Error' '403': - description: Code `plan_required` means the owner's plan does not include LavaFlow and the project has no LavaFlow records. Without a code, the owner's plan could not be read; retry later. + description: 'Code `person_required` means the request didn''t come from the owner''s live person credential: a full-scope project access token, MCP, a platform token that never expires, or a `volcano login` token whose sign-in ended made it, or the owner''s GitHub account can''t push to the project''s repository, or the project has none. Open the fix with a platform token that expires, or `volcano login`. Code `plan_required` means the owner''s plan does not include LavaFlow. Without a code: a read-only project access token made the request, the owner''s account is read-only or inactive, or the owner''s plan could not be read; retry later.' content: application/json: schema: $ref: '#/components/schemas/Error' '404': - description: Not found. A project the caller can't read answers exactly like one that doesn't exist, and a skill of another project answers like an unknown one. Code `feature_unavailable` means LavaFlow is not available for this project and it has no LavaFlow records. + description: Not found. A project the caller can't read answers exactly like one that doesn't exist, and so does one being deleted. A run of another project than `project_id` answers as one that doesn't exist. Code `feature_unavailable` means LavaFlow is not available for this project. content: application/json: schema: $ref: '#/components/schemas/Error' - /lavaflow/global-skills: - get: + '409': + description: 'Nothing was queued. Code `run_not_held` means the run holds no fix you can open: it was not held for ungated workflows, its pull request opened or is queued to, its diff is cut short or withholds a file, or LavaFlow could not list every job that held it (`held_workflows` is `null`). Code `run_changed` means the diff or the jobs are not the ones you named: read the run again. Code `run_attempts_exhausted` means the run used all its retries, so LavaFlow can''t open its fix any more; apply the fix yourself from the run''s `diff`, and where the diff is cut short or withholds a file, from its `diagnosis`. Code `lavaflow_disabled` means LavaFlow is off for the project; turn it on. Code `repository_required` means LavaFlow was turned on for a repository the project no longer links, `repository_changed` that the project links another repository than LavaFlow was turned on for, or than the fix was written for, and `repository_unreadable` that LavaFlow can no longer read the repository''s workflows. Code `lavaflow_run_in_progress` means another run of the issue is in progress.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '413': + description: Request body exceeds 4,096 bytes + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '429': + description: The project, or its owner across their projects, used up the hour's checks of the owner's GitHub push access. Nothing was queued. Try again after `Retry-After`. + headers: + Retry-After: + description: Seconds until the budget's hour ends. + schema: + type: integer + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '503': + description: GitHub didn't answer the owner's push check or the read of the workflows. Nothing was queued. Try again after `Retry-After`. + headers: + Retry-After: + description: Seconds to wait before trying again. + schema: + type: integer + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /issues: + post: tags: - - LavaFlow - summary: List Volcano's global skills - description: | - Lists the skills Volcano wrote for every project. Volcano writes and - reviews each one, and none holds customer content. They belong to no - project, so items carry `scope` and no `project_id`; `project_id` - authorizes the caller. While the project's `lavaflow.skills` - capability is unavailable, the list is empty. - - Project access tokens can list them, including read-only ones. - operationId: listLavaflowGlobalSkills + - Issues + summary: Create an issue + description: | + Records an issue you write on the project `project_id` names: a + description of what to fix, in your words, and optionally a title. The + issue has `source` `request`, the + project as its resource, and status `open`. With LavaFlow on, LavaFlow + starts a run on it by itself, as on a new error: the run follows the + project's LavaFlow settings and counts toward the run limits. Follow + it with `GET /lavaflow/runs?project_id=…&issue_id=…`. Where none + starts, as with LavaFlow off, start one with `POST /lavaflow/runs`. + + The issue counts toward the project's 1,000 open issues, with runtime, + build and reported issues; at that limit it is refused with code + `open_issue_limit_reached`. Resolve or ignore issues to make room. + + Only the project's owner can create an issue, as a person: with + `volcano login`, a live Volcano dashboard sign-in, or a platform token + that expires. A full-scope project access + token, MCP and a never-expiring platform token are refused with code + `person_required`, as starting a run is, and a read-only project access + token or account with an uncoded `403`, because creating one starts a + run, which sends the description to an AI service with the project's + source. A project access token is refused before its `project_id` is + looked up. List, read and update the issue under + `/projects/{id}/issues`. + operationId: createIssue security: - UserToken: [] - - ProjectAccessToken: [] - parameters: - - $ref: '#/components/parameters/ProjectIdQuery' + - AuthUserAccessToken: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateIssueRequest' responses: - '200': - description: Volcano's global skills + '201': + description: Created content: application/json: schema: - $ref: '#/components/schemas/LavaflowGlobalSkillList' + $ref: '#/components/schemas/Issue' '400': - description: '`project_id` is missing or not a UUID.' + description: The request body is invalid, or its description or title is blank. content: application/json: schema: $ref: '#/components/schemas/Error' - '401': - description: Not authenticated + '403': + description: 'Code `person_required`: only the project''s owner, as a person, can create an issue. A project access token or MCP is refused so even where writing issues isn''t available. A read-only account is refused too. In local mode, which runs no LavaFlow, its own token can create one.' content: application/json: schema: $ref: '#/components/schemas/Error' - '403': - description: Code `plan_required` means the owner's plan does not include LavaFlow and the project has no LavaFlow records. Without a code, the owner's plan could not be read; retry later. + '404': + description: The project `project_id` names was not found, or you can't use it. Code `feature_unavailable` means writing issues is not available in this environment, as the `issues.create` capability reports. content: application/json: schema: $ref: '#/components/schemas/Error' - '404': - description: Not found. A project the caller can't read answers exactly like one that doesn't exist, and so does one being deleted. Code `feature_unavailable` means LavaFlow is not available for this project and it has no LavaFlow records. + '409': + description: 'Code `open_issue_limit_reached`: the project has 1,000 open issues. Resolve or ignore some, then try again.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '413': + description: The request body is larger than 64 KiB. content: application/json: schema: @@ -10605,7 +11210,7 @@ paths: type and stack, or the same message when there is no stack; the deploys of one function or frontend whose own build failed with the same first error (`source` `build`); or one Code Quality finding or - reported problem. + reported problem, or one issue a person wrote (`source` `request`). Project access tokens can list issues, including read-only ones. operationId: listIssues @@ -13390,6 +13995,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Error' + '409': + description: '`code: function_served_by_candidate` - a promoted preview serves a function whose environment this write changes; the preview keeps the variables it was built with and the write would reach only the function''s own build, so roll the function back to its own build, or deploy it, first.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' '503': description: Private variable membership writes are disabled during rollout content: @@ -15841,6 +16452,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Error' + '409': + description: '`code: function_served_by_candidate` - a promoted preview serves a function whose environment this write changes; the preview keeps the variables it was built with and the write would reach only the function''s own build, so roll the function back to its own build, or deploy it, first.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' '503': description: Private variable membership writes are disabled during rollout content: @@ -15870,6 +16487,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Error' + '409': + description: '`code: function_served_by_candidate` - a promoted preview serves a function whose environment this write changes; the preview keeps the variables it was built with and the write would reach only the function''s own build, so roll the function back to its own build, or deploy it, first.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' /auth/password-policy: get: tags: @@ -15970,8 +16593,9 @@ paths: Forbidden - Signups disabled, anon key lacks signup permission, or the email domain is not in `allowed_email_domains`. The internal `anonymous.volcano.internal` and `volcano.local` domains are reserved - for the anonymous and Builder debug accounts Volcano creates, and are - refused whatever the project allows. + for anonymous accounts and for the debug accounts an earlier Builder + created (Volcano no longer creates them), and are refused whatever the + project allows. '429': description: Rate limit exceeded '503': @@ -19785,6 +20409,12 @@ paths: revoked and expired ones are hidden. Pass `include_revoked=true` to see them, which is how you find out what a key did before it stopped working. + Delegated grants are hidden by default too. A first-party app you have + allowed to act on this project mints one every few minutes, and you + revoke the app's access as a whole rather than grant by grant. Pass + `include_delegated=true` to list them; they have scope `delegated`. + They never count toward the project's limit of 100 live tokens. + Requires a platform token. A project access token cannot manage project access tokens, so a leaked credential cannot enumerate or replace itself. operationId: listProjectAccessTokens @@ -19804,6 +20434,15 @@ paths: schema: type: boolean default: false + - name: include_delegated + in: query + required: false + description: | + Include delegated grants: short tokens a first-party app mints for + one run from the access you allowed it. + schema: + type: boolean + default: false responses: '200': description: Successful response @@ -19910,7 +20549,9 @@ paths: present, so a gap reads as zero rather than missing. Revoked tokens are included, because the traffic they made before - revocation is usually the reason you are looking. + revocation is usually the reason you are looking. Delegated grants are + not, as the token list hides them by default; read one grant's usage by + its ID. `days` defaults to 30 and is capped at 60, which is also how long per-day counts are retained — a longer window cannot be answered. @@ -20156,6 +20797,32 @@ paths: **WARNING:** Service keys bypass all RLS policies! Store securely and NEVER expose in frontend code. + + A key that holds `ai.invoke` is an AI key for the Volcano AI gateway, + which calls models on the project's behalf. Volcano pays the model + provider for those calls; the project is not billed for them. It holds `ai.invoke` and nothing else, and is marked as created + by a person, so the gateway can tell it from every other key: a key + that holds `"*"`, and a key created before AI keys existed, never + count. Only a person creates one: signed in to the dashboard, or with + a `volcano login` token whose sign-in is live. A project access token, + a request made through MCP, a platform token created through the token + API, and a sign-in that ended get `403` with code `person_required`. + On a local server, the local platform token counts as the person. + Reading or regenerating an AI key takes the same person as creating + it, and lists leave its value out. An AI key only mints run tokens: + the database API and realtime refuse it, whether or not service key + scopes apply to them yet. While the `ai_gateway` capability + is unavailable, asking for `ai.invoke` answers `404` with code + `feature_unavailable`; existing keys keep working with the other + service key routes. + + A key that holds `grants.mint` lets a first-party app, such as the + Builder, mint delegated grants. It too holds that permission alone + and takes a person, as an AI key does. Only a registered first-party + app's project may hold one, and only its owner creates it: another + project gets `403` with code + `first_party_app_required`. The `ai_gateway` capability doesn't apply + to it, and it carries no AI marker. operationId: createServiceKey security: - UserToken: [] @@ -20201,7 +20868,8 @@ paths: database API and realtime, a key without "*" gets 403 from the database API, needs realtime.subscribe for broadcast and presence channels and realtime.publish to publish, and needs "*" for table changes. `ai.invoke` - is reserved: this route refuses it with 400, and "*" doesn't include it. + and `grants.mint` are reserved: "*" doesn't include them, only a person + may ask for one, and it must be the key's only permission. example: - functions.invoke - locks.manage @@ -20213,7 +20881,19 @@ paths: schema: $ref: '#/components/schemas/ServiceKey' '400': - description: Invalid key name or request + description: Invalid key name or request, or `ai.invoke` or `grants.mint` asked for beside another permission. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: 'Code `person_required` means a person did not ask for a key that holds `ai.invoke` or `grants.mint`: a full-scope project access token, MCP, a platform token created through the token API, or a `volcano login` token whose sign-in ended made the request. Create the key signed in to the dashboard or with `volcano login`. Code `first_party_app_required` means `grants.mint` was asked for on a project that is not a registered first-party app''s. Without a code: the project belongs to another account, a read-only project access token made the request, or the account is read-only.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Not found. Code `feature_unavailable` means `ai.invoke` was asked for while the `ai_gateway` capability is unavailable. content: application/json: schema: @@ -20251,9 +20931,13 @@ paths: $ref: '#/components/schemas/ServiceKey' '403': description: | - The key belongs to another project, a read-only project access token asked - for a credential, or a project access token asked for a key that holds - `ai.invoke`. + Without a code: the key belongs to another project, or a read-only + project access token asked for a credential. + Code `person_required` means the key holds `ai.invoke` or + `grants.mint` and a person signed in did not make the request: a + full-scope project access token, MCP, a platform token created + through the token API, or a `volcano login` token whose sign-in + ended made it. Use the dashboard or `volcano login`. content: application/json: schema: @@ -20312,9 +20996,13 @@ paths: $ref: '#/components/schemas/ServiceKey' '403': description: | - The key belongs to another project, a read-only project access token asked - to regenerate it, or a project access token asked to regenerate a key that - holds `ai.invoke`. + Without a code: the key belongs to another project, or a read-only + project access token asked to regenerate it. + Code `person_required` means the key holds `ai.invoke` or + `grants.mint` and a person signed in did not make the request: a + full-scope project access token, MCP, a platform token created + through the token API, or a `volcano login` token whose sign-in + ended made it. Use the dashboard or `volcano login`. content: application/json: schema: @@ -20685,6 +21373,98 @@ paths: application/json: schema: $ref: '#/components/schemas/Error' + /realtime/v1/publish: + post: + tags: + - Realtime + summary: Publish a message to a Realtime channel + description: | + Sends one message to a broadcast or grant channel of the project + embedded in the service-role key, for a backend that holds no + WebSocket, such as a function. The key needs `realtime.publish`. + + `channel` is a client channel: `broadcast:`, or + `grant:` for a channel only Realtime grant holders watch. Every + subscriber receives `{"type": , "payload": }` as the + message data, the shape `channel.on(, ...)` matches. + + The publish is metered like any server publish: the publish plus one + per subscriber it reaches. Messages are not stored; a subscriber that + was not connected misses it. A project's publishes share the rate a + WebSocket client publishes at; over it the answer is 429 + `realtime_publish_rate_limited`. + operationId: publishRealtimeMessage + security: + - ServiceRoleKey: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/RealtimePublishRequest' + responses: + '202': + description: The message was sent to the channel's subscribers + content: + application/json: + schema: + $ref: '#/components/schemas/RealtimePublishResult' + '400': + description: 'The body breaks the schema, such as a channel that is not `broadcast:` or `grant:`, an invalid event or payload; these answers carry no code. Code `invalid_channel`: the server refuses the channel''s name. Code `feature_unavailable`: a grant channel while Realtime grants are off.' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '401': + description: Missing or invalid credentials + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '403': + description: A non-service credential was supplied or the service key lacks `realtime.publish` + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '404': + description: Publishing over HTTP is not available here (`feature_unavailable`). `GET /capabilities` lists `realtime.http_publish` unavailable while it is. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '409': + description: Realtime, or broadcast for a broadcast channel, is off for the project (`realtime_disabled`) + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '413': + description: The message is larger than the project's Realtime message size (`message_too_large`) + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '429': + description: The project used its monthly Realtime messages (`realtime_message_limit_exceeded`), or is publishing faster than its publish rate (`realtime_publish_rate_limited`) + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + '503': + description: | + Realtime is paused (`feature_paused`); try again after + `Retry-After`. Without a code, the message could not be metered + or sent. + headers: + Retry-After: + description: Seconds to wait before trying again. Sent with `feature_paused`. + schema: + type: integer + content: + application/json: + schema: + $ref: '#/components/schemas/Error' /storage/{bucketName}: get: tags: @@ -21508,16 +22288,21 @@ paths: | `sandboxes.network_isolation` | Creating sessions and one-shot executions with `network.egress` `deny_all`; existing `deny_all` sessions work either way | | `sandboxes.output_not_kept` | Commands that keep no output: `keep_output: false` on a command, and `executions.keep_output: false` on a session; commands that keep output work either way | | `issues` | The Issues API: listing, reading, and updating grouped runtime errors | + | `issues.create` | Writing an issue with `POST /issues`; written issues already recorded read and update either way | | `lavaflow` | LavaFlow, which diagnoses a project's issues and opens pull requests that fix them. Here it reports only whether LavaFlow is released in this environment; whether a project has it comes from `GET /projects/{id}/capabilities` | | `lavaflow.merge` | LavaFlow merging its fixes, with `autonomy: merge`. Here it reports only whether merging is released in this environment; whether a project has it comes from `GET /projects/{id}/capabilities` | | `lavaflow.lineage` | LavaFlow following up its fixes: linking a fix's recurrence or a new issue its deploy caused to the fix, the follow-up runs, and the lineage holds. Here it reports only whether fix lineage is released in this environment; whether a project has it comes from `GET /projects/{id}/capabilities` | + | `lavaflow.open_pr_ci_start` | A fix a person merges, as under `autonomy: open_pr`, opening ready for review with LavaFlow running its CI once, unless the repository may run CI outside GitHub Actions; unavailable, such a fix opens as a draft whose commit skips CI. Here it reports only whether this is released in this environment; whether a project has it comes from `GET /projects/{id}/capabilities` | | `lavaflow.code_quality` | LavaFlow Code Quality, which reviews the code each frontend production deploy changes. Here it reports only whether Code Quality is released in this environment; whether a project has it comes from `GET /projects/{id}/capabilities` | | `lavaflow.slack` | Reporting problems to LavaFlow from Slack: installing the Volcano Slack app, connecting Slack identities, and binding channels to projects. Here it reports whether LavaFlow is released, the Slack app is set up, and Slack reports have launched in this environment; whether a project has it comes from `GET /projects/{id}/capabilities` | + | `lavaflow.aikido` | LavaFlow fixing the security issues Aikido finds: connecting an Aikido workspace and binding projects to it. Here it reports whether LavaFlow is released and Aikido reports have launched in this environment; whether a project has it comes from `GET /projects/{id}/capabilities` | | `functions.response_streaming` | Streaming an HTTP-mode function's response on its own URL as the function writes it | | `frontend_routes` | Creating and changing Frontend routes; listing, deleting, and serving existing ones work either way | | `frontends.candidates` | Creating, redeploying, promoting and rolling back to a frontend Candidate; reading, deleting and rolling back to the frontend's own runtime always work | | `databases.migrations` | Starting migration runs and recording a baseline; reading history and runs works either way | | `shares` | Creating, switching on and publishing shares, and forking one | + | `ai_gateway` | The Volcano AI gateway: creating a key that holds `ai.invoke` with `POST /projects/{id}/service-keys`, and minting the first run token of a run; reading, regenerating and deleting existing keys, and reading, extending, revoking and minting again for a run already minted for, work either way | + | `realtime.http_publish` | Publishing a message with `POST /realtime/v1/publish`; while Realtime is paused it stays available, and the route answers `503` `feature_paused` | A capability missing from the list is unavailable, and a capability under another, such as `sandboxes.sessions`, is unavailable whenever its parent is. @@ -21532,6 +22317,12 @@ paths: function's own URL still answers and sends a streamed response whole, once the function finishes, up to 6 MiB with headers; a larger one fails the invocation. Frontend Function routes stream either way. + + After these, the list names each first-party app Volcano runs in this + environment, such as `builder`, by its own ID. Such an app is available + while it accepts new work. When only the app's own release is off, work + it already accepted continues; when first-party app mounts are off, its + mount refuses every request with 404 `feature_unavailable`. operationId: listCapabilities security: [] responses: @@ -21565,6 +22356,8 @@ paths: status: available - id: shares status: unavailable + - id: ai_gateway + status: unavailable /openapi.json: get: tags: @@ -22054,6 +22847,14 @@ components: type: string format: uuid description: Frontend Candidate ID + FunctionCandidateId: + name: candidateId + in: path + required: true + schema: + type: string + format: uuid + description: Function preview (Candidate) ID FrontendFunctionRouteId: name: routeId in: path @@ -22345,7 +23146,7 @@ components: schema: type: integer minimum: 1 - maximum: 90 + maximum: 217 default: 30 description: Number of UTC days in the window, ending today. LavaflowResourceIdFilter: @@ -22401,29 +23202,6 @@ components: schema: $ref: '#/components/schemas/LavaflowRunStatus' description: Only runs in this status. - LavaflowSkillId: - name: skill_id - in: path - required: true - schema: - type: string - format: uuid - description: LavaFlow skill ID - LavaflowSkillIdQuery: - name: skill_id - in: query - required: true - schema: - type: string - format: uuid - description: The skill whose versions to list. - LavaflowSkillStatusFilter: - name: status - in: query - required: false - schema: - $ref: '#/components/schemas/LavaflowSkillStatus' - description: Only skills in this status. SlackRedirect: name: redirect in: query @@ -22526,6 +23304,14 @@ components: type: string format: uuid description: The project to read. A project the caller can't read answers like one that doesn't exist. + ConnectorId: + name: connector_id + in: path + required: true + description: The connector's ID, from listing connectors + schema: + type: string + format: uuid ItemProjectIdQuery: name: project_id in: query @@ -22852,6 +23638,10 @@ components: - ready - unavailable - deleting + x-enum-varnames: + - SandboxTemplateStatusReady + - SandboxTemplateStatusUnavailable + - SandboxTemplateStatusDeleting created_at: type: string format: date-time @@ -23661,6 +24451,10 @@ components: - available - unavailable - read_only + x-enum-varnames: + - CapabilityStatusAvailable + - CapabilityStatusUnavailable + - CapabilityStatusReadOnly description: '`available` means the capability accepts new work; a temporary outage still answers `503`. `unavailable` means requests that start new work answer `404` or `400` with code `feature_unavailable`, or with the capability''s `code` when it has one; while the owner''s plan can''t be read, they answer `403` without a code. `read_only` means the capability takes no new work for the project, but what the project already has stays readable; only a project''s list reports it. Treat any other value as `unavailable`.' CapabilityList: type: object @@ -24862,16 +25656,13 @@ components: example: my-awesome-app template_id: type: string - description: Optional trusted starter template identifier. The server resolves immutable source and database initialization artifacts. Callers cannot supply artifact locations or database credentials. Creation accepts an asynchronous installation; poll the individual project until template_installation.status is ready before using the app. Use pixel-board, trellini, or collab-pad for the configured starter bundles. The official-starter legacy identifier has environment-specific availability. Cannot be combined with initialPrompt. + description: Optional trusted starter template identifier. The server resolves immutable source and database initialization artifacts. Callers cannot supply artifact locations or database credentials. Creation accepts an asynchronous installation; poll the individual project until template_installation.status is ready before using the app. Use pixel-board, trellini, or collab-pad for the configured starter bundles. The official-starter legacy identifier has environment-specific availability. enum: - pixel-board - trellini - collab-pad - official-starter example: pixel-board - initialPrompt: - type: string - description: Optional initial builder prompt. Cannot be combined with template_id. all_regions: type: boolean description: | @@ -26587,6 +27378,42 @@ components: - impact - message - remediation + SharedVariablesReplaceResult: + type: object + additionalProperties: false + required: + - skipped_functions + properties: + skipped_functions: + type: array + description: Functions the replacement changes whose variables were not synchronized. + items: + $ref: '#/components/schemas/SkippedServedFunction' + SkippedServedFunction: + type: object + additionalProperties: false + required: + - id + - name + - code + - message + properties: + id: + type: string + format: uuid + description: Function ID. + name: + type: string + description: Function name. + code: + type: string + description: | + Why the function was left out. Clients must accept codes not listed here. + `function_served_by_candidate` - a promoted preview serves the function and keeps the + variables it was built with. + message: + type: string + description: What brings the function in line. ProjectImportSummary: type: object properties: @@ -26767,9 +27594,128 @@ components: $ref: '#/components/schemas/SlackChannel' required: - channels - LavaflowSlackChannel: + ConnectorType: + type: string + description: The outside service a connector links to. + enum: + - slack + - aikido + Connector: + type: object + description: A link from Volcano to an outside service. A `slack` connector is a Slack workspace the Volcano app is installed in, shared by every Volcano account with a Slack identity connected there. An `aikido` connector is an Aikido workspace one Volcano account connected with its own credentials. + properties: + id: + type: string + format: uuid + type: + $ref: '#/components/schemas/ConnectorType' + name: + type: string + description: The connector's name in its service, such as the Slack or Aikido workspace's name. + slack: + $ref: '#/components/schemas/SlackConnector' + aikido: + $ref: '#/components/schemas/AikidoConnector' + removable: + type: boolean + description: Whether the caller can remove the connector. Only the person who installed the Volcano app in a Slack workspace can; an `aikido` connector is always the caller's own. + created_at: + type: string + format: date-time + required: + - id + - type + - name + - removable + - created_at + SlackConnector: + type: object + description: A `slack` connector's workspace. Present when `type` is `slack`. + properties: + team_id: + $ref: '#/components/schemas/SlackTeamId' + required: + - team_id + AikidoConnector: + type: object + description: An `aikido` connector's workspace. Present when `type` is `aikido`. + properties: + region: + $ref: '#/components/schemas/AikidoRegion' + workspace_id: + type: integer + format: int64 + description: The workspace's ID in Aikido, which its webhook deliveries name. + required: + - region + - workspace_id + AikidoRegion: + type: string + description: 'The Aikido region the workspace lives in: `eu` for app.aikido.dev, `us` for app.us.aikido.dev, `au` for app.au.aikido.dev, and `me` for app.me.aikido.dev.' + enum: + - eu + - us + - au + - me + AikidoSeverity: + type: string + description: An Aikido issue severity, lowest first. + enum: + - low + - medium + - high + - critical + ConnectorCreate: + type: object + additionalProperties: false + properties: + type: + type: string + description: The service to connect. Slack installs with `POST /user/slack/installations`. + enum: + - aikido + aikido: + $ref: '#/components/schemas/AikidoConnectorCreate' + required: + - type + - aikido + AikidoConnectorCreate: + type: object + additionalProperties: false + description: The Aikido workspace's REST API client and webhook signing secret. + properties: + region: + $ref: '#/components/schemas/AikidoRegion' + client_id: + type: string + minLength: 1 + maxLength: 512 + client_secret: + type: string + minLength: 1 + maxLength: 512 + webhook_secret: + type: string + minLength: 1 + maxLength: 512 + description: The signing secret from Aikido's webhooks page, which verifies its deliveries. + required: + - region + - client_id + - client_secret + - webhook_secret + ConnectorsResponse: type: object - description: A Slack channel that reports problems to LavaFlow for a project. + properties: + connectors: + type: array + items: + $ref: '#/components/schemas/Connector' + required: + - connectors + LavaflowConnectorBinding: + type: object + description: 'A place in a connector that reports problems to LavaFlow for a project: a Slack channel, or an Aikido workspace''s issues on the project''s repository.' properties: id: type: string @@ -26778,6 +27724,28 @@ components: project_id: type: string format: uuid + connector_type: + $ref: '#/components/schemas/ConnectorType' + connector_id: + type: string + format: uuid + description: The connector the binding reports through. Omitted while the Volcano app is not installed in the binding's Slack workspace; the binding reports again once it is. + slack: + $ref: '#/components/schemas/LavaflowSlackBinding' + aikido: + $ref: '#/components/schemas/LavaflowAikidoBinding' + created_at: + type: string + format: date-time + required: + - id + - project_id + - connector_type + - created_at + LavaflowSlackBinding: + type: object + description: The Slack channel a binding reports from. Present when `connector_type` is `slack`. + properties: team_id: $ref: '#/components/schemas/SlackTeamId' team_name: @@ -26785,41 +27753,73 @@ components: description: The workspace's name, or empty while the Volcano app is not installed in it. channel_id: $ref: '#/components/schemas/SlackChannelId' - created_at: - type: string - format: date-time required: - - id - - project_id - team_id - team_name - channel_id - - created_at - LavaflowSlackChannelsResponse: + LavaflowAikidoBinding: type: object + description: The Aikido workspace a binding reports issues from. Present when `connector_type` is `aikido`. properties: - channels: + workspace_name: + type: string + min_severity: + $ref: '#/components/schemas/AikidoSeverity' + required: + - workspace_name + - min_severity + LavaflowConnectorBindingsResponse: + type: object + properties: + bindings: type: array items: - $ref: '#/components/schemas/LavaflowSlackChannel' + $ref: '#/components/schemas/LavaflowConnectorBinding' required: - - channels - LavaflowSlackChannelBinding: + - bindings + LavaflowConnectorBindingCreate: type: object additionalProperties: false properties: project_id: type: string format: uuid - description: The project the channel reports for. - team_id: - $ref: '#/components/schemas/SlackTeamId' + description: The project the place reports for. + connector_id: + type: string + format: uuid + description: The connector to bind, from `GET /connectors`. + slack: + $ref: '#/components/schemas/LavaflowSlackBindingTarget' + aikido: + $ref: '#/components/schemas/LavaflowAikidoBindingTarget' + required: + - project_id + - connector_id + description: Send exactly one of `slack` and `aikido`, matching the connector's type. + oneOf: + - required: + - slack + - required: + - aikido + LavaflowSlackBindingTarget: + type: object + additionalProperties: false + description: The channel to bind, for a `slack` connector. + properties: channel_id: $ref: '#/components/schemas/SlackChannelId' required: - - project_id - - team_id - channel_id + LavaflowAikidoBindingTarget: + type: object + additionalProperties: false + description: What an `aikido` connector reports for the project. Send `aikido`, not `slack`, for an `aikido` connector. + properties: + min_severity: + allOf: + - $ref: '#/components/schemas/AikidoSeverity' + description: 'The lowest severity that starts a LavaFlow run. Defaults to `high`: each run counts against the project''s LavaFlow runs.' GitConnectStartResponse: type: object properties: @@ -27738,6 +28738,36 @@ components: - data - limit - has_more + RealtimePublishRequest: + type: object + additionalProperties: false + properties: + channel: + type: string + maxLength: 75 + pattern: ^(broadcast|grant):[A-Za-z0-9_-]+(:[A-Za-z0-9_-]+)*$ + description: The client channel, `broadcast:` or `grant:`, with a name of at most 64 characters. + event: + type: string + pattern: ^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$ + description: The message type subscribers match on. + payload: + x-go-type: json.RawMessage + x-go-type-skip-optional-pointer: true + description: Any JSON value, sent to subscribers as `payload`. + required: + - channel + - event + - payload + RealtimePublishResult: + type: object + additionalProperties: false + properties: + channel: + type: string + description: The channel the message was sent to. + required: + - channel ProjectLockLeaseRequest: type: object additionalProperties: false @@ -28147,6 +29177,312 @@ components: - status - created_at - updated_at + FunctionCandidate: + type: object + additionalProperties: false + description: | + A copy of an ordinary function built from an uploaded source with the function's own variables, + run on a runtime of its own and invoked at its own host with the project's service key only, so it + can be checked before it is promoted. It has none of the function's schedules or warmers. Fields + that do not apply yet are absent. + properties: + id: + type: string + format: uuid + function_id: + type: string + format: uuid + name: + type: string + maxLength: 128 + slug: + type: string + status: + type: string + enum: + - creating + - ready + - deleting + - error + description: | + `creating` until its first deployment succeeds, `ready` while it serves, `deleting` while its + runtime is removed, and `error` when its deletion gave up and needs an operator. A deleted + preview answers `404`. + exposure: + type: string + enum: + - private + description: A function preview is always private. Only the project's service key, with `functions.invoke`, can invoke it; signed-in users, anon keys and access tokens are refused. + url: + type: string + format: uri + description: Where the preview is invoked. Absent until its first deployment succeeds. + expires_at: + type: string + format: date-time + description: When the preview is deleted on its own. Absent when it is kept until deleted. A preview the function runs, or keeps for a rollback, is not deleted then; it expires once it is neither. + created_by: + type: string + description: The user who created the preview, when a user did. + created_at: + type: string + format: date-time + updated_at: + type: string + format: date-time + current_deployment_id: + type: string + format: uuid + description: | + The deployment the preview serves. Absent until its first deployment succeeds. It differs from + `deployment` while a redeploy runs or after one failed. + deployment: + $ref: '#/components/schemas/FunctionCandidateDeployment' + configuration_status: + type: string + enum: + - current + - changed + description: | + Present while the preview serves a deployment. `current` means that deployment was built with + the variables, runtime and handler the function would give that source now; `changed` means + they differ, or can no longer be resolved. Promotion refuses a preview whose status is + `changed`. + serving: + type: boolean + description: The function runs this preview's build. + kept_for_rollback: + type: boolean + description: A rollback of the function returns to this preview's build. + required: + - id + - function_id + - name + - slug + - status + - exposure + - created_at + - updated_at + - serving + - kept_for_rollback + FunctionCandidateList: + type: object + additionalProperties: false + properties: + data: + type: array + items: + $ref: '#/components/schemas/FunctionCandidate' + required: + - data + FunctionCandidateDeployment: + type: object + additionalProperties: false + properties: + id: + type: string + format: uuid + status: + type: string + enum: + - provisioning + - active + - failed + description: | + `provisioning` while the build and deploy run, `active` once the preview serves this + deployment, and `failed` when it could not be built or deployed. A failed deployment of a + preview that already served keeps the previous deployment serving. + operation: + type: string + enum: + - deploy + - redeploy + image_digests: + type: array + description: | + The digest of the image this deployment published, per region. Present once the deployment + succeeded. A promotion points the function at this image and deploys nothing. + items: + $ref: '#/components/schemas/FunctionImageDigest' + configuration_digest: + type: string + pattern: ^sha256:[0-9a-f]{64}$ + description: Identifies the variables the build used without carrying any value. + regions: + type: array + items: + type: string + error_message: + type: string + description: Why a failed deployment failed. + created_at: + type: string + format: date-time + completed_at: + type: string + format: date-time + description: Set once the deployment is no longer provisioning. + required: + - id + - status + - operation + - configuration_digest + - regions + - created_at + FunctionCandidateDeploymentList: + type: object + additionalProperties: false + properties: + data: + type: array + items: + $ref: '#/components/schemas/FunctionCandidateDeployment' + required: + - data + FunctionServing: + type: object + additionalProperties: false + description: | + What a function runs. Until a preview is promoted it runs its own build and `candidate_id` is + null. After a promotion, the function's traffic runs on that preview's runtime, nothing is rebuilt + or deployed, and `previous_candidate_id` is what a rollback returns to (null when that is the + function's own build). A preview the function runs cannot be deleted and does not expire. One kept + only as what a rollback returns to does not expire either, but it can be deleted, which gives up + that rollback; the function's own build stays one `to_production` rollback away. + properties: + revision: + type: integer + format: int64 + minimum: 0 + description: Counts changes to what the function runs or can roll back to — promotions, rollbacks, a deployment that returns the traffic to the function's own build, and deleting the preview kept for a rollback. A promotion or rollback names the revision it read, so one that read before such a change fails with `409` (`stale_revision`) instead of overwriting it; read the serving state again and retry. + candidate_id: + type: string + format: uuid + nullable: true + description: The preview whose build the function runs; null for its own. + previous_candidate_id: + type: string + format: uuid + nullable: true + description: The preview a rollback returns to; null for the function's own build. + activation: + $ref: '#/components/schemas/FunctionServingActivation' + production_environment: + $ref: '#/components/schemas/FunctionProductionEnvironment' + required: + - revision + - candidate_id + - previous_candidate_id + - production_environment + FunctionServingActivation: + type: object + additionalProperties: false + description: | + The latest change to what serves the function's traffic: a promotion, a rollback, or a deployment + of the function that returned its traffic to its own build. Each takes effect at once. Absent until + the function's first promotion. + properties: + id: + type: string + format: uuid + kind: + type: string + enum: + - promotion + - rollback + - deploy + x-enum-varnames: + - FunctionServingActivationKindPromotion + - FunctionServingActivationKindRollback + - FunctionServingActivationKindDeploy + description: '`deploy`: a successful deployment of the function cleared the preview pointers.' + status: + type: string + enum: + - applied + description: '`applied`: the change takes effect when it is recorded.' + revision: + type: integer + format: int64 + minimum: 1 + candidate_id: + type: string + format: uuid + description: The preview the activation pointed the function at. Absent for the function's own build. + image_digests: + type: array + description: The digests of the image the activation pointed the function at. Absent for the function's own build. + items: + $ref: '#/components/schemas/FunctionImageDigest' + required: + - id + - kind + - status + - revision + FunctionProductionEnvironment: + type: object + additionalProperties: false + description: | + Whether the function's own build has the project's current variables. While a preview serves the + function, `volcano config deploy` and replacing the shared variable list skip the function, so its + own build keeps the values it had. A rollback to the function's own build starts synchronizing them + as it returns the traffic, and the status reads `current` once that synchronization completes or a + deployment of the function activates. A synchronization that fails leaves it `out_of_date`. + properties: + status: + type: string + enum: + - current + - out_of_date + x-enum-varnames: + - FunctionProductionEnvironmentStatusCurrent + - FunctionProductionEnvironmentStatusOutOfDate + description: '`out_of_date`: a stored variable change skipped the function while a preview served it.' + out_of_date_since: + type: string + format: date-time + description: When the latest skipped change was stored. Absent while `status` is `current`. + required: + - status + FunctionImageDigest: + type: object + additionalProperties: false + description: The content digest of a function image in one region. It names no registry or account. + properties: + region: + type: string + description: The region the image was published to. Absent when the build published one image for every region. + digest: + type: string + pattern: ^sha256:[0-9a-f]{64}$ + required: + - digest + FunctionPromotionRequest: + type: object + additionalProperties: false + required: + - expected_revision + properties: + expected_revision: + type: integer + format: int64 + minimum: 0 + description: The `revision` the caller read from `serving`. Refuses the promotion with `stale_revision` unless what the function runs is still at this revision. + FunctionRollbackRequest: + type: object + additionalProperties: false + required: + - expected_revision + properties: + expected_revision: + type: integer + format: int64 + minimum: 0 + description: The `revision` the caller read from `serving`. Refuses the rollback with `stale_revision` unless what the function runs is still at this revision, so a retried rollback cannot undo itself. + to_production: + type: boolean + default: false + description: Return to the function's own build whatever it ran before. FrontendCandidateDeployment: type: object additionalProperties: false @@ -28770,7 +30106,7 @@ components: type: string description: First 12 characters of the secret, for recognising a token in a list. scope: - $ref: '#/components/schemas/ProjectAccessTokenScope' + $ref: '#/components/schemas/ProjectAccessTokenListedScope' status: type: string enum: @@ -28848,6 +30184,23 @@ components: x-enum-varnames: - ProjectAccessTokenScopeFull - ProjectAccessTokenScopeReadOnly + ProjectAccessTokenListedScope: + type: string + description: | + A listed token's scope. `full` and `read_only` are the scopes you + choose when you create a token; see `ProjectAccessTokenScope`. + + `delegated` marks a delegated grant: a `pg-` token a first-party app + minted for one run from the access you allowed it. It is listed only + with `include_delegated=true`, and you cannot create one. + enum: + - full + - read_only + - delegated + x-enum-varnames: + - ProjectAccessTokenListedScopeFull + - ProjectAccessTokenListedScopeReadOnly + - ProjectAccessTokenListedScopeDelegated CreateProjectAccessTokenRequest: type: object properties: @@ -29002,7 +30355,7 @@ components: description: Whether OpenAPI metadata is configured; list responses omit the document itself. invoke_url: type: string - description: 'Canonical geo-routed HTTPS endpoint for invoking this function. Use it as-is: it does not share a domain with the API, so a host derived from the API URL will not reach the function. Omitted when the deployment serves no public invocation domain, as in local development, so a client testing for an empty string never matches.' + description: 'Canonical geo-routed HTTPS endpoint for invoking this function. Use it as-is: it does not share a domain with the API, so a host derived from the API URL will not reach the function. In local development it is `http://{id}.functions.localhost:8000/`, served by the local API. Omitted when the deployment serves no function invocation domain, so a client testing for an empty string never matches.' deployed_regions: type: array items: @@ -29020,6 +30373,16 @@ components: type: string format: uuid description: Newest queued deployment that will run after the current operation + serving_candidate_id: + type: string + format: uuid + nullable: true + readOnly: true + description: | + The promoted preview whose runtime receives this function's traffic, the same as + `candidate_id` in `serving`. Null when the function runs its own build. While it is set, + `current_deployment_id` and `status` describe the function's own build, which receives no + traffic until the function is rolled back. last_invoked_at: type: string format: date-time @@ -29042,6 +30405,7 @@ components: - openapi_spec - has_openapi_spec - deployed_regions + - serving_candidate_id - created_at - updated_at DurableFunction: @@ -29593,8 +30957,8 @@ components: } ``` - The top-level `__volcano_auth` and `__volcano_http` keys are reserved; - Volcano removes caller-supplied values for both. + The top-level `__volcano_auth`, `__volcano_http` and `__volcano_mount` + keys are reserved; Volcano removes caller-supplied values for all three. FunctionInvocationResponse: type: object description: Raw function response body returned by the invoked function. @@ -30907,7 +32271,7 @@ components: - status Issue: type: object - description: Runtime errors from one function or frontend, grouped by error type and stack, one LavaFlow Code Quality finding, failed builds of one function or frontend with the same first error, or a user-reported project problem. A report has a project resource, zero runtime occurrences, and report times as its first and last seen times. + description: Runtime errors from one function or frontend, grouped by error type and stack, one LavaFlow Code Quality finding, failed builds of one function or frontend with the same first error, a user-reported project problem, or an issue a person wrote. A report or a written issue has a project resource, zero runtime occurrences, and the time it was made as its first and last seen times. properties: id: type: string @@ -30931,11 +32295,16 @@ components: status: $ref: '#/components/schemas/IssueStatus' source: - $ref: '#/components/schemas/IssueSource' + allOf: + - $ref: '#/components/schemas/IssueSource' + description: Where the issue came from. A `code_quality` issue's `error_type` is the finding's rule, its `culprit` the enclosing function and file, and its `event_count` the scans that found it. A `build` issue's `title` is the build's first error, its `error_type` the tool's code, such as `TS2322` or `Type error`, its `culprit` the error's `file:line`, its `event_count` the failed deploys, and its `last_deployment_id` the latest of them. finding: allOf: - $ref: '#/components/schemas/IssueFinding' description: The finding behind a `code_quality` issue. Absent on a `runtime` issue. + description: + type: string + description: What the person who wrote a `request` issue asked for, as they wrote it, trimmed. Omitted for every other source. exception: type: boolean description: | @@ -30959,6 +32328,10 @@ components: last_region: type: string description: The region that served the latest error, such as `us-east-1`. + last_deployment_id: + type: string + format: uuid + description: 'For a `build` issue, the latest deployment that failed in its build step. Omitted for every other issue: runtime errors are not tied to a deployment.' sample_event_id: type: string description: The ID of the latest error's log event, while logs retain it. @@ -31011,7 +32384,8 @@ components: - code_quality - build - report - description: 'Where the issue came from: `runtime` for errors your code logged, `code_quality` for a LavaFlow Code Quality finding in code a deploy changed, `build` for deploys of one function or frontend that failed in its own build step, or `report` for a problem reported for the project, such as through Slack. A `code_quality` issue''s `error_type` is the finding''s rule, its `culprit` the enclosing function and file, and its `event_count` the scans that found it. A `build` issue''s `title` is the build''s first error, its `error_type` the tool''s code, such as `TS2322` or `npm ETARGET`, its `culprit` the error''s `file:line`, its `event_count` the failed deploys, and its `last_deployment_id` the latest of them. A later deploy that builds resolves it. Deploys Volcano failed, such as a timeout or a refused build, never make one.' + - request + description: 'Where the issue came from: `runtime` for errors your code logged, `code_quality` for a LavaFlow Code Quality finding in code a deploy changed, `build` for deploys of one function or frontend that failed in its own build step, `report` for a problem reported for the project, such as through Slack, or `request` for an issue a person wrote with `POST /issues`. A later deploy that builds resolves a `build` issue. Deploys Volcano failed, such as a timeout or a refused build, never make one.' PaginatedIssues: type: object properties: @@ -31032,6 +32406,28 @@ components: - data - limit - has_more + CreateIssueRequest: + type: object + additionalProperties: false + description: The project, and an issue a person writes on it, describing what to fix. + properties: + project_id: + type: string + format: uuid + description: The project to write the issue on. + description: + type: string + minLength: 1 + maxLength: 4000 + description: What to fix, in your words, up to 4,000 characters. It can span lines. Leading and trailing whitespace is trimmed, and a description of only whitespace is refused. + title: + type: string + minLength: 1 + maxLength: 200 + description: A title, on one line, up to 200 characters; whitespace, line breaks included, collapses to single spaces. Omitted, the title is the description's first line, cut to 80 characters with an ellipsis. + required: + - project_id + - description UpdateIssueRequest: type: object additionalProperties: false @@ -31046,7 +32442,7 @@ components: - diagnose_only - open_pr - merge - description: How far LavaFlow goes on its own. `diagnose_only` stops at a diagnosis. `open_pr` also opens a pull request with a fix, and never merges it. `merge` also merges the fix once LavaFlow's reviewers pass it, its required checks pass, and nothing holds it; a held fix is handed to you for good. Turning on merge lets LavaFlow's fixes, including those from runs it starts on its own, run your CI with the secrets your pull request workflows get. Choosing `merge` needs the project's `lavaflow.merge` capability. + description: How far LavaFlow goes on its own. `diagnose_only` stops at a diagnosis. `open_pr` also opens a pull request with a fix, and never merges it. `merge` also merges the fix once LavaFlow's reviewers pass it, its required checks pass, and nothing holds it; a held fix is handed to you for good. LavaFlow merges only into a base branch that requires at least one status check, through branch protection or a ruleset; on any other branch it holds every fix with `no_required_checks`. Turning on merge lets LavaFlow's fixes, including those from runs it starts on its own, run your CI with the secrets your pull request workflows get. Choosing `merge` needs the project's `lavaflow.merge` capability. LavaflowMergePolicy: type: object description: 'Your rules for fixes LavaFlow must never merge. They apply with `autonomy: merge`; at another autonomy they are saved and do nothing.' @@ -31082,32 +32478,32 @@ components: - merged - held - stopped - description: '`waiting_for_checks`: LavaFlow waits for the checks on the fix''s commit. `queued`: the fix is in the repository''s merge queue. `merged`: the pull request merged. `held`: something in `hold_reasons` needs a person. LavaFlow commented on the pull request once and never merges, pushes to, rebases or dequeues it again; review it and merge it yourself if you want it. `stopped`: LavaFlow left the pull request open for you, for `reason`.' + description: '`waiting_for_checks`: LavaFlow waits for the checks on the fix''s commit. `queued`: the fix is in the repository''s merge queue. `merged`: the pull request merged. `held`: something in `hold_reasons` needs a person. LavaFlow commented on the pull request once and never merges, pushes to, rebases or dequeues it again; review it and merge it yourself if you want it. A fix a person merges (its autonomy is `open_pr`, merging was unavailable when it opened, or its run may only open a pull request) is always `held` for `person_merges` once LavaFlow has started its CI, or found it may not. `stopped`: LavaFlow left the pull request open for you, for `reason`.' LavaflowMergeReason: type: string - description: 'Why the merge stopped, or what a waiting merge is paused for. `review_unresolved`: LavaFlow''s review did not pass the fix. `checks_failed`: a check failed. `checks_timed_out`: checks did not finish in time. `blocked_by_rules`: the repository''s rules hold the merge. `not_mergeable`: GitHub can''t merge the pull request, for example because it conflicts. `branch_behind`: the base branch requires the fix to be up to date with it, and LavaFlow doesn''t update fix branches. `removed_from_queue`: the fix isn''t in the merge queue, and LavaFlow can''t tell why, for example because its checks failed there or someone removed it. `reads_failed`: LavaFlow failed to read the pull request for about an hour while the fix may have been queued, so it took the fix out of the merge queue, when it could still reach it, and stopped, or failed to read the project''s settings or repository for about a day while merging was paused. `handed_off`: someone else changed or took over the pull request. `unreadable`: GitHub''s state could not be read. `permission_missing`: the Volcano GitHub App, or the project owner''s GitHub account, lacks a permission the merge needs. `repository_changed`: the project now deploys from another repository. `settings_changed`: the project''s settings no longer allow the merge. `request_rejected`: GitHub refused LavaFlow''s request to start the checks on the fix. `ci_start_commit_mismatch`: GitHub reports a different commit from the one LavaFlow made to start the checks. `branch_refused`: LavaFlow starts checks only on a LavaFlow branch of an open pull request it opened, never the default or production branch, so it didn''t start them on this one. `head_unverified`: GitHub doesn''t report the fix''s head as the signed commit LavaFlow pushed, so LavaFlow didn''t start its checks. `checks_not_started`: LavaFlow couldn''t give the fix a commit message that runs CI. `queue_carries_ci_skip`: the repository''s merge queue could carry an instruction to skip checks, from the fix''s commits or its pull request''s title or description, into the base branch. `merge_carries_ci_skip`: merging would carry an instruction to skip checks into the base branch, for example because the repository allows no squash merge. Each of these seven hands the fix to you for good. `manual_deploy`: the fix merged and waits for you to deploy it. `paused`: merging is paused, and the merge waits. LavaFlow takes a queued fix out of the merge queue, so it shows `waiting_for_checks`, and queues it again when merging resumes. `paused_too_long`: merging stayed paused for more than 7 days. `cancelled`: the project is being deleted, so LavaFlow stopped waiting on the merge. New reasons may appear.' + description: 'Why the merge stopped, or what a waiting merge is paused for. A stopped merge leaves the pull request open for you, and LavaFlow never merges, pushes to, rebases or dequeues it again; unless a reason says otherwise, review the change, then merge or close the pull request yourself. `review_unresolved`: LavaFlow''s review didn''t pass the fix; the run''s `review` says why. `checks_failed`: a check on the fix failed. `checks_timed_out`: the checks didn''t all finish within 24 hours. `blocked_by_rules`: a rule of the repository that LavaFlow can''t satisfy blocks the merge. `not_mergeable`: GitHub can''t merge the pull request, for example because it conflicts with its base branch; resolve the conflict first. `branch_behind`: the base branch requires the fix to be up to date with it, and LavaFlow doesn''t update fix branches; update the branch first. `removed_from_queue`: the fix isn''t in the merge queue, and LavaFlow can''t tell why, for example because its checks failed there or someone removed it. `reads_failed`: LavaFlow failed to read the pull request for about an hour while the fix may have been queued, so it took the fix out of the merge queue, when it could still reach it, and stopped, or failed to read the project''s settings or repository for about a day while merging was paused. For a fix a person merges, which LavaFlow never queues, it means only the latter, with its CI start paused instead of merging. `handed_off`: someone drafted or closed the pull request, or moved it to another branch, so LavaFlow stopped; nothing to do. `unreadable`: the pull request has more checks, reviews, labels or commits than LavaFlow reads, so it can''t judge the fix. `permission_missing`: the Volcano GitHub App, or the project owner''s GitHub account, lacks a permission the merge needs; grant the App''s requested permissions and make sure the owner can push. `repository_changed`: the project now deploys from another repository. `settings_changed`: the project''s settings no longer let LavaFlow merge, or, for a fix a person merges, start its CI: LavaFlow was turned off, `autonomy` is no longer `merge` (no longer `open_pr` or `merge` for a fix a person merges), the owner''s plan no longer includes LavaFlow, or the project is being deleted. `request_rejected`: GitHub refused LavaFlow''s request to start the checks on the fix. `ci_start_commit_mismatch`: GitHub reports a different commit from the one LavaFlow made to start the checks. `branch_refused`: LavaFlow didn''t start the fix''s checks because the pull request was no longer open, or its branch isn''t a LavaFlow branch of a pull request LavaFlow opened; LavaFlow never starts checks on the default or production branch. `head_unverified`: GitHub doesn''t report the fix''s head as the signed commit LavaFlow pushed, so LavaFlow didn''t start its checks. `checks_not_started`: LavaFlow couldn''t give the fix a commit message that runs CI. `queue_carries_ci_skip`: the repository''s merge queue could carry an instruction to skip checks, from the fix''s commits or its pull request''s title or description, into the base branch; reword LavaFlow''s commit to drop it and force-push, and take any such instruction out of the title and description, before you queue the fix. `merge_carries_ci_skip`: merging would carry an instruction to skip checks into the base branch, for example because the repository allows no squash merge; reword LavaFlow''s commit to drop it and force-push before you merge. After `request_rejected`, `ci_start_commit_mismatch` or `checks_not_started`, the fix''s CI didn''t start: push a commit to its branch to run it. `paused_too_long`: merging stayed paused for more than 7 days, or, for a fix a person merges, LavaFlow''s CI start for such fixes did. `cancelled`: the project is being deleted, so LavaFlow stopped waiting on the merge; nothing to do. `manual_deploy`: the fix merged and waits for you to deploy it. `paused`: merging is paused, and the merge waits. LavaFlow takes a queued fix out of the merge queue, so it shows `waiting_for_checks`, and queues it again when merging resumes. For a fix a person merges, LavaFlow''s CI start for such fixes is paused instead, whatever merging does, and LavaFlow never takes it out of a queue. New reasons may appear.' LavaflowHoldReason: type: object description: One reason LavaFlow holds the fix for a person. properties: code: type: string - description: 'Why the fix is held. `client_reported_commit`: the fix is built on a commit Volcano can''t tie to a push. `path`: it changes a path in `human_review_paths`, or deploy or infrastructure configuration Volcano always holds, such as `volcano-config.yaml`, Terraform files, a YAML or JSON file that declares a resource, a YAML template that mentions `apiVersion` or `kind`, a file in a Helm chart or Kustomize directory, or, in a repository too large to read in full, any file no other path reason holds. `sensitive_path`: it changes another path Volcano always holds: authentication or authorization code, Next.js middleware included; secret, key, certificate or cryptography files; a coding agent''s instructions or settings, or Git hook configuration; CI configuration; a dependency manifest or lockfile, or a `package.json` change to what installs or its install scripts; or runtime, container or other configuration files. `label`: the pull request has the `needs-human-review` label. `no_checks`: no CI ran on it. `required_check_skipped`: a required check was skipped. `no_required_checks`: the base branch requires no check, so passing checks alone don''t vouch for the fix. `changes_requested`: a reviewer requested changes. `repository_requires_approval`: the repository requires an approving review. `person_commits`: someone other than LavaFlow pushed to the fix''s branch. `rules_bypass`: the Volcano GitHub App can bypass a ruleset on the base branch. `unchecked_rules`: the base branch has a rule LavaFlow doesn''t check, such as required signatures. `commit_convention`: no title can meet the repository''s commit convention. `ungated_workflows`: the fix opened past workflows that can run it with the repository''s secrets before a person approves it, as the project''s owner allowed, or LavaFlow couldn''t check its workflows, so LavaFlow never starts its CI or merges it. `lineage_undoes_parent`: the fix follows up an earlier LavaFlow fix and deletes or changes lines that fix added, which could undo it. `lineage_cap`: the fix''s lineage opened as many pull requests as it may. `lineage_held`: an earlier pull request in the fix''s lineage was held, stopped or closed. `recent_regressions`: fixes LavaFlow merged in the project recently caused new errors. Other codes name a concern LavaFlow''s reviewers raised. New codes may appear.' + description: 'Why the fix is held. `client_reported_commit`: the fix is built on a commit Volcano can''t tie to a push. `path`: it changes a path in `human_review_paths`, or deploy or infrastructure configuration Volcano always holds, such as `volcano-config.yaml`, Terraform files, a YAML or JSON file that declares a resource, a YAML template that mentions `apiVersion` or `kind`, a file in a Helm chart or Kustomize directory, or, in a repository too large to read in full, any file no other path reason holds. `sensitive_path`: it changes another path Volcano always holds: authentication or authorization code, Next.js middleware included; secret, key, certificate or cryptography files; a coding agent''s instructions or settings, or Git hook configuration; CI configuration; a dependency manifest or lockfile, or a `package.json` change to what installs or its install scripts; or runtime, container or other configuration files. `label`: the pull request has the `needs-human-review` label. `no_checks`: no CI ran on it. `required_check_skipped`: a required check was skipped. `no_required_checks`: the base branch requires no check, so passing checks alone don''t vouch for the fix. `changes_requested`: a reviewer requested changes. `repository_requires_approval`: the repository requires an approving review. `person_commits`: someone other than LavaFlow pushed to the fix''s branch. `rules_bypass`: the Volcano GitHub App can bypass a ruleset on the base branch. `unchecked_rules`: the base branch has a rule LavaFlow doesn''t check, such as required signatures. On a fix a person merges it names only rules that kept LavaFlow from starting the fix''s CI, such as `code_scanning` or `workflows`, or that LavaFlow couldn''t read them. `commit_convention`: no title can meet the repository''s commit convention. `ungated_workflows`: the fix opened past workflows that can run it with the repository''s secrets before a person approves it, as the project''s owner allowed, or LavaFlow couldn''t check its workflows, or, when LavaFlow was about to start its CI or add it to a merge queue, a workflow could run it with those secrets before a person approves it or couldn''t be read, so LavaFlow takes it no further and never merges it. A fix held for another reason before its CI starts lists it too when that check, run without starting CI, finds such a workflow or can''t finish. `ci_outside_actions`: when LavaFlow was about to start the fix''s CI, the repository could run CI, a build or a preview outside GitHub Actions: the root of the fix''s tree or its base branch''s holds another service''s configuration, such as `.travis.yml`, `.circleci/` or `netlify.toml`, which `paths` names, another app reported checks or statuses on the base branch, or LavaFlow couldn''t read them in full. LavaFlow starts CI only when it finds no sign of CI outside GitHub Actions, so it never starts this fix''s CI or merges it. `lineage_undoes_parent`: the fix follows up an earlier LavaFlow fix and deletes or changes lines that fix added, which could undo it. `lineage_cap`: the fix''s lineage opened as many pull requests as it may. `lineage_held`: an earlier pull request in the fix''s lineage was held, stopped or closed; one a person merges holds it only when closed. `recent_regressions`: fixes LavaFlow merged in the project recently caused new errors. `no_test`: the fix changes code the repository tests and adds no test, because testing it needs test infrastructure the repository doesn''t have or the change has no effect a test can observe. `choices_to_confirm`: the fix states behavior it decides beyond stopping the error, listed in the run''s `choices` and, on a private repository, under Choices to confirm in the pull request''s description, for a person to confirm, and LavaFlow''s reviewers didn''t all mark each choice as needing no person. It never applies alongside `person_merges`: the person confirms the choices while reviewing the fix. `risky_change`: the fix adds or removes a line that converts a value, such as with `float()` or `parseInt()`, in a file that names a rate limit or quota, authentication or authorization, or money, so values such as NaN, Infinity or a negative number could get past a check there; `paths` names the files. `review_notes`: LavaFlow''s reviewers passed the fix, but its review''s last round left notes, findings below `major` that a later round no longer sends back for revision, such as a decision the fix makes without stating it. `person_merges`: a person reviews and merges the fix, because the project''s autonomy is `open_pr`, merging was unavailable when it opened, or its run may only open a pull request; LavaFlow ran the fix''s CI once first unless another reason, or the CI start''s own checks, stopped it. Other codes name a concern LavaFlow''s reviewers raised. New codes may appear.' question: type: string - description: What a person decides before merging the fix, written to show as given. + description: 'Why LavaFlow holds the fix and what to check before you merge it, in one or two sentences to show as given. A reviewer''s reason is a question for you to answer. Reads `Hidden: this field matched a secret.` when it holds one of the project''s secret values or a secret gitleaks detects, or when one of its `paths` reads `""`. Every question reads `Hidden: the fix may add a credential.`, LavaFlow''s fixed sentences too, on a run whose `pull_request_skipped` is `possible_credential`.' paths: type: array items: type: string - description: The changed paths that matched, for a path code. + description: The changed paths that matched, for a path code. For `ci_outside_actions`, the entries at the repository's root that another CI or preview service reads, whether or not the fix changes them. `""` for a path that holds a control character, one of the project's secret values or a secret gitleaks detects. required: - code - question - paths LavaflowMerge: type: object - description: Where the run's merge stands. Present for a run that may merge its fix, once its pull request opens. + description: 'Where the run''s merge stands. Present for a run that may merge its fix, once its pull request opens, and for a run whose fix a person merges (its autonomy is `open_pr`, merging was unavailable when it opened, or the run may only open a pull request) that opened ready for review: LavaFlow starts that fix''s CI once, then holds it for `person_merges` and never merges it.' properties: status: $ref: '#/components/schemas/LavaflowMergeStatus' @@ -31166,6 +32562,19 @@ components: $ref: '#/components/schemas/IssueStatus' source: $ref: '#/components/schemas/IssueSource' + severity: + type: string + enum: + - nit + - minor + - major + - critical + x-enum-varnames: + - LavaflowIssueSeverityNit + - LavaflowIssueSeverityMinor + - LavaflowIssueSeverityMajor + - LavaflowIssueSeverityCritical + description: The confirmed Code Quality finding's recorded severity. Omitted for other issue sources and when no canonical severity is known; absence does not mean the issue has low severity. event_count: type: integer format: int64 @@ -31212,13 +32621,11 @@ components: $ref: '#/components/schemas/LavaflowAutonomy' merge_policy: $ref: '#/components/schemas/LavaflowMergePolicy' - skill_learning: - $ref: '#/components/schemas/LavaflowSkillLearning' code_quality: $ref: '#/components/schemas/LavaflowCodeQualitySettings' allow_ungated_workflows: type: boolean - description: 'Whether LavaFlow opens a fix''s pull request even where a workflow could run it, or put its text into a command, with the repository''s secrets before a person approves it. Off by default; while off, such a fix stays on its run and no pull request opens. Only the project''s owner turns it on, signed in as a person: with a Volcano sign-in session, the platform token `volcano login` stores, or another platform token that expires. It applies to the repository their GitHub account can push to. Connecting the project to another repository, or disconnecting it, turns it off, and connecting the first one again doesn''t turn it back on. Workflows in the repository may then run LavaFlow''s pull requests, or put their text into commands, with the repository''s secrets before a person reviews them. LavaFlow writes those changes from the project''s error logs, which its users can influence. Turn it on only if those workflows keep secrets away from untrusted code; gating them on a label a person adds is safer.' + description: 'Whether LavaFlow opens a fix''s pull request even where a workflow could run it, or put its text into a command, with the repository''s secrets before a person approves it. Off by default; while off, such a fix stays on its run and no pull request opens. Only the project''s owner turns it on, signed in as a person: with the platform token `volcano login` stores, or another platform token that expires. It applies to the repository their GitHub account can push to. Connecting the project to another repository, or disconnecting it, turns it off, and connecting the first one again doesn''t turn it back on. Workflows in the repository may then run LavaFlow''s pull requests, or put their text into commands, with the repository''s secrets before a person reviews them. LavaFlow writes those changes from the project''s error logs, which its users can influence. Turn it on only if those workflows keep secrets away from untrusted code; gating them on a label a person adds is safer.' updated_at: type: string format: date-time @@ -31246,7 +32653,6 @@ components: - enabled - autonomy - merge_policy - - skill_learning - code_quality - allow_ungated_workflows - updated_at @@ -31270,15 +32676,11 @@ components: $ref: '#/components/schemas/LavaflowAutonomy' merge_policy: $ref: '#/components/schemas/LavaflowMergePolicyUpdate' - skill_learning: - allOf: - - $ref: '#/components/schemas/LavaflowSkillLearning' - description: 'Only the project''s owner turns learning up, from `off` to `review` or `auto` or from `review` to `auto`, signed in as a person: with a sign-in session, a `volcano login` token whose sign-in is live, or a platform token with an expiry, and with a GitHub account that can push to the project''s repository. Any other credential gets `403` with code `person_required`. Turning it down or off, or sending the saved value, needs no check. A project access token may send `off` with `project_id`, alone or with `code_quality` turned off, and nothing else; any other save it makes gets `403` with code `person_required`.' code_quality: $ref: '#/components/schemas/LavaflowCodeQualityUpdate' allow_ungated_workflows: type: boolean - description: 'Turns on opening fixes past ungated workflows, for the repository the project is connected to now; it applies only to that repository. Only the project''s owner turns it on, signed in as a person: with a Volcano sign-in session, the platform token `volcano login` stores, or another platform token that expires. Their GitHub account must be able to push to that repository. A project access token, a platform token that never expires, or anyone else gets `403` with `person_required`. Any of the owner''s credentials turns it off. Workflows in the repository may then run LavaFlow''s pull requests, or put their text into commands, with the repository''s secrets before a person reviews them. LavaFlow writes those changes from the project''s error logs, which its users can influence. Turn it on only if those workflows keep secrets away from untrusted code; gating them on a label a person adds is safer. While LavaFlow is not available, only `false` is saved, and only with `enabled: false`, `skill_learning: off` or both.' + description: 'Turns on opening fixes past ungated workflows, for the repository the project is connected to now; it applies only to that repository. Only the project''s owner turns it on, signed in as a person: with the platform token `volcano login` stores, or another platform token that expires. Their GitHub account must be able to push to that repository. A project access token, a platform token that never expires, or anyone else gets `403` with `person_required`. Any of the owner''s credentials turns it off. Workflows in the repository may then run LavaFlow''s pull requests, or put their text into commands, with the repository''s secrets before a person reviews them. LavaFlow writes those changes from the project''s error logs, which its users can influence. Turn it on only if those workflows keep secrets away from untrusted code; gating them on a label a person adds is safer. While LavaFlow is not available, only `false` is saved, and only with `enabled: false`.' required: - project_id LavaflowRunCreate: @@ -31363,6 +32765,8 @@ components: description: One entry per UTC day, oldest first, zeros included. items: $ref: '#/components/schemas/LavaflowDayCounts' + outcomes: + $ref: '#/components/schemas/LavaflowOutcomes' totals: type: object properties: @@ -31474,6 +32878,9 @@ components: url: type: string format: uri + branch: + type: string + description: The recorded pull request branch. Omitted when it was not recorded, the run's fix is withheld because it may add a credential, or the branch name holds one of the project's secret values or a secret gitleaks detects. It is never shortened. state: type: string enum: @@ -31494,7 +32901,7 @@ components: type: string format: date-time nullable: true - description: 'When the merged fix went live: the first live deployment of the issue''s resource that includes it finished. When more than 20 deployments went live between the merge and the one LavaFlow found the fix in, LavaFlow can''t tell which first included it, and this is the merge time. Null until LavaFlow finds the fix live, and for a pull request that didn''t merge. LavaFlow watches the resource''s deployments for a week after the merge.' + description: 'When the merged fix went live: the first live deployment of the issue''s resource that includes it finished. When more than 20 deployments went live between the merge and the one LavaFlow found the fix in, LavaFlow can''t tell which first included it, and this is the merge time. Null until LavaFlow finds the fix live, and for a pull request that didn''t merge. A later live deployment can be verified even more than a week after the merge. Unverifiable or exhausted evidence remains unknown.' draft: type: boolean nullable: true @@ -31529,7 +32936,7 @@ components: - configuration - dependency - external - description: 'What kind of problem the run works on. `bug`: the project''s code is wrong. `performance`: the code is too slow or uses too much. `security`: the code exposes data or access it shouldn''t. `improvement`: the code mishandles an edge case or an outside failure. `configuration`: a setting, variable or manifest value is wrong or missing. `dependency`: a package or its version causes it. `external`: a service outside the project fails and no repository change is right. A Code Quality run''s is its finding''s, `bug` or `improvement`. Any other run''s is `dependency` or `configuration` for a fix that changes only such files, else the kind its diagnosis names. New values may appear; treat an unknown value as uncategorized.' + description: 'What kind of problem the run works on. `bug`: the project''s code is wrong. `performance`: the code is too slow or uses too much. `security`: the code exposes data or access it shouldn''t. `improvement`: the code mishandles an edge case or an outside failure, or, for a reported problem''s run, its reporter asked for new content or functionality (`diagnosis.requested`). `configuration`: a setting, variable or manifest value is wrong or missing. `dependency`: a package or its version causes it. `external`: a service outside the project fails and no repository change is right. A Code Quality run''s is its finding''s, `bug` or `improvement`. Any other run''s is `dependency` or `configuration` for a fix that changes only such files, else the kind its diagnosis names. New values may appear; treat an unknown value as uncategorized.' LavaflowDraftReason: type: string enum: @@ -31540,7 +32947,7 @@ components: - LavaflowDraftReasonOpenPr - LavaflowDraftReasonReviewUnresolved - LavaflowDraftReasonConvertedToDraft - description: 'Why a run''s pull request is a draft. `open_pr`: LavaFlow doesn''t merge the fix, because the project''s autonomy is `open_pr`, merging was unavailable when it opened, LavaFlow started the run on its own under settings saved with automatic runs off before this API (sending `autonomy: merge` again as the owner lifts that), or it was already a draft when the run took it on; it waits for a person to review it and mark it ready. `review_unresolved`: LavaFlow''s review didn''t pass the fix, so LavaFlow never merges it; a person decides whether to finish it. `converted_to_draft`: LavaFlow opened it ready for review, and someone made it a draft since.' + description: 'Why a run''s pull request is a draft. `open_pr`: LavaFlow doesn''t merge the fix, because the project''s autonomy is `open_pr`, merging was unavailable when it opened, or the run may only open a pull request, and its review didn''t pass, LavaFlow''s CI start for fixes a person merges wasn''t available when it opened, or the repository may run CI or previews outside GitHub Actions (or LavaFlow couldn''t check whether it does) when it opened; or it was already a draft when the run took it on. It waits for a person to review it and mark it ready. `review_unresolved`: LavaFlow''s review didn''t pass the fix, so LavaFlow never merges it; a person decides whether to finish it. `converted_to_draft`: LavaFlow opened it ready for review, and someone made it a draft since.' LavaflowSkipReason: type: string enum: @@ -31581,7 +32988,7 @@ components: - LavaflowSkipReasonReviewUnresolved - LavaflowSkipReasonDuplicateInRepository - LavaflowSkipReasonSecurityFinding - description: 'Why a finished run opened no pull request, with what you can do next. `diagnose_only`: the project''s `autonomy` was `diagnose_only` when the run was queued, or became it before the pull request opened, so LavaFlow only diagnosed the issue; read the diagnosis, and set `autonomy` to `open_pr` or `merge` for later runs to open pull requests. `not_fixable`: the diagnosis found no change in the code that fixes the error, for example because the cause is outside it; read the diagnosis. `low_confidence`: the diagnosis is not confident enough to propose a fix; read the diagnosis. `no_patch`: LavaFlow proposed no change; read the diagnosis. `possible_credential`: the fix or its description held what looks like a credential or a project secret, so LavaFlow pushed nothing; apply the fix yourself from the diagnosis. `possible_personal_data`: the fix adds an email address the repository lacks, and the repository isn''t private, so LavaFlow pushed nothing; apply the fix yourself. `ungated_workflows`: a workflow could run the fix with the repository''s secrets before a person approves it; gate the workflow on a label a person adds, or turn on `allow_ungated_workflows`. `convention_unsatisfiable`: LavaFlow would merge the fix, but no title can meet the repository''s commit convention, so it kept the fix on the run; apply the fix yourself, or relax the convention. `pull_request_open`: another LavaFlow pull request for the issue is open; review or close it first. `source_unavailable`: LavaFlow couldn''t read the repository at the deployed commit, or the production branch no longer holds it; check the project''s repository connection and that the commit exists on that branch. `permission_missing`: the Volcano GitHub App, or the project owner''s GitHub account, lacks a permission LavaFlow needs; grant the App''s requested permissions and make sure the owner can push to the repository. `repository_changed`: the project no longer deploys from the repository the run read; a new run uses the current one. `publish_failed`: opening the pull request failed; a new run tries again. `lineage_cap`: LavaFlow opened as many pull requests in this fix''s lineage as it may; review the lineage''s pull requests and fix the rest yourself. `lineage_held`: an earlier pull request in this fix''s lineage was held, stopped or closed, so LavaFlow opens no more in it; apply the fix yourself from the diagnosis. `review_unresolved`: LavaFlow''s review didn''t pass a Code Quality fix; read the diagnosis. `duplicate_in_repository`: another project on the repository has the open Code Quality pull request for the same finding. `security_finding`: the finding has security impact and the repository isn''t private, so the fix would disclose it; fix it yourself. New reasons may appear.' + description: 'Why a finished run opened no pull request, with what you can do next. `diagnose_only`: the project''s `autonomy` was `diagnose_only` when the run was queued, or became it before the pull request opened, so LavaFlow only diagnosed the issue; read the diagnosis. For later runs to open pull requests, send `"autonomy": "open_pr"` to `PATCH /lavaflow/settings`, or run `volcano cloud lavaflow settings set --autonomy open_pr`. `not_fixable`: the diagnosis found no change in the code that fixes the error, for example because the cause is outside it; read the diagnosis. `low_confidence`: the diagnosis is not confident enough to propose a fix; read the diagnosis. `no_patch`: LavaFlow proposed no change; read the diagnosis. `possible_credential`: the fix held what looks like a credential or a project secret, so LavaFlow pushed nothing; apply the fix yourself from the diagnosis. `possible_personal_data`: the fix adds an email address the repository lacks, and the repository isn''t private, so LavaFlow pushed nothing; apply the fix yourself. `ungated_workflows`: a workflow could run the fix with the repository''s secrets before a person approves it; gate the workflow on a label a person adds, or turn on `allow_ungated_workflows`. `convention_unsatisfiable`: LavaFlow would merge the fix, but no title can meet the repository''s commit convention, so it kept the fix on the run; apply the fix yourself, or relax the convention. `pull_request_open`: when the run checked, before opening a pull request, another LavaFlow pull request for the issue was open, or merged and not yet deployed, so this run opened none; a fix it wrote stays on the run. That pull request may have closed since; find it with `GET /lavaflow/runs?project_id=…&issue_id=…`, whose runs carry their `pull_request`. Review it, or close it if you don''t want it. `source_unavailable`: LavaFlow couldn''t read, or open a fix on, the code that served the error; the run''s `source_unavailable` says why and what to do. `permission_missing`: the Volcano GitHub App, or the project owner''s GitHub account, lacks a permission LavaFlow needs; grant the App''s requested permissions and make sure the owner can push to the repository. `repository_changed`: the project no longer deploys from the repository the run read; a new run uses the current one. `publish_failed`: opening the pull request failed; a new run tries again. `lineage_cap`: LavaFlow opened as many pull requests in this fix''s lineage as it may; review the lineage''s pull requests and fix the rest yourself. `lineage_held`: an earlier pull request in this fix''s lineage was held, stopped or closed (one a person merges holds it only when closed), so LavaFlow opens no more in it; apply the fix yourself from the diagnosis. `review_unresolved`: LavaFlow''s review didn''t pass a Code Quality fix; read the diagnosis. `duplicate_in_repository`: when the run checked, another project on the repository already had the Code Quality pull request for the same finding; review that pull request in the repository. `security_finding`: the finding has security impact and the repository isn''t private, so the fix would disclose it; fix it yourself. New reasons may appear.' LavaflowRunSummary: type: object properties: @@ -31602,7 +33009,11 @@ components: title: type: string nullable: true - description: 'Names the problem the run worked on, in at most 80 characters: its diagnosis'' title, else the title of the fix it proposed, else the first line or sentence of its diagnosis'' summary. Null while none is known.' + description: 'Names the problem the run worked on, in at most 80 characters: its diagnosis'' title, else the title of the fix it proposed, else the first line or sentence of its diagnosis'' summary. A sentence too long for a title ends at its last clause that fits, or, with none, is cut at a word and ends with `…`. Null while none is known. Reads `Hidden: this field matched a secret.` when it or the text it comes from holds one of the project''s secret values or a secret gitleaks detects.' + fix_summary: + type: string + maxLength: 80 + description: 'The saved proposed fix''s title, on one line of at most 80 characters. This describes a proposal, not a verified fix, successful review, merge or deployment. It never falls back to the diagnosis. Omitted when no saved patch title is known. Reads `Hidden: this field matched a secret.` when the full title or the shortened one holds one of the project''s secret values or a secret gitleaks detects, and `Hidden: the fix may add a credential.` when the fix is held for one. A shortened value ends with `…`.' created_at: type: string format: date-time @@ -31645,6 +33056,16 @@ components: - $ref: '#/components/schemas/LavaflowSkipReason' nullable: true description: Why a finished run opened no pull request. A `completed` run without `pull_request` always has one; it is `diagnose_only` when the project's `autonomy` stopped the run at its diagnosis. Null when the run opened a pull request, while it is queued or runs, and when it failed or was cancelled. + lineage: + allOf: + - $ref: '#/components/schemas/LavaflowLineage' + nullable: true + description: The fix lineage the run belongs to. Null for a run in no lineage. + fix_outcome: + allOf: + - $ref: '#/components/schemas/LavaflowFixOutcome' + nullable: true + description: How the run's merged fix fared once it went live. Null until a merged fix goes live with the `lavaflow.lineage` capability on. Also null, meaning unknown, when the fix is first found live only after its 14-day watch ended and its issue neither resolved as of go-live nor was last seen inside the watch. required: - id - project_id @@ -31662,6 +33083,8 @@ components: - issue - progress - pull_request_skipped + - lineage + - fix_outcome LavaflowLogLine: type: object properties: @@ -31679,6 +33102,7 @@ components: - message LavaflowDiagnosis: type: object + description: 'Each text reads `Hidden: this field matched a secret.` in place of all of it when it holds one of the project''s secret values or a secret gitleaks'' default rules detect; the other texts are served as written. A log line''s `level` reads `""` then.' properties: summary: type: string @@ -31693,11 +33117,15 @@ components: description: Empty for now. `evidence` cites the log lines the diagnosis relies on. items: $ref: '#/components/schemas/LavaflowLogLine' + requested: + type: boolean + description: Whether the run makes a change its report's reporter asked for in their own words, such as new content or functionality, rather than fixing a defect. Only a reported problem's run can set it, and only from what the person who mentioned LavaFlow wrote. required: - summary - root_cause - evidence - log_lines + - requested LavaflowReview: type: object properties: @@ -31717,10 +33145,72 @@ components: - $ref: '#/components/schemas/LavaflowReviewStop' nullable: true description: Why the review ended without passing the fix, null when it passed the fix or when the run saved no fix. + open_findings: + type: array + x-go-type-skip-optional-pointer: true + items: + $ref: '#/components/schemas/LavaflowReviewFinding' + description: 'The findings the review saved with the fix left open. When the review passed the fix, the notes its last round left: findings below `major` that a later round no longer sends back, which hold a fix under `autonomy: merge` with `review_notes`. Absent when the review left none open, or the run saved no fix.' + person_reasons: + type: array + x-go-type-skip-optional-pointer: true + items: + $ref: '#/components/schemas/LavaflowReviewPersonReason' + description: What the review saved with the fix asks a person to decide before the fix merges. Absent when it asks nothing or the run saved no fix. + observations: + type: array + x-go-type-skip-optional-pointer: true + items: + type: string + description: 'The reviewers'' observations on the fix saved with the run: follow-ups that don''t hold the fix, such as bad data stored before it or a related problem elsewhere. They aren''t findings, unlike a minor finding that blocks nothing. Each reads `Hidden: this field matched a secret.` when it holds one of the project''s secret values or a secret gitleaks detects, and `Hidden: the fix may add a credential.` when the run is held with `possible_credential`. Absent when there are none or the run saved no fix.' required: - verdict - rounds - stopped + LavaflowReviewFinding: + type: object + description: 'A finding the review left open, in the reviewer''s words. `explanation` reads `Hidden: this field matched a secret.` when it holds one of the project''s secret values or a secret gitleaks detects, or when `file` reads `""`, and `Hidden: the fix may add a credential.` when the run is held with `possible_credential`.' + properties: + severity: + type: string + enum: + - nit + - minor + - major + - critical + x-enum-varnames: + - LavaflowReviewFindingSeverityNit + - LavaflowReviewFindingSeverityMinor + - LavaflowReviewFindingSeverityMajor + - LavaflowReviewFindingSeverityCritical + file: + type: string + nullable: true + description: The file the finding is about, null when it is about no file. `""` when the path holds a control character, one of the project's secret values or a secret gitleaks detects. + line: + type: integer + nullable: true + description: The line of `file` the finding is about, null when it is about no one line. + explanation: + type: string + required: + - severity + - file + - line + - explanation + LavaflowReviewPersonReason: + type: object + description: 'One decision the review leaves to a person. `question` reads `Hidden: this field matched a secret.` when it holds one of the project''s secret values or a secret gitleaks detects, and `Hidden: the fix may add a credential.` when the run is held with `possible_credential`.' + properties: + kind: + type: string + description: '`irreversible`: merging the fix itself does what a revert can''t undo, such as deleting or migrating stored data. `trust_boundary`: it changes authentication, authorization, secrets, who can reach what, or rate limits, quotas or other abuse controls, including whether they fail open. `breaks_contract`: it removes or renames an existing field, status, event, or accepted input that other code or users rely on, or changes what one means, or it newly rejects a request the code could serve before it, or input it served even when its documentation marks that input invalid, with a client error, validation error, or limit, or drops or skips records the code handled. `billing`: it touches payments, pricing, metering, or charges. `unexplained`: it changes behavior that neither the diagnosis nor the fix''s stated choices justify, and that the code doesn''t support. `not_reviewable`: it couldn''t be reviewed closely. New kinds may appear.' + question: + type: string + description: What the person decides, written to show as given. + required: + - kind + - question LavaflowReviewStop: type: string enum: @@ -31756,21 +33246,51 @@ components: - message LavaflowRepositoryChecks: type: object - description: Whether LavaFlow ran the repository's own checks, such as its tests, on a fix itself, before it opened a pull request or held the fix. CI that runs on the pull request afterwards is the repository's own. + description: Whether LavaFlow ran the repository's own checks, such as its tests, on a fix itself, before it opened a pull request or held the fix, and what they found. When LavaFlow ran them more than once, this is the last time the run's last attempt ran them; `not_run` when that attempt didn't, or while the run is queued or running. CI that runs on the pull request afterwards is the repository's own. properties: status: type: string - description: '`not_run`: LavaFlow did not run the repository''s checks on the fix, for the reason `reason` names. Treat a status you don''t know as `not_run`.' + description: '`passed`: every command the checks ran passed. `failed`: a command failed or timed out; `commands` shows which. `no_checks_found`: LavaFlow found no checks in the repository to run. `not_run`: LavaFlow did not run the repository''s checks on the fix, for the reason `reason` names. Treat a status you don''t know as `not_run`.' reason: type: string - description: 'Stable code for why the checks did not run. `sandbox_unavailable`: LavaFlow cannot run a repository''s checks itself yet.' + description: 'Stable code for why the checks did not run, present only when `status` is `not_run`. `dependencies_changed`: the fix changes the repository''s dependencies. `dependencies_not_installed`: LavaFlow couldn''t install the repository''s dependencies. `run_deadline`: the run reached its time limit. `sandbox_capacity`: no sandbox slot was free in time to run them. `sandbox_budget`: LavaFlow''s sandbox allowance for checks was used up. `sandbox_not_isolated`: LavaFlow couldn''t confirm the sandbox was isolated. `sandbox_plan_limit`: LavaFlow couldn''t start a sandbox large enough to run them. `sandbox_unavailable`: LavaFlow couldn''t run them itself. `source_too_large`: the repository is too large to copy into a sandbox. `source_unavailable`: LavaFlow couldn''t fetch the fix''s source to check it, as when the repository was disconnected or changed during the run. `tool_unavailable`: a tool the checks need isn''t available. New reasons may appear; treat one you don''t know like any other `not_run`.' message: type: string - description: Text to show for the status and reason. It names the pull request when one opened. + description: 'Text to show for the status and reason. It names the pull request when one opened. For `not_run` on a fix whose pull request opened, a second sentence says what became of the repository''s CI there, as the run stands when read: whether LavaFlow started it, tried to, may still, or won''t.' + revised: + type: boolean + x-go-type-skip-optional-pointer: true + description: Present and `true` only when `status` is `failed` and LavaFlow then revised the fix once without running the checks again. `status` and `commands` describe that earlier version, not the fix as saved, which the checks never ran on. + commands: + type: array + x-go-type-skip-optional-pointer: true + items: + $ref: '#/components/schemas/LavaflowRepositoryCheckCommand' + description: The commands the checks ran, in order. Absent when LavaFlow recorded none, as for `no_checks_found` and `not_run`. required: - status - - reason - message + LavaflowRepositoryCheckCommand: + type: object + description: 'One command the repository''s checks ran. `command` and `output` are the repository''s own text, served as LavaFlow recorded it. Each reads `Hidden: this field matched a secret.` when it holds one of the project''s secret values or a secret gitleaks detects, and `Hidden: the fix may add a credential.` when the run is held with `possible_credential`.' + properties: + command: + type: string + description: The command as LavaFlow ran it. + status: + type: string + description: '`passed`: the command succeeded. `failed`: it exited with an error. `timed_out`: it ran past its time limit, and LavaFlow stopped it. Treat a status you don''t know as `failed`.' + exit_code: + type: integer + nullable: true + description: The code the command exited with, null when it gave none, as a command that timed out may not. + output: + type: string + description: The end of what the command printed, present only when `status` is `failed` or `timed_out` and LavaFlow kept it; `""` when it printed nothing. + required: + - command + - status + - exit_code LavaflowRun: allOf: - $ref: '#/components/schemas/LavaflowRunSummary' @@ -31788,7 +33308,7 @@ components: diff: type: string nullable: true - description: The fix LavaFlow saved, as the unified diff its reviewers read, cut short past 256 KiB as they read it, with a last line that starts with `[diff truncated`. When a file's content, before or after the fix, or any change to it may hold a credential, or the file is too long for LavaFlow to read whole (over 64 KiB, or past 256 KiB across the fix's files), every change to that file is left out, with one line in their place that starts with `# LavaFlow withheld` and names the file. A run held with `possible_credential` leaves out every file. Null for a run with no saved fix, or one saved before LavaFlow kept its diff. + description: The fix LavaFlow saved, as the unified diff its reviewers read, cut short past 256 KiB as they read it, with a last line that starts with `[diff truncated`. When a file's changes hold one of the project's secret values or a secret gitleaks detects, every change to that file is left out, with one line in their place that starts with `# LavaFlow withheld` and names the file; an older fix also keeps the files it was saved with as withheld. A run held with `possible_credential` leaves out every file. Null for a run with no saved fix, or one saved before LavaFlow kept its diff. diff_sha256: type: string nullable: true @@ -31802,7 +33322,17 @@ components: type: array items: type: string - description: The files whose changes `diff` leaves out, by path, as its `# LavaFlow withheld` lines name them; an empty string for a file whose path may itself hold a credential. Empty when `diff` shows every file, or is null. + description: The files whose changes `diff` leaves out, by path, as its `# LavaFlow withheld` lines name them; an empty string for a file whose path holds a secret. Empty when `diff` shows every file, or is null. + choices: + type: array + x-go-type-skip-optional-pointer: true + items: + type: string + description: 'The behavior the saved fix says it decides beyond stopping the error, one plain sentence each. Under `autonomy: merge`, a fix is held with `choices_to_confirm` for a person to confirm these only when LavaFlow''s reviewers didn''t all mark each one as needing no person; a fix they all cleared merges without a person. A person who merges the fix confirms them as they review it. Each reads `Hidden: this field matched a secret.` when it holds one of the project''s secret values or a secret gitleaks detects, and `Hidden: the fix may add a credential.` when the run is held with `possible_credential`. Absent when the fix states none or the run saved no fix.' + not_fixed: + type: string + nullable: true + description: Where the saved fix says the defect starts outside its changes, such as code that writes records in the wrong shape, and why the fix leaves it, in one plain sentence. Masked as `choices` is. Null when the fix says nothing is left or the run saved no fix. review: allOf: - $ref: '#/components/schemas/LavaflowReview' @@ -31822,18 +33352,28 @@ components: type: array items: type: string - description: Repository paths the fix changes, sorted; empty without a fix. A path that may itself hold a credential is listed as "", as `diff_withheld` lists it, and so is every path when `diff` can't tell the fix's files apart. A file past a truncated `diff`'s cut is listed. + description: Repository paths the fix changes, sorted; empty without a fix. A path that holds a secret is listed as "", as `diff_withheld` lists it, and so is every path when `diff` can't tell the fix's files apart. A file past a truncated `diff`'s cut is listed. ungated_workflows: type: array nullable: true items: $ref: '#/components/schemas/LavaflowAllowedWorkflow' description: The workflow jobs the run's pull request opened past because the project's owner allowed ungated workflows, the first one on each branch or commit checked. Empty when none or when the run opened no pull request. Null when there is no record of the workflows its pull request opened past, as for pull requests opened before LavaFlow recorded them. Under the merge stage, LavaFlow holds such a fix as unchecked, with `ungated_workflows`. + lineage_evidence: + allOf: + - $ref: '#/components/schemas/LavaflowLineageEvidence' + nullable: true + description: What tied the run's issue to a recent LavaFlow fix's deploy. Null when nothing did, and for a recurrence, whose issue came back after the fix. held_workflows: allOf: - $ref: '#/components/schemas/LavaflowHeldWorkflows' nullable: true description: For a run whose `pull_request_skipped` is `ungated_workflows`, every workflow job that held its fix. Null for any other run, and for a held run whose workflows LavaFlow couldn't read to the end, such as one with a workflow it couldn't parse, or more than 256 such jobs. + source_unavailable: + allOf: + - $ref: '#/components/schemas/LavaflowSourceUnavailable' + nullable: true + description: For a run whose `pull_request_skipped` is `source_unavailable`, why LavaFlow couldn't read, or open a fix on, the code that served the error. Null for any other run, for a run recorded before LavaFlow kept the reason, and when LavaFlow couldn't tell why. required: - source_commit - diagnosis @@ -31841,12 +33381,15 @@ components: - diff_sha256 - diff_truncated - diff_withheld + - not_fixed - review - repository_checks - failure - changed_files - ungated_workflows + - lineage_evidence - held_workflows + - source_unavailable LavaflowAllowedWorkflow: type: object description: A workflow job that could run a fix's pull request with the repository's secrets before a person approves it. @@ -31907,6 +33450,42 @@ components: required: - source - commit_sha + LavaflowSourceUnavailable: + type: object + description: Why LavaFlow couldn't read, or open a fix on, the code that served a run's error, so the run opened no pull request. + properties: + reason: + $ref: '#/components/schemas/LavaflowSourceUnavailableReason' + deployment_id: + type: string + format: uuid + nullable: true + description: The deployment of the run's `resource` that served the error, for `no_commit`, `uncommitted_changes`, `unverified_commit` and `other_repository`. Null for any other reason, including `deployment_unattributed`, and when no deployment was serving. + example: 7c2e5a1f-3b8d-4e6a-9f0c-1d2e3f4a5b6c + required: + - reason + - deployment_id + LavaflowSourceUnavailableReason: + type: string + enum: + - no_repository + - no_commit + - uncommitted_changes + - unverified_commit + - other_repository + - repository_unreadable + - commit_not_on_production_branch + - deployment_unattributed + x-enum-varnames: + - LavaflowSourceUnavailableReasonNoRepository + - LavaflowSourceUnavailableReasonNoCommit + - LavaflowSourceUnavailableReasonUncommittedChanges + - LavaflowSourceUnavailableReasonUnverifiedCommit + - LavaflowSourceUnavailableReasonOtherRepository + - LavaflowSourceUnavailableReasonRepositoryUnreadable + - LavaflowSourceUnavailableReasonCommitNotOnProductionBranch + - LavaflowSourceUnavailableReasonDeploymentUnattributed + description: 'Why LavaFlow couldn''t read, or open a fix on, the code that served the error, with what you can do. LavaFlow reads the deployment that served the error, so once you deploy code it can read, it starts a new run when the error happens again. `no_repository`: LavaFlow is on for no repository; link one. `no_commit`: the deployment recorded no commit, nor did the build a redeploy serves, or no deployment was serving; deploy by pushing to the linked repository''s production branch, or with the CLI from a clean checkout of a commit on that branch. `uncommitted_changes`: the deployment''s files differ from its commit (`dirty: true`), as when the checkout had uncommitted changes; commit and push them, then deploy from the clean checkout. `unverified_commit`: Volcano couldn''t verify the deployment''s commit against the linked repository (`verification: none`), for example because the commit isn''t on the production branch, or the deployment is a function redeploy, which doesn''t carry its upload''s `verification: repository` commit; push the commit to the production branch and deploy it again. `other_repository`: the commit LavaFlow would read is from a repository other than the one LavaFlow is on for, Volcano checked it under an earlier repository link, or the project no longer links that repository. For a deployment, deploy again from the linked repository; for a reported problem or a Code Quality finding, start a new run while the project links the repository LavaFlow is on for. `repository_unreadable`: LavaFlow couldn''t read the repository at the commit, for example because the Volcano GitHub App lost access to it; check the project''s repository link and the App''s access. `commit_not_on_production_branch`: the production branch no longer holds the commit the fix is on, so LavaFlow opened no pull request; deploy from the production branch. `deployment_unattributed`: a newer deployment that may have changed the code was going live when the error happened, so LavaFlow couldn''t tell which one threw it; if the error happens again, LavaFlow starts a new run once; if that run also ends `deployment_unattributed`, the next waits for a new deploy. A `deployment_unattributed` run right after another one, even one a deploy started, gets no such run. New reasons may appear.' PaginatedLavaflowRuns: type: object properties: @@ -31931,391 +33510,9 @@ components: - data - limit - has_more - LavaflowSkillStatus: - type: string - enum: - - proposed - - active - - retired - description: '`proposed` waits for the owner to activate it. `active` is in force. `retired` is set aside and can be restored.' - LavaflowSkillRetiredReason: - type: string - enum: - - harmful - - unused - - stale - - repository_changed - - gate - - owner - description: 'Why a skill retired. `repository_changed`: the project points at another repository, or none. `owner`: the owner retired it. `harmful`, `unused`, `stale` and `gate` are reserved for retirement LavaFlow does on its own, which comes in a later release.' - LavaflowSkillScope: - type: string - enum: - - project - - volcano - x-enum-varnames: - - LavaflowSkillScopeProject - - LavaflowSkillScopeVolcano - description: '`project` skills belong to this project and never leave it. `volcano` skills are written by Volcano for every project.' - LavaflowSkillAppliesTo: - type: object - description: Where a skill applies. Empty lists apply it to the whole project. - properties: - resource_ids: - type: array - maxItems: 20 - items: - type: string - format: uuid - description: Functions, durable functions and frontends it applies to. - paths: - type: array - maxItems: 20 - items: - type: string - minLength: 1 - maxLength: 512 - description: Repository path globs it applies to, relative to the repository root. - required: - - resource_ids - - paths - LavaflowSkillCitation: - type: object - description: 'Repository code a skill rests on: a path and a string the file holds.' - properties: - path: - type: string - anchor: - type: string - maxLength: 128 - required: - - path - - anchor - LavaflowSkillSource: - type: object - description: 'Where a version came from: a writer''s act on a fix''s pull request, or the owner''s edit.' - properties: - kind: - type: string - enum: - - run - - person - run_id: - type: string - format: uuid - nullable: true - description: The run whose pull request taught it, for `run`. - pull_request: - type: integer - format: int64 - nullable: true - description: That run's pull request number. - act: - type: string - enum: - - commit - - review - - comment - nullable: true - description: The writer's act it came from, for `run`. - user_id: - type: string - nullable: true - description: The person who edited it, for `person`. - required: - - kind - - run_id - - pull_request - - act - - user_id - LavaflowSkillCounts: - type: object - properties: - helpful: - type: integer - format: int64 - description: Fixes that used the skill and merged as LavaFlow left them. - harmful: - type: integer - format: int64 - description: Fixes that used the skill and a writer corrected or closed, or whose issue came back. - used: - type: integer - format: int64 - description: Runs that loaded the skill's body. - required: - - helpful - - harmful - - used - LavaflowSkill: - type: object - description: A project skill with its active version. - properties: - id: - type: string - format: uuid - project_id: - type: string - format: uuid - scope: - $ref: '#/components/schemas/LavaflowSkillScope' - name: - type: string - description: Unique in the project. - status: - $ref: '#/components/schemas/LavaflowSkillStatus' - retired_reason: - allOf: - - $ref: '#/components/schemas/LavaflowSkillRetiredReason' - nullable: true - description: Why it retired, null unless `status` is `retired`. - version: - type: integer - format: int64 - description: The active version. - description: - type: string - description: When the skill applies. - body: - type: string - description: Markdown, at most 2 KiB. - applies_to: - $ref: '#/components/schemas/LavaflowSkillAppliesTo' - citations: - type: array - items: - $ref: '#/components/schemas/LavaflowSkillCitation' - content_sha256: - type: string - description: The hash of the active version's text, as a run records it. - source: - $ref: '#/components/schemas/LavaflowSkillSource' - counts: - $ref: '#/components/schemas/LavaflowSkillCounts' - last_used_at: - type: string - format: date-time - nullable: true - last_renewed_at: - type: string - format: date-time - description: When the skill was created, or last renewed by the owner's edit, activation or restore. - retired_at: - type: string - format: date-time - nullable: true - created_at: - type: string - format: date-time - updated_at: - type: string - format: date-time - required: - - id - - project_id - - scope - - name - - status - - retired_reason - - version - - description - - body - - applies_to - - citations - - content_sha256 - - source - - counts - - last_used_at - - last_renewed_at - - retired_at - - created_at - - updated_at - LavaflowSkillList: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/LavaflowSkill' - required: - - data - LavaflowSkillVersion: - type: object - properties: - skill_id: - type: string - format: uuid - project_id: - type: string - format: uuid - version: - type: integer - format: int64 - description: - type: string - body: - type: string - applies_to: - $ref: '#/components/schemas/LavaflowSkillAppliesTo' - citations: - type: array - items: - $ref: '#/components/schemas/LavaflowSkillCitation' - content_sha256: - type: string - source: - $ref: '#/components/schemas/LavaflowSkillSource' - created_at: - type: string - format: date-time - required: - - skill_id - - project_id - - version - - description - - body - - applies_to - - citations - - content_sha256 - - source - - created_at - LavaflowSkillVersionList: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/LavaflowSkillVersion' - required: - - data - LavaflowSkillAppliesToUpdate: - type: object - additionalProperties: false - minProperties: 1 - description: The members of `applies_to` to change. An omitted member keeps its value, and a list you send replaces it, so `[]` clears it. - properties: - resource_ids: - type: array - maxItems: 20 - items: - type: string - format: uuid - description: Functions, durable functions and frontends it applies to. - paths: - type: array - maxItems: 20 - items: - type: string - minLength: 1 - maxLength: 512 - description: Repository path globs it applies to, relative to the repository root. - LavaflowSkillUpdate: - type: object - additionalProperties: false - minProperties: 1 - description: The fields to change. An omitted field keeps its value. - properties: - description: - type: string - minLength: 1 - maxLength: 300 - body: - type: string - minLength: 1 - maxLength: 2048 - applies_to: - $ref: '#/components/schemas/LavaflowSkillAppliesToUpdate' - status: - type: string - enum: - - active - - retired - description: '`active` activates a proposed skill or restores a retired one. `retired` retires it.' - LavaflowSkillError: - type: object - description: An error, with the rules a refused skill failed. - properties: - error: - type: string - code: - type: string - description: '`skill_refused` means the skill check refused the text. `feature_unavailable` means the change needs the project''s `lavaflow.skills` capability.' - rules: - type: array - items: - type: string - enum: - - characters - - shape - - credential_scan - - sanitizer - - credential - - secret - - read_value - - email - - link - - directive - - policy - description: With `skill_refused`, the rules the text failed. The answer never repeats the text. - required: - - error - LavaflowGlobalSkillAppliesTo: - type: object - description: Where a global skill applies. Empty lists apply it to every project. - properties: - runtimes: - type: array - items: - type: string - frameworks: - type: array - items: - type: string - resource_types: - type: array - items: - type: string - required: - - runtimes - - frameworks - - resource_types - LavaflowGlobalSkill: - type: object - description: A skill Volcano wrote for every project. It holds no customer content. - properties: - scope: - $ref: '#/components/schemas/LavaflowSkillScope' - name: - type: string - description: Runs list it as `volcano:`. - description: - type: string - body: - type: string - applies_to: - $ref: '#/components/schemas/LavaflowGlobalSkillAppliesTo' - content_sha256: - type: string - description: The hash of the skill's file, which identifies its version. - required: - - scope - - name - - description - - body - - applies_to - - content_sha256 - LavaflowGlobalSkillList: - type: object - properties: - data: - type: array - items: - $ref: '#/components/schemas/LavaflowGlobalSkill' - required: - - data LavaflowRunProgress: type: object - description: 'How far an active run has come. The steps are `queued`, `diagnosing`, `fixing`, `reviewing`, `waiting_for_checks` and `merge_queued`, in that order, and a run takes as many as its autonomy when it was queued allows: 2 for `diagnose_only`, 4 for `open_pr` (opening the pull request ends it), 6 for `merge` (the merge ends it).' + description: 'How far an active run has come. The steps are `queued`, `diagnosing`, `fixing`, `reviewing`, `waiting_for_checks` and `merge_queued`, in that order, and a run takes as many as its autonomy when it was queued allows: 2 for `diagnose_only`, 4 for `open_pr` (opening the pull request ends it, unless LavaFlow starts the fix''s CI once, when it shows `waiting_for_checks` as step 5 until LavaFlow has), 6 for `merge` (the merge ends it).' properties: stage: type: string @@ -32600,7 +33797,7 @@ components: waiting_reason: type: string nullable: true - description: 'The bound a waiting scan waits at: `findings_limit`, `pull_request_limit`, `spend_limit`, `scan_limit` or `feature_unavailable`. Null while it only waits out its settle window, and for a scan that started. A waiting scan skips no deploy: it covers every commit since the last scan when it starts.' + description: 'The bound a waiting scan waits at: `findings_limit`, `pull_request_limit`, `spend_limit`, `scan_limit` or `feature_unavailable`; `feature_paused` means a platform publication pause is holding the scan without spending its retry allowance. Null while it only waits out its settle window, and for a scan that started. A waiting scan skips no deploy: it covers every commit since the last scan when it starts.' repository_id: type: integer format: int64 @@ -33153,6 +34350,13 @@ components: error: type: string description: Error detail when action is `error`. + code: + type: string + description: | + Machine-readable reason for a `notice`, when it has one. Clients must accept codes not listed + here. `function_served_by_candidate` - a promoted preview serves the function and keeps the + variables it was built with, so the apply did not synchronize the function's variables; the + entry's action is `unchanged`, and the rest of the apply succeeded. notice: type: string description: Optional operational note (e.g. disabling realtime drops active connections). @@ -34532,7 +35736,7 @@ components: description: Canonical function ID used for invocation routing invoke_url: type: string - description: 'Canonical HTTPS endpoint for invoking this function. Use it as-is: it does not share a domain with the API, so a host derived from the API URL will not reach the function. Omitted when the deployment serves no public invocation domain, as in local development; invoke through POST /functions/{functionId}/invoke instead.' + description: 'Canonical HTTPS endpoint for invoking this function. Use it as-is: it does not share a domain with the API, so a host derived from the API URL will not reach the function. Omitted in local development and when the deployment serves no public invocation domain; invoke through POST /functions/{functionId}/invoke instead.' cache_ttl_seconds: type: integer minimum: 1 @@ -34575,7 +35779,7 @@ components: description: | Full JWT token for Authorization header. Returned on create, get, and list (decrypted from storage). List - responses leave it out for a key that holds `ai.invoke`. + responses leave it out for a key that holds `ai.invoke` or `grants.mint`. **Store securely - NEVER expose in frontend code!** key_prefix: type: string @@ -36038,18 +37242,45 @@ components: format: uuid required: - type + LogAppRequestResource: + type: object + description: | + Selector for the entries a first-party app writes into this project's + logs, such as the Builder's run lifecycle. Each app is one resource. + Its ID is UUIDv5(`7374f5e9-35ff-4e46-ac13-a4717bae00e1`, slug), with + the app's slug as UTF-8 bytes, and its name is the slug. The Builder + (`builder`) is `b52fc8fa-8656-5141-adef-99d698ce6f3c`. Deployment logs + are not supported for apps. + additionalProperties: false + properties: + type: + type: string + enum: + - app + description: Resource type to read logs for. + ids: + type: array + maxItems: 25 + description: Optional app resource IDs, each UUIDv5 of an app's slug. Omit or send an empty array to include every app. + items: + type: string + format: uuid + required: + - type LogRequestResource: description: Resource selectors for project log reads. oneOf: - $ref: '#/components/schemas/LogFunctionRequestResource' - $ref: '#/components/schemas/LogFrontendRequestResource' - $ref: '#/components/schemas/LogDatabaseRequestResource' + - $ref: '#/components/schemas/LogAppRequestResource' discriminator: propertyName: type mapping: function: '#/components/schemas/LogFunctionRequestResource' frontend: '#/components/schemas/LogFrontendRequestResource' database: '#/components/schemas/LogDatabaseRequestResource' + app: '#/components/schemas/LogAppRequestResource' LogResource: type: object description: Resource that owns a historical log event. @@ -36060,14 +37291,19 @@ components: - function - frontend - database + - app description: Resource type that owns the log event. id: type: string format: uuid - description: Resource ID that owns the log event. + description: | + Resource ID that owns the log event. For type `app`, the ID is + UUIDv5(`7374f5e9-35ff-4e46-ac13-a4717bae00e1`, slug), with the app's + slug as UTF-8 bytes; the Builder (`builder`) is + `b52fc8fa-8656-5141-adef-99d698ce6f3c`. name: type: string - description: Resource name associated with the log event, when available. + description: Resource name associated with the log event, when available. For type `app`, the app's slug, such as `builder`. required: - type - id @@ -36227,13 +37463,291 @@ components: required: - type additionalProperties: false - LavaflowSkillLearning: - type: string - enum: - - auto - - review - - 'off' - description: What LavaFlow will do with a skill it learns from a writer's correction of one of its fixes, once learning ships in a later release. `auto`, the default, activates it at once. `review` keeps it `proposed` until the owner activates it. `off` learns none and loads no project skill; the project's skills stay readable and deletable. A writer of the repository can steer LavaFlow through what it learns, outside the repository's history and branch protection, so a repository that protects its guidance, or relays CI output through a bot account with write access, should use `review`. Turning learning up needs the project's `lavaflow.skills` capability. + LavaflowOutcomeValues: + type: object + description: Exact counts only when collection coverage is complete. Null means unknown, including days with no retained observations. + properties: + pull_requests_merged: + type: integer + format: int64 + minimum: 0 + nullable: true + improvements_observed_live: + type: integer + format: int64 + minimum: 0 + nullable: true + issue_resolutions: + type: integer + format: int64 + minimum: 0 + nullable: true + required: + - pull_requests_merged + - improvements_observed_live + - issue_resolutions + LavaflowOutcomeCounts: + type: object + description: Retained confirmations in the requested interval. These are lower bounds when collection coverage is incomplete. + properties: + pull_requests_merged: + type: integer + format: int64 + minimum: 0 + improvements_observed_live: + type: integer + format: int64 + minimum: 0 + issue_resolutions: + type: integer + format: int64 + minimum: 0 + required: + - pull_requests_merged + - improvements_observed_live + - issue_resolutions + LavaflowOutcomeDay: + type: object + properties: + date: + type: string + format: date + counts: + $ref: '#/components/schemas/LavaflowOutcomeValues' + confirmed_counts: + $ref: '#/components/schemas/LavaflowOutcomeCounts' + required: + - date + - counts + - confirmed_counts + LavaflowOutcomeCoverage: + type: object + description: Collection coverage for one metric. A migration or the earliest retained event establishes no complete interval. Undated observations are not assigned to the requested dates or totals. + properties: + status: + type: string + enum: + - complete + - partial + - unavailable + x-enum-varnames: + - LavaflowOutcomeCoverageStatusComplete + - LavaflowOutcomeCoverageStatusPartial + - LavaflowOutcomeCoverageStatusUnavailable + complete_from: + type: string + format: date-time + nullable: true + complete_through: + type: string + format: date-time + nullable: true + reason: + type: string + event_time_basis: + type: string + enum: + - confirmed_merge_time + - first_recorded_live_confirmation + - recorded_automatic_resolution + supported_sources: + type: array + items: + type: string + undated_confirmed_events: + type: integer + format: int64 + minimum: 0 + required: + - status + - complete_from + - complete_through + - reason + - event_time_basis + - supported_sources + - undated_confirmed_events + LavaflowOutcomeCurrent: + type: object + description: Current known open critical Code Quality findings, including findings without a fix run. The historical window and run-category filter do not narrow this inventory. Zero is not an exhaustive security assessment. + properties: + known_open_critical_count: + type: integer + format: int64 + minimum: 0 + scope: + type: string + enum: + - confirmed_code_quality + inventory_not_exhaustive: + type: boolean + category_filter_applied: + type: boolean + required: + - known_open_critical_count + - scope + - inventory_not_exhaustive + - category_filter_applied + LavaflowOutcomes: + type: object + description: Separate confirmed merges, live improvements and actual automatic issue-resolution episodes. A live improvement is counted once per project, repository and pull request when inclusion is first durably confirmed on a tracked function or frontend. Resolution includes automatic open or ignored to resolved transitions, preserves the reason and category, and excludes manual actions. The primary issue resolution count includes every category, even when a category filter narrows merge and live counts. Only the first qualifying automatic resolution of a metric episode contributes a count. Recurrence and manual reopen start new metric episodes without erasing previous resolutions; moving resolved to ignored does not start an episode. Existing activity counts remain separate. Older servers omit this object; absence is unavailable, never zero. + properties: + as_of: + type: string + format: date-time + description: The UTC timestamp of the consistent database snapshot. + days: + type: array + description: The same ordered UTC date domain as the activity series, with unknown counts distinct from zero retained confirmations. + items: + $ref: '#/components/schemas/LavaflowOutcomeDay' + totals: + $ref: '#/components/schemas/LavaflowOutcomeValues' + confirmed_totals: + $ref: '#/components/schemas/LavaflowOutcomeCounts' + coverage: + type: object + properties: + pull_requests_merged: + $ref: '#/components/schemas/LavaflowOutcomeCoverage' + improvements_observed_live: + $ref: '#/components/schemas/LavaflowOutcomeCoverage' + issue_resolutions: + $ref: '#/components/schemas/LavaflowOutcomeCoverage' + required: + - pull_requests_merged + - improvements_observed_live + - issue_resolutions + current: + $ref: '#/components/schemas/LavaflowOutcomeCurrent' + required: + - as_of + - days + - totals + - confirmed_totals + - coverage + - current + LavaflowRunReference: + type: object + description: Another LavaFlow run of the same project. + properties: + id: + type: string + format: uuid + title: + type: string + nullable: true + description: The run's title, as `LavaflowRunSummary.title` gives it. + required: + - id + - title + LavaflowLineage: + type: object + description: 'A chain of LavaFlow fixes: a merged fix, and the runs that followed up an issue traced to it or to a fix after it.' + properties: + id: + type: string + format: uuid + description: The lineage's root run. + depth: + type: integer + format: int64 + description: 0 for the root fix. + relation: + type: string + enum: + - regression + - recurrence + nullable: true + description: '`regression` for an issue traced to the parent''s deploy, `recurrence` for an issue that came back after the parent went live. Null for the root.' + confidence: + type: string + enum: + - strong + - weak + nullable: true + description: 'Null for the root, and otherwise `strong`. `weak` is reserved: nothing writes it.' + parent: + allOf: + - $ref: '#/components/schemas/LavaflowRunReference' + nullable: true + description: The fix this run follows up. Null for the root. + covered_by: + allOf: + - $ref: '#/components/schemas/LavaflowRunReference' + nullable: true + description: The run whose fix also covers this issue, so this run opened nothing. + remedy: + type: string + enum: + - fix + - revert + - none + x-enum-varnames: + - LavaflowLineageRemedyFix + - LavaflowLineageRemedyRevert + - LavaflowLineageRemedyNone + description: 'How the run follows up its parent. Currently always `fix`: a regression gets a follow-up fix. `revert` and `none` are reserved.' + state: + type: string + enum: + - active + - settled + - held + hold_reason: + type: string + nullable: true + description: 'Why the lineage holds: `lineage_cap`, `lineage_held` or `repository_changed`. New values may appear. Null unless `state` is `held`.' + pull_requests_opened: + type: integer + format: int64 + description: Pull requests the lineage opened, counting the root's. + pull_request_cap: + type: integer + format: int64 + description: The most pull requests a lineage opens before it holds. + required: + - id + - depth + - relation + - confidence + - parent + - covered_by + - remedy + - state + - hold_reason + - pull_requests_opened + - pull_request_cap + LavaflowFixOutcome: + type: object + description: How a merged LavaFlow fix fared once it went live. + properties: + state: + type: string + enum: + - awaiting_deploy + - watching + - effective + - ineffective + - regressed + - reverted + description: '`watching` for 14 days after the fix goes live, then `effective` unless its issue came back (`ineffective`) or a new issue was traced to its deploy (`regressed`). An outcome never moves back. `reverted` is reserved and not produced yet.' + live_at: + type: string + format: date-time + nullable: true + watch_until: + type: string + format: date-time + nullable: true + follow_ups: + type: integer + format: int64 + description: Runs linked to this fix. + required: + - state + - live_at + - watch_until + - follow_ups LavaflowCommitOrigin: type: string enum: @@ -36262,6 +37776,61 @@ components: required: - sha - origin + LavaflowLineageEvidence: + type: object + description: What tied the run's issue to a recent LavaFlow fix. A `display` link rests on less than a strong one and joins no lineage. + properties: + confidence: + type: string + enum: + - strong + - weak + - display + description: '`strong` or `display`. `weak` is reserved: nothing writes it.' + parent: + allOf: + - $ref: '#/components/schemas/LavaflowRunReference' + description: The fix the issue was traced to. + deployment: + type: object + properties: + commit_sha: + type: string + description: The commit of the deployment that served the occurrence attribution judged (`opened_at`). + commit_origin: + type: string + description: '`push` for a commit Volcano built from a push, `client_reported` for one the deploy client reported. New values may appear.' + required: + - commit_sha + - commit_origin + previous_commit_sha: + type: string + nullable: true + description: The commit of the deployment before it. + fix_live_at: + type: string + format: date-time + opened_at: + type: string + format: date-time + description: The occurrence attribution judged. + overlapping_functions: + type: array + items: + type: string + overlapping_files: + type: array + items: + type: string + required: + - confidence + - parent + - deployment + - previous_commit_sha + - fix_live_at + - opened_at + - overlapping_functions + - overlapping_files IssueFinding: type: object description: The LavaFlow Code Quality finding behind a `code_quality` issue. @@ -36293,7 +37862,7 @@ components: description: The last line of the problem in that commit. explanation: type: string - description: What fails and on which input, as plain text. When it may contain a credential, LavaFlow withholds it whole, and it reads `LavaFlow left this explanation out because it may contain a credential`. + description: 'What fails and on which input, as plain text. When it holds one of the project''s secret values or a secret gitleaks'' default rules detect, it reads `Hidden: this field matched a secret.` in place of all of it.' required: - rule - severity