definitions:
  message.AddonInfo:
    properties:
      name:
        type: string
      status:
        type: string
      version:
        type: string
    type: object
  message.AddonUpgradeConfig:
    properties:
      configurationValues:
        description: |-
          ConfigurationValues is a string containing the set of configuration values for the add-on.
          Values are validated against the schema returned by DescribeAddonConfiguration.
        type: string
      name:
        type: string
      resolveConflicts:
        description: |-
          ResolveConflicts specifies how to handle field value conflicts if you've changed a value from the AWS EKS default.
          NONE means AWS EKS doesn't change the value (update might fail)
          OVERWRITE means AWS EKS overwrites the changed value back to the default
          PRESERVE means AWS EKS preserves the changed value
        type: string
      serviceAccountRoleArn:
        description: |-
          ServiceAccountRoleArn is the Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account.
          The role must have the IAM permissions required by the add-on.
        type: string
      version:
        type: string
    required:
    - name
    - version
    type: object
  message.ClusterUpgradeSummary:
    properties:
      beginTime:
        type: string
      cloudProvider:
        type: string
      currentVersion:
        type: string
      endTime:
        type: string
      id:
        type: string
      k8sClusterName:
        type: string
      name:
        type: string
      status:
        type: string
      targetVersion:
        type: string
    type: object
  message.CreateClusterUpgradeReq:
    properties:
      cloudProvider:
        description: CloudProvider is the cloud provider type (eks, gke, aks, ack,
          mock)
        type: string
      clusterAddons:
        description: ClusterAddons is the list of addons to upgrade
        items:
          $ref: '#/definitions/message.AddonUpgradeConfig'
        type: array
      k8sClusterName:
        description: K8sClusterName is the name of the target Kubernetes cluster
        type: string
      nodeGroupUpgrades:
        description: NodeGroupUpgrade configures node group upgrade with node group
          name and strategy bound together
        items:
          $ref: '#/definitions/message.NodeGroupUpgradeConfig'
        type: array
      region:
        description: Region is the cloud region where the cluster is located
        type: string
      schedule:
        description: Schedule is the time to start the upgrade (optional, defaults
          to now)
        type: string
      targetVersion:
        description: TargetVersion is the target K8s version to upgrade to
        type: string
    required:
    - cloudProvider
    - k8sClusterName
    - region
    - targetVersion
    type: object
  message.CreateClusterUpgradeResp:
    properties:
      id:
        type: string
      message:
        type: string
      status:
        type: string
    type: object
  message.CreateHelmReleaseReq:
    properties:
      component:
        description: Pre-defined component name (e.g., "loki-ha", "kube-prometheus-stack")
        type: string
      config:
        $ref: '#/definitions/message.HelmReleaseConfig'
        type: object
      name:
        description: Name is the name of the HelmRelease, it will be used as the release
          name
        type: string
      namespace:
        description: Namespace is the namespace of the HelmRelease, it will be used
          as the target namespace
        type: string
    required:
    - component
    - name
    - namespace
    type: object
  message.CreateHelmReleaseResp:
    properties:
      component:
        type: string
      config:
        $ref: '#/definitions/message.HelmReleaseConfig'
        type: object
      createTime:
        type: string
      name:
        type: string
      namespace:
        type: string
      status:
        $ref: '#/definitions/message.HelmReleaseStatusSummary'
        type: object
    type: object
  message.CreateVMClusterReq:
    properties:
      name:
        type: string
      values:
        additionalProperties: true
        type: object
    required:
    - name
    - values
    type: object
  message.CreateVMClusterResp:
    properties:
      create_time:
        type: string
      endpoints:
        additionalProperties:
          type: string
        type: object
      helm_release_info:
        $ref: '#/definitions/message.HelmReleaseInfo'
        type: object
      id:
        type: string
      name:
        type: string
      status:
        type: string
      values:
        additionalProperties: true
        type: object
    type: object
  message.DeleteClusterUpgradeResp:
    properties:
      message:
        type: string
    type: object
  message.DeleteHelmReleaseResp:
    properties:
      message:
        type: string
    type: object
  message.DeleteVMClusterResp:
    properties:
      message:
        type: string
    type: object
  message.DiffHelmReleaseReq:
    properties:
      adoptionMode:
        type: boolean
      component:
        type: string
      config:
        $ref: '#/definitions/message.HelmReleaseConfig'
        type: object
      name:
        type: string
      namespace:
        type: string
    required:
    - component
    - name
    - namespace
    type: object
  message.DiffHelmReleaseResp:
    properties:
      blockingReasons:
        items:
          type: string
        type: array
      component:
        type: string
      name:
        type: string
      namespace:
        type: string
      renderedDiff:
        $ref: '#/definitions/message.HelmReleaseRenderedDiff'
        type: object
      safeToApply:
        type: boolean
      sourceResolution:
        $ref: '#/definitions/message.HelmReleaseSourceResolution'
        type: object
      warnings:
        items:
          type: string
        type: array
    type: object
  message.DryRunClusterUpgradeResp:
    properties:
      clusterUpgradeOperation:
        $ref: '#/definitions/v1.ClusterUpgradeOperation'
        type: object
    type: object
  message.GetClusterUpgradeResp:
    properties:
      beginTime:
        type: string
      cloudProvider:
        type: string
      currentStep:
        $ref: '#/definitions/message.StepStatus'
        type: object
      currentVersion:
        type: string
      duration:
        type: string
      endTime:
        type: string
      id:
        type: string
      k8sClusterName:
        type: string
      name:
        type: string
      nextSteps:
        items:
          $ref: '#/definitions/message.StepStatus'
        type: array
      region:
        type: string
      status:
        type: string
      succeededSteps:
        items:
          $ref: '#/definitions/message.StepStatus'
        type: array
      targetVersion:
        type: string
    type: object
  message.GetHelmReleaseResp:
    properties:
      component:
        type: string
      config:
        $ref: '#/definitions/message.HelmReleaseConfig'
        type: object
      createTime:
        type: string
      name:
        type: string
      namespace:
        type: string
      status:
        $ref: '#/definitions/message.HelmReleaseStatusSummary'
        type: object
      updateTime:
        type: string
    type: object
  message.GetNodeGroupsResp:
    properties:
      nodeGroups:
        items:
          $ref: '#/definitions/message.NodeGroupInfo'
        type: array
    type: object
  message.GetServiceHealthResp:
    properties:
      serviceHealth:
        type: boolean
    type: object
  message.GetServiceInfoResp:
    properties:
      availableSpecs:
        additionalProperties:
          $ref: '#/definitions/k8sv1.ResourceRequirements'
        type: object
      serviceName:
        type: string
    type: object
  message.GetVMClusterResp:
    properties:
      create_time:
        type: string
      endpoints:
        additionalProperties:
          type: string
        type: object
      helm_release_info:
        $ref: '#/definitions/message.HelmReleaseInfo'
        type: object
      id:
        type: string
      name:
        type: string
      status:
        type: string
      update_time:
        type: string
      values:
        additionalProperties: true
        type: object
    type: object
  message.HelmReleaseConfig:
    properties:
      dependsOn:
        description: Names of HelmReleases this depends on
        items:
          type: string
        type: array
      expectedDigest:
        description: Expected chart digest
        type: string
      interval:
        description: Interval for reconciliation (e.g., "5m")
        type: string
      sourceRef:
        $ref: '#/definitions/message.HelmReleaseSourceRef'
        description: Reference to Helm repository
        type: object
      suspend:
        description: Whether to suspend reconciliation
        type: boolean
      timeout:
        description: Timeout for operations (e.g., "5m")
        type: string
      values:
        additionalProperties: true
        description: Chart values override
        type: object
      version:
        description: Version of the chart to install
        type: string
    type: object
  message.HelmReleaseConfigSummary:
    properties:
      dependsOn:
        items:
          type: string
        type: array
      suspend:
        type: boolean
      targetNamespace:
        type: string
    type: object
  message.HelmReleaseInfo:
    properties:
      chart:
        type: string
      release_name:
        type: string
      release_namespace:
        type: string
      version:
        type: string
    type: object
  message.HelmReleaseRenderedDiff:
    properties:
      changed:
        type: boolean
      output:
        type: string
      resolvedDigest:
        type: string
    type: object
  message.HelmReleaseSourceRef:
    properties:
      kind:
        type: string
      name:
        type: string
      namespace:
        type: string
      url:
        type: string
    type: object
  message.HelmReleaseSourceResolution:
    properties:
      chart:
        type: string
      expectedDigest:
        type: string
      resolvedDigest:
        type: string
      sourceKind:
        type: string
      sourceName:
        type: string
      sourceNamespace:
        type: string
      version:
        type: string
    type: object
  message.HelmReleaseStatusSummary:
    properties:
      expectedDigest:
        type: string
      failures:
        type: integer
      helmChart:
        type: string
      lastAppliedRevision:
        type: string
      lastAttemptedRevision:
        type: string
      lastFailureReason:
        type: string
      lastReleaseRevision:
        type: integer
      observedGeneration:
        type: integer
      requestedVersion:
        type: string
      resolvedDigest:
        type: string
    type: object
  message.HelmReleaseSummary:
    properties:
      component:
        type: string
      config:
        $ref: '#/definitions/message.HelmReleaseConfigSummary'
        type: object
      createTime:
        type: string
      name:
        type: string
      namespace:
        type: string
      status:
        $ref: '#/definitions/message.HelmReleaseStatusSummary'
        type: object
      updateTime:
        type: string
    type: object
  message.ListAddonsResp:
    properties:
      addons:
        items:
          $ref: '#/definitions/message.AddonInfo'
        type: array
    type: object
  message.ListClusterUpgradesReq:
    properties:
      continueToken:
        type: string
      k8sClusterName:
        type: string
      limit:
        type: integer
      status:
        type: string
    type: object
  message.ListClusterUpgradesResp:
    properties:
      clusterUpgrades:
        items:
          $ref: '#/definitions/message.ClusterUpgradeSummary'
        type: array
      continueToken:
        type: string
      remainingItemCount:
        type: integer
    type: object
  message.ListHelmReleasesReq:
    properties:
      continueToken:
        type: string
      limit:
        type: integer
    type: object
  message.ListHelmReleasesResp:
    properties:
      continueToken:
        type: string
      helmReleases:
        items:
          $ref: '#/definitions/message.HelmReleaseSummary'
        type: array
      remainingItemCount:
        type: integer
    type: object
  message.ListVMClustersReq:
    properties:
      page:
        description: Current page location
        type: integer
      pageSize:
        description: Number of this request
        type: integer
    type: object
  message.ListVMClustersResp:
    properties:
      continueToken:
        type: string
      remainingItemCount:
        type: integer
      vmclusters:
        items:
          $ref: '#/definitions/message.VMClusterSummary'
        type: array
    type: object
  message.NodeGroupInfo:
    properties:
      id:
        type: string
      launchTemplateId:
        description: LaunchTemplateId is set for EKS node groups that use a launch
          template with an ID.
        type: string
      launchTemplateName:
        description: LaunchTemplateName is set for EKS node groups that use a launch
          template with a name.
        type: string
      launchTemplateVersion:
        description: LaunchTemplateVersion is set for EKS node groups that use a launch
          template.
        type: string
      name:
        type: string
      nodeCount:
        type: integer
      runtimeVersion:
        type: string
      status:
        type: string
      version:
        type: string
    type: object
  message.NodeGroupUpgradeConfig:
    properties:
      launchTemplateId:
        description: LaunchTemplateId identifies the EKS launch template to use for
          the in-place upgrade.
        type: string
      launchTemplateName:
        description: LaunchTemplateName identifies the EKS launch template when launchTemplateId
          is not provided.
        type: string
      launchTemplateVersion:
        description: LaunchTemplateVersion is required for EKS in-place upgrades when
          the node group's launch template specifies a custom AMI.
        type: string
      newNodeGroupName:
        description: NewNodeGroupName is the name for the new node group in blue-green
          upgrade. Optional; if empty, a random 8-char lowercase name is used.
        type: string
      nodeGroupName:
        description: NodeGroupName is the name of the node group to upgrade
        type: string
      requiresVMStorageRollout:
        default: false
        description: RequiresVMStorageRollout indicates if this blue-green node group
          upgrade should trigger the VMStorage rollout flow
        type: boolean
      runtimeType:
        description: RuntimeType is the current Kubernetes runtime type of the node
          group
        type: string
      strategy:
        description: Strategy is the upgrade strategy for nodegroups ("blue-green"
          or "in-place")
        type: string
      targetRuntimeVersion:
        description: TargetRuntimeVersion is the target Kubernetes runtime version
          to upgrade to
        type: string
      vmClusterHelmValues:
        additionalProperties: true
        description: |-
          VMClusterHelmValues contains a VMCluster.spec overlay to apply during VMStorage rollout.
          Use an empty object when the rollout should not change VMCluster spec.
        type: object
      vmstorageSTSName:
        default: vmstorage-vmcluster
        description: VMStorageSTSName is the name of the vmstorage StatefulSet to
          observe rollout status
        type: string
      vmstorageSTSNamespace:
        default: observability
        description: VMStorageSTSNamespace is the namespace of the vmstorage StatefulSet
          to observe rollout status
        type: string
    required:
    - nodeGroupName
    - requiresVMStorageRollout
    - strategy
    type: object
  message.PauseClusterUpgradeResp:
    properties:
      message:
        type: string
    type: object
  message.Result:
    properties:
      code:
        description: http error code
        type: integer
      data:
        description: The returned content, storage in JSON format
        type: object
      message:
        description: http error msg
        type: string
    type: object
  message.ResumeClusterUpgradeResp:
    properties:
      message:
        type: string
    type: object
  message.StepStatus:
    properties:
      beginTime:
        type: string
      duration:
        type: string
      endTime:
        type: string
      processor:
        type: string
      status:
        type: string
    type: object
  message.UpdateBasicAuthReq:
    properties:
      password:
        type: string
      username:
        type: string
    required:
    - password
    - username
    type: object
  message.UpdateBasicAuthResp:
    type: object
  message.UpdateHelmReleaseReq:
    properties:
      component:
        description: Pre-defined component name
        type: string
      config:
        $ref: '#/definitions/message.HelmReleaseConfig'
        type: object
      name:
        type: string
    required:
    - component
    - name
    type: object
  message.UpdateHelmReleaseResp:
    properties:
      component:
        type: string
      config:
        $ref: '#/definitions/message.HelmReleaseConfig'
        type: object
      name:
        type: string
      namespace:
        type: string
      status:
        $ref: '#/definitions/message.HelmReleaseStatusSummary'
        type: object
      updateTime:
        type: string
    type: object
  message.UpdateVMClusterReq:
    properties:
      id:
        type: string
      values:
        additionalProperties: true
        type: object
    required:
    - id
    - values
    type: object
  message.UpdateVMClusterResp:
    properties:
      endpoints:
        additionalProperties:
          type: string
        type: object
      helm_release_info:
        $ref: '#/definitions/message.HelmReleaseInfo'
        type: object
      id:
        type: string
      name:
        type: string
      status:
        type: string
      update_time:
        type: string
      values:
        additionalProperties: true
        type: object
    type: object
  message.VMClusterSummary:
    properties:
      create_time:
        type: string
      endpoints:
        additionalProperties:
          type: string
        type: object
      id:
        type: string
      name:
        type: string
      status:
        type: string
      update_time:
        type: string
    type: object
  v1.ClusterUpgradeOperation:
    properties:
      spec:
        $ref: '#/definitions/v1.ClusterUpgradeOperationSpec'
        type: object
      status:
        $ref: '#/definitions/v1.ClusterUpgradeOperationStatus'
        type: object
    type: object
  v1.ClusterUpgradeOperationSpec:
    properties:
      cloudProvider:
        description: |-
          +kubebuilder:validation:Required
          +kubebuilder:validation:Enum=eks;gke;aks;ack
          CloudProvider is the cloud provider of the cluster
        type: string
      k8sClusterName:
        description: |-
          +kubebuilder:validation:Required
          K8sClusterName is the name of the target Kubernetes cluster
        type: string
      paused:
        description: Paused indicates whether the operation is paused
        type: boolean
      region:
        description: |-
          +kubebuilder:validation:Required
          Region is the cloud region where the cluster is located
        type: string
      schedule:
        description: |-
          +kubebuilder:validation:Required
          Schedule is the scheduled time to start the operation
        type: string
      steps:
        $ref: '#/definitions/v1.UpgradeSteps'
        description: |-
          +kubebuilder:validation:Required
          Steps is the ordered list of upgrade steps to execute
        type: object
      targetVersion:
        description: |-
          +kubebuilder:validation:Required
          TargetVersion is the target Kubernetes version to upgrade to
        type: string
      ttlSeconds:
        description: |-
          +optional
          TTLSeconds is the time-to-live after completion before auto-deletion
        type: string
    type: object
  v1.ClusterUpgradeOperationStatus:
    properties:
      beginTime:
        description: BeginTime is the time when the operation started
        type: string
      currentStep:
        $ref: '#/definitions/v1.UpgradeStep'
        description: CurrentStep is the step currently being executed
        type: object
      duration:
        description: Duration is the human-readable duration of the operation
        type: string
      endTime:
        description: EndTime is the time when the operation completed
        type: string
      nextSteps:
        $ref: '#/definitions/v1.UpgradeSteps'
        description: NextSteps is the queue of steps to be executed
        type: object
      phase:
        description: Phase describes the current phase of the upgrade operation
        type: string
      succeededSteps:
        $ref: '#/definitions/v1.UpgradeSteps'
        description: SucceededSteps is the list of steps that have completed successfully
        type: object
    type: object
  v1.UpgradeStep:
    properties:
      beginTime:
        description: |-
          +optional
          BeginTime is the time when this step started
        type: string
      cloudOperationID:
        description: |-
          +optional
          CloudOperationID stores the cloud provider's async operation ID (e.g. GKE Operation name) for polling.
          Used when UpgradeNodeGroup returns an operation ID; we poll this to determine completion.
        type: string
      duration:
        description: |-
          +optional
          Duration is the human-readable duration of this step
        type: string
      endTime:
        description: |-
          +optional
          EndTime is the time when this step completed
        type: string
      options:
        description: |-
          +optional
          Options contains processor-specific parameters
        type: string
      processor:
        description: |-
          +kubebuilder:validation:Required
          +kubebuilder:validation:Enum=upgrade-controlplane;upgrade-cluster-addons;upgrade-node-group
          Processor is the name of the processor to execute
        type: string
      subStep:
        description: |-
          +optional
          SubStep is the current sub-step within this step (e.g. for blue-green node group: create-nodegroup, wait-ready, cordon, vmstorage-rollout, delete-old-nodegroup).
        type: string
      subStepBeginTime:
        description: |-
          +optional
          SubStepBeginTime is when the current sub-step started.
        type: string
    type: object
  v1.UpgradeSteps:
    items:
      $ref: '#/definitions/v1.UpgradeStep'
    type: array
