basePath: /api/v1
definitions:
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ArtifactResponse:
    properties:
      createdAt:
        type: string
      digest:
        type: string
      repositoryName:
        type: string
      size:
        type: integer
      tag:
        type: string
      type:
        description: chart | image | other
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.AuthResponse:
    properties:
      accessToken:
        type: string
      refreshToken:
        type: string
      userId:
        type: string
      username:
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ClusterHealthResponse:
    properties:
      healthy:
        type: boolean
      message:
        type: string
      version:
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ClusterMetricsResponse:
    properties:
      clusterId:
        type: string
      clusterName:
        type: string
      cpuUsage:
        type: number
      gpuUsage:
        type: number
      lastCheck:
        type: string
      maxNodeCpu:
        type: string
      maxNodeCpuUsage:
        type: number
      maxNodeGpu:
        type: integer
      maxNodeGpuUsage:
        type: number
      maxNodeMemUsage:
        type: number
      maxNodeMemory:
        type: string
      memoryUsage:
        type: number
      nodeCount:
        type: integer
      nodes:
        items:
          $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.NodeMetricsResponse'
        type: array
      podCount:
        type: integer
      status:
        type: string
      totalCpu:
        type: string
      totalGpu:
        type: integer
      totalMemory:
        type: string
      uptime:
        type: string
      usedCpu:
        type: string
      usedGpu:
        type: integer
      usedMemory:
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ClusterResponse:
    properties:
      caData:
        description: 脱敏数据（仅用于前端显示，实际值为掩码）
        type: string
      certData:
        description: 脱敏显示（••••••••）
        type: string
      createdAt:
        type: string
      description:
        type: string
      hasCaData:
        description: 认证配置状态（不返回实际证书数据，仅返回是否已配置）
        type: boolean
      hasCertData:
        type: boolean
      hasKeyData:
        type: boolean
      hasToken:
        type: boolean
      host:
        type: string
      id:
        type: string
      keyData:
        description: 脱敏显示（••••••••）
        type: string
      name:
        type: string
      token:
        description: 脱敏显示（••••••••）
        type: string
      updatedAt:
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.CreateClusterRequest:
    properties:
      caData:
        description: Base64 CA data (also accepts legacy field "ca_data")
        type: string
      certData:
        description: Base64 client certificate (also accepts legacy field "cert_data")
        type: string
      description:
        type: string
      host:
        type: string
      keyData:
        description: Base64 client key (also accepts legacy field "key_data")
        type: string
      name:
        type: string
      token:
        type: string
    required:
    - host
    - name
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.CreateInstanceRequest:
    properties:
      description:
        type: string
      name:
        type: string
      namespace:
        type: string
      registryId:
        description: Registry identifier (also accepts legacy field "registry_id")
        type: string
      repository:
        type: string
      tag:
        type: string
      values:
        additionalProperties: true
        type: object
      valuesYaml:
        type: string
    required:
    - name
    - namespace
    - registryId
    - repository
    - tag
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.CreateRegistryRequest:
    properties:
      description:
        type: string
      insecure:
        type: boolean
      name:
        type: string
      password:
        type: string
      url:
        type: string
      username:
        type: string
    required:
    - name
    - url
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse:
    properties:
      code:
        type: integer
      error:
        type: string
      message:
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.InstanceEntryHostResponse:
    properties:
      host:
        type: string
      paths:
        items:
          $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.InstanceEntryPathResponse'
        type: array
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.InstanceEntryPathResponse:
    properties:
      path:
        type: string
      serviceName:
        type: string
      servicePort:
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.InstanceEntryPortResponse:
    properties:
      name:
        type: string
      nodePort:
        type: integer
      port:
        type: integer
      protocol:
        type: string
      targetPort:
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.InstanceEntryResponse:
    properties:
      clusterIP:
        type: string
      externalIPs:
        items:
          type: string
        type: array
      hosts:
        items:
          $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.InstanceEntryHostResponse'
        type: array
      kind:
        type: string
      loadBalancerIngress:
        items:
          type: string
        type: array
      name:
        type: string
      namespace:
        type: string
      ports:
        items:
          $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.InstanceEntryPortResponse'
        type: array
      tls:
        items:
          $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.InstanceEntryTLSResponse'
        type: array
      type:
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.InstanceEntryTLSResponse:
    properties:
      hosts:
        items:
          type: string
        type: array
      secretName:
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.InstanceListResponse:
    properties:
      instances:
        items:
          $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.InstanceResponse'
        type: array
      total:
        type: integer
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.InstanceResponse:
    properties:
      chart:
        type: string
      clusterId:
        type: string
      createdAt:
        type: string
      description:
        type: string
      id:
        type: string
      name:
        type: string
      namespace:
        type: string
      registryId:
        type: string
      repository:
        type: string
      revision:
        type: integer
      status:
        description: 实例当前状态
        enum:
        - deployed
        - uninstalled
        - superseded
        - failed
        - pending-install
        - pending-upgrade
        - pending-rollback
        - pending-delete
        - unknown
        type: string
      statusReason:
        description: 状态说明
        type: string
      lastOperation:
        description: 最后一次操作类型
        enum:
        - ""
        - install
        - upgrade
        - rollback
        - delete
        - sync
        type: string
      lastError:
        description: 最近一次错误信息
        type: string
      updatedAt:
        type: string
      values:
        additionalProperties: true
        type: object
      version:
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.LoginRequest:
    properties:
      password:
        type: string
      username:
        type: string
    required:
    - password
    - username
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.MonitoringSummaryResponse:
    properties:
      errorClusters:
        type: integer
      healthyClusters:
        type: integer
      lastUpdate:
        type: string
      totalClusters:
        type: integer
      totalNodes:
        type: integer
      totalPods:
        type: integer
      warningClusters:
        type: integer
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.NodeMetricsResponse:
    properties:
      age:
        type: string
      containerRuntime:
        type: string
      cpuAllocatable:
        type: string
      cpuCapacity:
        type: string
      cpuPercent:
        type: number
      cpuUsage:
        type: string
      gpuCapacity:
        type: integer
      gpuPercent:
        type: number
      gpuType:
        type: string
      gpuUsage:
        type: integer
      kernelVersion:
        type: string
      kubeletVersion:
        type: string
      memoryAllocatable:
        type: string
      memoryCapacity:
        type: string
      memoryPercent:
        type: number
      memoryUsage:
        type: string
      nodeName:
        type: string
      osImage:
        type: string
      podCount:
        type: integer
      role:
        type: string
      status:
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.RefreshTokenRequest:
    properties:
      refreshToken:
        type: string
    required:
    - refreshToken
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.RegisterRequest:
    properties:
      password:
        minLength: 6
        type: string
      username:
        type: string
    required:
    - password
    - username
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.RegistryHealthResponse:
    properties:
      healthy:
        type: boolean
      message:
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.RegistryResponse:
    properties:
      createdAt:
        type: string
      description:
        type: string
      hasPassword:
        description: 是否已设置密码
        type: boolean
      id:
        type: string
      insecure:
        type: boolean
      name:
        type: string
      password:
        description: 脱敏显示（••••••••）
        type: string
      updatedAt:
        type: string
      url:
        type: string
      username:
        description: 明文返回用户名（不敏感）
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.RepositoryListResponse:
    properties:
      catalogSupported:
        description: Whether _catalog API is supported
        type: boolean
      message:
        description: User-friendly message
        type: string
      registryId:
        type: string
      registryUrl:
        type: string
      repositories:
        items:
          type: string
        type: array
      source:
        description: 'Data source: "catalog" | "preconfigured" | "unavailable"'
        type: string
      total:
        type: integer
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.TagResponse:
    properties:
      mediaType:
        type: string
      repositoryName:
        description: Repository name
        type: string
      size:
        description: Artifact size (bytes)
        type: integer
      tag:
        description: Tag name (e.g. "1.0.0", "latest")
        type: string
      type:
        description: 'Artifact type: chart, image, other'
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.UpdateClusterRequest:
    properties:
      caData:
        description: Base64 CA data (also accepts legacy field "ca_data")
        type: string
      certData:
        description: Base64 client certificate (also accepts legacy field "cert_data")
        type: string
      description:
        type: string
      host:
        type: string
      keyData:
        description: Base64 client key (also accepts legacy field "key_data")
        type: string
      name:
        type: string
      token:
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.UpdateInstanceRequest:
    properties:
      description:
        type: string
      values:
        additionalProperties: true
        type: object
      valuesYaml:
        type: string
      version:
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.UpdateRegistryRequest:
    properties:
      description:
        type: string
      insecure:
        type: boolean
      name:
        type: string
      password:
        type: string
      url:
        type: string
      username:
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.UserResponse:
    properties:
      createdAt:
        type: string
      email:
        type: string
      id:
        type: string
      updatedAt:
        type: string
      username:
        type: string
    type: object
  github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ValuesSchemaResponse:
    properties:
      schema:
        type: string
    type: object