info:
  contact: {}
  license: {}
paths:
  /:
    get:
      consumes:
      - application/json
      description: get service info
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.GetServiceInfoResp'
              type: object
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: get service info
      tags:
      - service
  /addons:
    get:
      consumes:
      - application/json
      description: Lists all addons installed in the cluster with their versions and
        status
      parameters:
      - description: Kubernetes cluster name
        in: query
        name: k8sClusterName
        required: true
        type: string
      - description: Cloud region
        in: query
        name: region
        required: true
        type: string
      - description: Cloud provider (eks, gke, aks, ack, mock)
        in: query
        name: cloudProvider
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.ListAddonsResp'
              type: object
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/message.Result'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: List cluster addons
      tags:
      - upgrade-operation
  /alert-auth:
    put:
      consumes:
      - application/json
      description: Updates basic auth credentials for both alertmanager and kube-prometheus-stack
        HelmReleases using fail-fast approach
      parameters:
      - description: update basic auth request
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/message.UpdateBasicAuthReq'
      produces:
      - application/json
      responses:
        "200":
          description: Basic auth credentials updated successfully
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.UpdateBasicAuthResp'
              type: object
        "500":
          description: Basic auth update failed (30004)
          schema:
            $ref: '#/definitions/message.Result'
      summary: update basic auth credentials for alertmanager and kube-prometheus-stack
      tags:
      - ops
  /health:
    get:
      consumes:
      - application/json
      description: get service health
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.GetServiceHealthResp'
              type: object
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: get service health
      tags:
      - service
  /helmreleases:
    get:
      consumes:
      - application/json
      description: Lists all HelmRelease custom resources, optionally filtered by
        namespace
      parameters:
      - description: namespace to filter by
        in: query
        name: namespace
        type: string
      - in: query
        name: continueToken
        type: string
      - in: query
        name: limit
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.ListHelmReleasesResp'
              type: object
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: List HelmRelease CRs
      tags:
      - helmrelease
    post:
      consumes:
      - application/json
      description: Creates a new HelmRelease custom resource in the specified namespace
      parameters:
      - description: create HelmRelease request
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/message.CreateHelmReleaseReq'
      produces:
      - application/json
      responses:
        "202":
          description: Accepted
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.CreateHelmReleaseResp'
              type: object
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/message.Result'
        "409":
          description: Conflict
          schema:
            $ref: '#/definitions/message.Result'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: create a HelmRelease CR
      tags:
      - helmrelease
  /helmreleases/{name}:
    delete:
      consumes:
      - application/json
      description: Deletes a HelmRelease custom resource and triggers the associated
        Helm uninstall
      parameters:
      - description: HelmRelease namespace
        in: path
        name: namespace
        required: true
        type: string
      - description: HelmRelease name
        in: path
        name: name
        required: true
        type: string
      produces:
      - application/json
      responses:
        "202":
          description: Accepted
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.DeleteHelmReleaseResp'
              type: object
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/message.Result'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: delete HelmRelease CR
      tags:
      - helmrelease
    get:
      consumes:
      - application/json
      description: Retrieves the details of a specific HelmRelease custom resource
      parameters:
      - description: HelmRelease name
        in: path
        name: name
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.GetHelmReleaseResp'
              type: object
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/message.Result'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: get HelmRelease CR details
      tags:
      - helmrelease
    put:
      consumes:
      - application/json
      description: Updates the configuration of an existing HelmRelease custom resource
      parameters:
      - description: HelmRelease name
        in: path
        name: name
        required: true
        type: string
      - description: update HelmRelease request
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/message.UpdateHelmReleaseReq'
      produces:
      - application/json
      responses:
        "202":
          description: Accepted
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.UpdateHelmReleaseResp'
              type: object
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/message.Result'
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/message.Result'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: update HelmRelease CR
      tags:
      - helmrelease
  /helmreleases/diff:
    post:
      consumes:
      - application/json
      description: Compares requested HelmRelease desired state with live state and
        returns drift/adoption guard information
      parameters:
      - description: diff HelmRelease request
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/message.DiffHelmReleaseReq'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.DiffHelmReleaseResp'
              type: object
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/message.Result'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: diff a HelmRelease desired state
      tags:
      - helmrelease
  /nodeGroups:
    get:
      consumes:
      - application/json
      description: Lists all node groups for a cluster with their Kubernetes versions
      parameters:
      - description: Kubernetes cluster name
        in: query
        name: k8sClusterName
        required: true
        type: string
      - description: Cloud region
        in: query
        name: region
        required: true
        type: string
      - description: Cloud provider (eks, gke, aks, ack, mock)
        in: query
        name: cloudProvider
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.GetNodeGroupsResp'
              type: object
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/message.Result'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: Get all node groups and their versions
      tags:
      - upgrade-operation
  /upgradeOperations:
    get:
      consumes:
      - application/json
      description: Lists all cluster upgrade operations with optional filtering
      parameters:
      - in: query
        name: continueToken
        type: string
      - in: query
        name: k8sClusterName
        type: string
      - in: query
        name: limit
        type: integer
      - in: query
        name: status
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.ListClusterUpgradesResp'
              type: object
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: List upgrade operations
      tags:
      - upgrade-operation
    post:
      consumes:
      - application/json
      description: Creates a new Kubernetes cluster upgrade operation with step-based
        execution
      parameters:
      - description: create cluster upgrade request
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/message.CreateClusterUpgradeReq'
      produces:
      - application/json
      responses:
        "202":
          description: Accepted
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.CreateClusterUpgradeResp'
              type: object
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/message.Result'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: Create an upgrade operation
      tags:
      - upgrade-operation
  /upgradeOperations/{id}:
    delete:
      consumes:
      - application/json
      description: Deletes/cancels a cluster upgrade operation
      parameters:
      - description: upgrade operation ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "202":
          description: Accepted
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.DeleteClusterUpgradeResp'
              type: object
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/message.Result'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: Delete an upgrade operation
      tags:
      - upgrade-operation
    get:
      consumes:
      - application/json
      description: Retrieves the details of a specific cluster upgrade operation
      parameters:
      - description: upgrade operation ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.GetClusterUpgradeResp'
              type: object
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/message.Result'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: Get upgrade operation details
      tags:
      - upgrade-operation
  /upgradeOperations/{id}/pause:
    put:
      consumes:
      - application/json
      description: Pauses a running cluster upgrade operation
      parameters:
      - description: upgrade operation ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.PauseClusterUpgradeResp'
              type: object
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/message.Result'
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/message.Result'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: Pause an upgrade operation
      tags:
      - upgrade-operation
  /upgradeOperations/{id}/resume:
    put:
      consumes:
      - application/json
      description: Resumes a paused cluster upgrade operation
      parameters:
      - description: upgrade operation ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.ResumeClusterUpgradeResp'
              type: object
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/message.Result'
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/message.Result'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: Resume a paused upgrade operation
      tags:
      - upgrade-operation
  /upgradeOperations/dry-run:
    post:
      consumes:
      - application/json
      description: Dry-runs a cluster upgrade request and returns the ClusterUpgradeOperation
        CR that would be created without actually creating it
      parameters:
      - description: create cluster upgrade request
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/message.CreateClusterUpgradeReq'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.DryRunClusterUpgradeResp'
              type: object
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/message.Result'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: Dry-run an upgrade operation
      tags:
      - upgrade-operation
  /vmclusters:
    get:
      consumes:
      - application/json
      description: Lists all deployed VictoriaMetrics clusters managed by the Ops
        API Server
      parameters:
      - description: Current page location
        in: query
        name: page
        type: integer
      - description: Number of this request
        in: query
        name: pageSize
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.ListVMClustersResp'
              type: object
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: List VM Clusters
      tags:
      - vmcluster
    post:
      consumes:
      - application/json
      description: Deploys a new VictoriaMetrics cluster by creating a new Helm release
      parameters:
      - description: create VM cluster request
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/message.CreateVMClusterReq'
      produces:
      - application/json
      responses:
        "202":
          description: Accepted
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.CreateVMClusterResp'
              type: object
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/message.Result'
        "409":
          description: Conflict
          schema:
            $ref: '#/definitions/message.Result'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: deploy victoriametrics cluster
      tags:
      - vmcluster
  /vmclusters/{vmclusterId}:
    delete:
      consumes:
      - application/json
      description: Deletes a VictoriaMetrics cluster by uninstalling the associated
        Helm release
      parameters:
      - description: VM cluster ID
        in: path
        name: vmclusterId
        required: true
        type: string
      produces:
      - application/json
      responses:
        "202":
          description: Accepted
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.DeleteVMClusterResp'
              type: object
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/message.Result'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: Uninstall the VM cluster
      tags:
      - vmcluster
    get:
      consumes:
      - application/json
      description: Retrieves the details of a specific VictoriaMetrics cluster
      parameters:
      - description: VM cluster ID
        in: path
        name: vmclusterId
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.GetVMClusterResp'
              type: object
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/message.Result'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: get VM cluster details
      tags:
      - vmcluster
    put:
      consumes:
      - application/json
      description: Updates the configuration of an existing VictoriaMetrics cluster
        by performing a Helm upgrade
      parameters:
      - description: VM cluster ID
        in: path
        name: vmclusterId
        required: true
        type: string
      - description: update VM cluster request
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/message.UpdateVMClusterReq'
      produces:
      - application/json
      responses:
        "202":
          description: Accepted
          schema:
            allOf:
            - $ref: '#/definitions/message.Result'
            - properties:
                data:
                  $ref: '#/definitions/message.UpdateVMClusterResp'
              type: object
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/message.Result'
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/message.Result'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/message.Result'
      summary: change vm cluster
      tags:
      - vmcluster
swagger: "2.0"