host: localhost:8080
info:
  contact:
    email: support@ocdp.io
    name: API Support
  description: |-
    OCDP (Open Cloud Development Platform) Backend API

    RESTful API for managing Kubernetes clusters, OCI registries, and Helm deployments.
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  title: OCDP Backend API
  version: "1.0"
paths:
  /auth/login:
    post:
      consumes:
      - application/json
      description: 使用用户名和密码获取访问令牌
      parameters:
      - description: 登录信息
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.LoginRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.AuthResponse'
        "401":
          description: Unauthorized
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      summary: 用户登录
      tags:
      - Auth
  /auth/refresh:
    post:
      consumes:
      - application/json
      description: 使用刷新令牌获取新的访问令牌
      parameters:
      - description: 刷新令牌
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.RefreshTokenRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.AuthResponse'
        "401":
          description: Unauthorized
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      summary: 刷新访问令牌
      tags:
      - Auth
  /auth/register:
    post:
      consumes:
      - application/json
      description: 创建一个新的后台用户
      parameters:
      - description: 注册信息
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.RegisterRequest'
      produces:
      - application/json
      responses:
        "201":
          description: Created
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.UserResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      summary: 用户注册
      tags:
      - Auth
  /clusters:
    get:
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ClusterResponse'
            type: array
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 列出所有集群
      tags:
      - Clusters
    post:
      consumes:
      - application/json
      description: 创建一个新的 Kubernetes 集群配置
      parameters:
      - description: 集群信息
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.CreateClusterRequest'
      produces:
      - application/json
      responses:
        "201":
          description: Created
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ClusterResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 创建集群
      tags:
      - Clusters
  /clusters/{cluster_id}:
    delete:
      parameters:
      - description: 集群 ID
        in: path
        name: cluster_id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "204":
          description: No Content
          schema:
            type: string
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 删除集群
      tags:
      - Clusters
    get:
      parameters:
      - description: 集群 ID
        in: path
        name: cluster_id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ClusterResponse'
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 获取集群详情
      tags:
      - Clusters
    put:
      consumes:
      - application/json
      parameters:
      - description: 集群 ID
        in: path
        name: cluster_id
        required: true
        type: string
      - description: 更新内容
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.UpdateClusterRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ClusterResponse'
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 更新集群
      tags:
      - Clusters
  /clusters/{cluster_id}/health:
    get:
      parameters:
      - description: 集群 ID
        in: path
        name: cluster_id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ClusterHealthResponse'
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 获取集群健康状态
      tags:
      - Clusters
  /clusters/{cluster_id}/instances:
    get:
      parameters:
      - description: 集群 ID
        in: path
        name: cluster_id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.InstanceListResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 列出实例
      tags:
      - Instances
    post:
      consumes:
      - application/json
      description: 在指定集群上部署一个 artifact
      parameters:
      - description: 集群 ID
        in: path
        name: cluster_id
        required: true
        type: string
      - description: 实例配置
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.CreateInstanceRequest'
      produces:
      - application/json
      responses:
        "201":
          description: Created
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.InstanceResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 创建实例
      tags:
      - Instances
  /clusters/{cluster_id}/instances/{instance_id}:
    delete:
      parameters:
      - description: 集群 ID
        in: path
        name: cluster_id
        required: true
        type: string
      - description: 实例 ID
        in: path
        name: instance_id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "204":
          description: No Content
          schema:
            type: string
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 删除实例
      tags:
      - Instances
    get:
      parameters:
      - description: 集群 ID
        in: path
        name: cluster_id
        required: true
        type: string
      - description: 实例 ID
        in: path
        name: instance_id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.InstanceResponse'
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 获取实例详情
      tags:
      - Instances
    put:
      consumes:
      - application/json
      parameters:
      - description: 集群 ID
        in: path
        name: cluster_id
        required: true
        type: string
      - description: 实例 ID
        in: path
        name: instance_id
        required: true
        type: string
      - description: 更新内容
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.UpdateInstanceRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.InstanceResponse'
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 更新实例
      tags:
      - Instances
  /clusters/{cluster_id}/instances/{instance_id}/entries:
    get:
      parameters:
      - description: 集群 ID
        in: path
        name: cluster_id
        required: true
        type: string
      - description: 实例 ID
        in: path
        name: instance_id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.InstanceEntryResponse'
            type: array
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 获取实例 Service/Ingress 入口
      tags:
      - Instances
  /monitoring/clusters:
    get:
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ClusterMetricsResponse'
            type: array
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 列出集群监控
      tags:
      - Monitoring
  /monitoring/clusters/{cluster_id}:
    get:
      parameters:
      - description: 集群 ID
        in: path
        name: cluster_id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ClusterMetricsResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 获取集群监控
      tags:
      - Monitoring
  /monitoring/clusters/{cluster_id}/nodes:
    get:
      parameters:
      - description: 集群 ID
        in: path
        name: cluster_id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.NodeMetricsResponse'
            type: array
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 获取节点指标
      tags:
      - Monitoring
  /monitoring/summary:
    get:
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.MonitoringSummaryResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 获取监控汇总
      tags:
      - Monitoring
  /registries:
    get:
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.RegistryResponse'
            type: array
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 列出所有 Registries
      tags:
      - Registries
    post:
      consumes:
      - application/json
      description: 新增 OCI Registry 配置
      parameters:
      - description: Registry 信息
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.CreateRegistryRequest'
      produces:
      - application/json
      responses:
        "201":
          description: Created
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.RegistryResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 创建 Registry
      tags:
      - Registries
  /registries/{registry_id}:
    delete:
      parameters:
      - description: Registry ID
        in: path
        name: registry_id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "204":
          description: No Content
          schema:
            type: string
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 删除 Registry
      tags:
      - Registries
    get:
      parameters:
      - description: Registry ID
        in: path
        name: registry_id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.RegistryResponse'
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 获取 Registry
      tags:
      - Registries
    put:
      consumes:
      - application/json
      parameters:
      - description: Registry ID
        in: path
        name: registry_id
        required: true
        type: string
      - description: 更新内容
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.UpdateRegistryRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.RegistryResponse'
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      security:
      - BearerAuth: []
      summary: 更新 Registry
      tags:
      - Registries
  /registries/{registry_id}/health:
    get:
      parameters:
      - description: Registry ID
        in: path
        name: registry_id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.RegistryHealthResponse'
      security:
      - BearerAuth: []
      summary: 检查 Registry 健康
      tags:
      - Registries
  /registries/{registry_id}/repositories:
    get:
      consumes:
      - application/json
      description: 列出指定 Registry 中的所有 Repository
      parameters:
      - description: Registry ID
        in: path
        name: registry_id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.RepositoryListResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      summary: 列出 Registry 中的所有 Repositories
      tags:
      - Artifacts
  /registries/{registry_id}/repositories/{repository_name}/artifacts:
    get:
      consumes:
      - application/json
      description: 列出指定 Repository 中的所有 Artifact，支持按类型过滤
      parameters:
      - description: Registry ID
        in: path
        name: registry_id
        required: true
        type: string
      - description: Repository Name (URL encoded, e.g. charts%2Fnginx)
        in: path
        name: repository_name
        required: true
        type: string
      - default: all
        description: 过滤 Artifact 类型 (all, chart, image, other)
        in: query
        name: media_type
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.TagResponse'
            type: array
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      summary: 列出 Repository 中的所有 Artifacts
      tags:
      - Artifacts
  /registries/{registry_id}/repositories/{repository_name}/artifacts/{reference}:
    get:
      consumes:
      - application/json
      description: 获取指定 Artifact 的详细信息
      parameters:
      - description: Registry ID
        in: path
        name: registry_id
        required: true
        type: string
      - description: Repository Name (URL encoded)
        in: path
        name: repository_name
        required: true
        type: string
      - description: Artifact Reference (tag or digest)
        in: path
        name: reference
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ArtifactResponse'
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      summary: 获取 Artifact 详情
      tags:
      - Artifacts
  /registries/{registry_id}/repositories/{repository_name}/artifacts/{reference}/values-schema:
    get:
      consumes:
      - application/json
      description: 获取 Helm Chart 的 values.schema.json (仅支持 Chart 类型)
      parameters:
      - description: Registry ID
        in: path
        name: registry_id
        required: true
        type: string
      - description: Repository Name (URL encoded)
        in: path
        name: repository_name
        required: true
        type: string
      - description: Artifact Reference (tag or digest)
        in: path
        name: reference
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ValuesSchemaResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/github_com_ocdp_cluster-service_internal_adapter_input_http_dto.ErrorResponse'
      summary: 获取 Helm Chart Values Schema
      tags:
      - Artifacts
schemes:
- http
- https
securityDefinitions:
  BearerAuth:
    description: Type "Bearer" followed by a space and JWT token.
    in: header
    name: Authorization
    type: apiKey
swagger: "2.0"
