Qovery ArgoCD API

The ArgoCD API from Qovery — 4 operation(s) for argocd.

OpenAPI Specification

qovery-argocd-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  version: 1.0.4
  title: Qovery Account Info ArgoCD API
  description: '- Qovery is the fastest way to deploy your full-stack apps on any Cloud provider.

    - ℹ️ The API is stable and still in development.

    '
  contact:
    name: Qovery Product Team
    url: https://www.qovery.com
    email: support+api+documentation@qovery.com
  x-logo:
    url: https://console.qovery.com/assets/logos/logo-white.svg
    altText: Qovery
servers:
- url: https://api.qovery.com
security:
- bearerAuth: []
- ApiKeyAuth: []
tags:
- name: ArgoCD
paths:
  /cluster/{clusterId}/argoCdConfig:
    post:
      summary: Save ArgoCD credentials for a cluster
      description: Save or update the ArgoCD URL and authentication token for a cluster. Requires ADMIN role.
      operationId: saveArgoCdCredentials
      parameters:
      - $ref: '#/components/parameters/clusterId'
      tags:
      - ArgoCD
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ArgoCdCredentialsRequest'
      responses:
        '200':
          description: ArgoCD credentials saved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArgoCdCredentialsResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    get:
      summary: Get ArgoCD credentials for a cluster
      description: Retrieve the stored ArgoCD configuration for a cluster. The token is always returned as REDACTED. Requires VIEWER role.
      operationId: getArgoCdCredentials
      parameters:
      - $ref: '#/components/parameters/clusterId'
      tags:
      - ArgoCD
      responses:
        '200':
          description: ArgoCD credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArgoCdCredentialsResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete ArgoCD credentials for a cluster
      description: Remove the stored ArgoCD configuration for a cluster. Requires ADMIN role.
      operationId: deleteArgoCdCredentials
      parameters:
      - $ref: '#/components/parameters/clusterId'
      tags:
      - ArgoCD
      responses:
        '204':
          description: ArgoCD credentials deleted
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /cluster/{clusterId}/argoCdConfig/check:
    post:
      summary: Check ArgoCD connection
      description: 'Test an ArgoCD URL and token before saving. The cluster agent attempts to connect to ArgoCD and returns the connection result.

        Always returns HTTP 200 — check the `status` field for the connection outcome. Requires ADMIN role.

        '
      operationId: checkArgoCdConnection
      parameters:
      - $ref: '#/components/parameters/clusterId'
      tags:
      - ArgoCD
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ArgoCdCredentialsRequest'
      responses:
        '200':
          description: Connection check result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArgoCdConnectionCheckResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /organization/{organizationId}/argoCdDestinationClusterMapping:
    post:
      summary: Save an ArgoCD destination cluster mapping
      description: 'Map an ArgoCD destination cluster URL to a Qovery cluster for a given agent cluster.

        If a mapping for the same (agentClusterId, argocdClusterUrl) already exists, it is updated.

        Requires ADMIN role on the agent cluster.

        '
      operationId: saveArgoCdDestinationClusterMapping
      parameters:
      - $ref: '#/components/parameters/organizationId'
      tags:
      - ArgoCD
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ArgoCdDestinationClusterMappingRequest'
      responses:
        '200':
          description: Mapping saved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArgoCdDestinationClusterMappingResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    get:
      summary: List ArgoCD instance mappings for an organization
      description: 'Returns one entry per ArgoCD agent cluster that has credentials configured.

        Each entry lists linked clusters and unlinked clusters. Requires VIEWER role.

        '
      operationId: listArgoCdDestinationClusterMappings
      parameters:
      - $ref: '#/components/parameters/organizationId'
      tags:
      - ArgoCD
      responses:
        '200':
          description: ArgoCD instance mapping list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArgoCdInstanceMappingResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /argocdApp/{argocdAppId}:
    get:
      summary: Get ArgoCD app by ID
      operationId: getArgoCdApp
      parameters:
      - $ref: '#/components/parameters/argocdAppId'
      tags:
      - ArgoCD
      responses:
        '200':
          description: Get ArgoCD app by ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArgocdAppResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
components:
  schemas:
    ArgoCdConnectionCheckResponse:
      type: object
      required:
      - status
      properties:
        status:
          $ref: '#/components/schemas/ArgoCdConnectionStatusEnum'
        app_count:
          type: integer
          description: Number of ArgoCD applications visible with the provided token. Present only when status is "connected".
          example: 42
        reason:
          type: string
          description: Failure reason. Present only when status is "error".
          enum:
          - authentication_failed
          - unreachable
          - insufficient_permissions
          example: authentication_failed
    CloudVendorEnum:
      type: string
      enum:
      - AWS
      - SCW
      - GCP
      - DO
      - AZURE
      - OVH
      - CIVO
      - HETZNER
      - ORACLE
      - IBM
      - ON_PREMISE
    ArgoCdCredentialsRequest:
      type: object
      required:
      - argocd_url
      - argocd_token
      properties:
        argocd_url:
          type: string
          description: The URL of the ArgoCD instance (e.g. https://argocd.example.com)
          example: https://argocd.example.com
        argocd_token:
          type: string
          description: ArgoCD API authentication token
    KubernetesEnum:
      type: string
      enum:
      - MANAGED
      - SELF_MANAGED
      - PARTIALLY_MANAGED
      default: MANAGED
    ArgocdAppResponse:
      allOf:
      - $ref: '#/components/schemas/Base'
      - type: object
        required:
        - name
        - service_type
        - namespace
        - environment_id
        - cluster_id
        properties:
          name:
            type: string
            description: name is case insensitive
          service_type:
            $ref: '#/components/schemas/ServiceTypeEnum'
          namespace:
            type: string
          environment_id:
            type: string
            format: uuid
          cluster_id:
            type: string
            format: uuid
          last_synced_at:
            type: string
            format: date-time
            nullable: true
          manifest_revision:
            type: string
            nullable: true
          source_repo_url:
            type: string
            nullable: true
          source_target_revision:
            type: string
            nullable: true
      description: An ArgoCD service
    ServiceTypeEnum:
      type: string
      x-stoplight:
        id: d66063cd29913
      description: type of the service (application, database, job, ...)
      enum:
      - APPLICATION
      - DATABASE
      - CONTAINER
      - JOB
      - HELM
      - TERRAFORM
      - ARGOCD_APP
    ArgoCdDestinationClusterMappingRequest:
      type: object
      required:
      - agent_cluster_id
      - argocd_cluster_url
      - cluster_id
      properties:
        agent_cluster_id:
          type: string
          format: uuid
          description: ID of the Qovery cluster where the ArgoCD instance is running
        argocd_cluster_url:
          type: string
          description: ArgoCD destination cluster URL as reported by ArgoCD
          example: https://kubernetes.default.svc
        cluster_id:
          type: string
          format: uuid
          description: ID of the Qovery cluster to map this ArgoCD destination to
    ArgoCdCredentialsResponse:
      type: object
      required:
      - id
      - cluster_id
      - argocd_url
      - argocd_token
      - created_at
      - updated_at
      properties:
        id:
          type: string
          format: uuid
        cluster_id:
          type: string
          format: uuid
        argocd_url:
          type: string
          example: https://argocd.example.com
        argocd_token:
          type: string
          description: Always returned as REDACTED
          example: REDACTED
        last_checked_at:
          type: string
          format: date-time
          nullable: true
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    ArgoCdLinkedClusterDetails:
      type: object
      required:
      - argocd_cluster_url
      - argocd_cluster_name
      - qovery_cluster_id
      - qovery_cluster_name
      - qovery_cluster_cloud_provider
      - qovery_cluster_type
      - applications_count
      properties:
        argocd_cluster_url:
          type: string
          description: ArgoCD destination cluster URL
          example: https://kubernetes.default.svc
        argocd_cluster_name:
          type: string
          description: ArgoCD cluster name (currently same as URL; will use ArgoCD alias in future)
          example: https://kubernetes.default.svc
        qovery_cluster_id:
          type: string
          format: uuid
          description: ID of the Qovery cluster this destination is mapped to
        qovery_cluster_name:
          type: string
          description: Display name of the mapped Qovery cluster
          example: My EKS Cluster
        qovery_cluster_cloud_provider:
          $ref: '#/components/schemas/CloudVendorEnum'
        qovery_cluster_type:
          $ref: '#/components/schemas/KubernetesEnum'
        applications_count:
          type: integer
          description: Number of ArgoCD applications targeting this destination
          example: 4
    ArgoCdDestinationClusterMappingResponse:
      type: object
      required:
      - agent_cluster_id
      - argocd_cluster_url
      - cluster_id
      properties:
        agent_cluster_id:
          type: string
          format: uuid
        argocd_cluster_url:
          type: string
          example: https://kubernetes.default.svc
        cluster_id:
          type: string
          format: uuid
          nullable: true
    ArgoCdInstanceMappingResponseList:
      type: object
      required:
      - results
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ArgoCdInstanceMappingResponse'
    ArgoCdInstanceMappingResponse:
      type: object
      required:
      - agent_cluster_id
      - agent_cluster_name
      - agent_cluster_cloud_provider
      - credentials_id
      - argocd_url
      - status
      - last_checked_at
      - linked_clusters
      - unlinked_clusters
      properties:
        agent_cluster_id:
          type: string
          format: uuid
          description: ID of the Qovery cluster where the ArgoCD instance is running
        agent_cluster_name:
          type: string
          description: Display name of the Qovery cluster where the ArgoCD instance is running
          example: My Agent Cluster
        agent_cluster_cloud_provider:
          $ref: '#/components/schemas/CloudVendorEnum'
        credentials_id:
          type: string
          format: uuid
          description: ID of the stored ArgoCD credentials for this instance
        argocd_url:
          type: string
          description: URL of the ArgoCD instance
          example: https://argocd.example.com
        status:
          $ref: '#/components/schemas/ArgoCdConnectionStatusEnum'
        last_checked_at:
          type: string
          format: date-time
          description: Timestamp of the last configuration update (will use last connectivity check in future)
        linked_clusters:
          type: array
          description: ArgoCD clusters detected and mapped to a Qovery cluster
          items:
            $ref: '#/components/schemas/ArgoCdLinkedClusterDetails'
        unlinked_clusters:
          type: array
          description: ArgoCD clusters detected but mapping is missing
          items:
            $ref: '#/components/schemas/ArgoCdUnlinkedClusterDetails'
    ArgoCdUnlinkedClusterDetails:
      type: object
      required:
      - argocd_cluster_url
      - argocd_cluster_name
      - applications_count
      properties:
        argocd_cluster_url:
          type: string
          description: ArgoCD destination cluster URL for this stale mapping
          example: https://old-cluster.example.com
        argocd_cluster_name:
          type: string
          description: ArgoCD cluster name (currently same as URL; will use ArgoCD alias in future)
          example: https://old-cluster.example.com
        applications_count:
          type: integer
          description: Number of ArgoCD applications targeting this destination
          example: 0
    ArgoCdConnectionStatusEnum:
      type: string
      description: Connection status of an ArgoCD instance
      enum:
      - connected
      - error
      example: connected
    Base:
      type: object
      required:
      - id
      - created_at
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        created_at:
          type: string
          readOnly: true
          format: date-time
        updated_at:
          type: string
          readOnly: true
          format: date-time
  responses:
    '400':
      description: Bad request
    '401':
      description: Access token is missing or invalid
    '403':
      description: Access forbidden
    '404':
      description: Resource not found
  parameters:
    clusterId:
      name: clusterId
      in: path
      description: Cluster ID
      required: true
      schema:
        type: string
        format: uuid
    organizationId:
      name: organizationId
      in: path
      description: Organization ID
      required: true
      schema:
        type: string
        format: uuid
    argocdAppId:
      name: argocdAppId
      in: path
      description: ArgoCD App ID
      required: true
      schema:
        type: string
        format: uuid
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'JWT tokens should be used with OIDC account (human to machine). JWT tokens used by the Qovery console to communicate with the API have a TTL. Curl Example '' curl https://console.qovery.com/organization -H "Authorization: Bearer $qovery_token" '''
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'Token API are generated by Qovery to manage machine to machine interaction and do not have a TTL. Curl Example '' curl https://console.qovery.com/organization -H "Authorization: Token $qovery_token" '''
x-tagGroups:
- name: Organization
  tags:
  - Organization Main Calls
  - Organization Api Token
  - Organization Account Git Repositories
  - Organization Cluster Lock
  - Organization Webhook
  - Organization Custom Role
  - Organization Event
  - Organization Annotations Group
  - Organization Labels Group
  - Organization Enterprise Connection
  - Projects
  - Members
  - Billing
  - Clusters
  - Cloud Provider
  - Cloud Provider Credentials
  - Github App
  - Container Registries
  - Helm Repositories
- name: Project
  tags:
  - Project Main Calls
  - Environments
  - Project Deployment Rule
  - Project Environment Variable
  - Project Secret
- name: Environment
  tags:
  - Environment Main Calls
  - Applications
  - Containers
  - Databases
  - Jobs
  - Helms
  - Terraforms
  - Environment Actions
  - Environment Logs
  - Environment Deployment History
  - Environment Deployment Rule
  - Environment Variable
  - Environment Secret
  - Environment Export
- name: Deployment Stage
  tags:
  - Deployment Stage Main Calls
- name: Application
  tags:
  - Application Main Calls
  - Application Actions
  - Application Configuration
  - Application Custom Domain
  - Application Database
  - Application Logs
  - Application Deployment Restriction
  - Application Deployment History
  - Application Environment Variable
  - Application Secret
  - Application Annotations Group
- name: Container
  tags:
  - Container Main Calls
  - Container Actions
  - Container Configuration
  - Container Custom Domain
  - Container Database
  - Container Logs
  - Container Deployment History
  - Container Environment Variable
  - Container Secret
  - Container Annotations Group
- name: Database
  tags:
  - Database Main Calls
  - Database Actions
  - Database Applications
  - Database Deployment History
  - Database Containers
  - Database Application
  - Database Container
  - Backups
  - Database Annotations Group
- name: Job
  tags:
  - Job Main Calls
  - Job Actions
  - Job Configuration
  - Job Custom Domain
  - Job Deployment Restriction
  - Job Deployment History
  - Job Environment Variable
  - Job Secret
  - Job Annotations Group
- name: Helm
  tags:
  - Helm Main Calls
  - Helm Actions
  - Helm Configuration
  - Helm Custom Domain
  - Helm Deployment Restriction
  - Helm Deployment History
- name: Terraform
  tags:
  - Terraform Main Calls
  - Terraform Actions
  - Terraform Configuration
  - Terraform Deployment Restriction
  - Terraform Deployment History
- name: Account
  tags:
  - Account Info
  - Git repositories
  - Referral & Rewards
- name: Git
  tags:
  - Git repositories
- name: Variable
  tags:
  - Variable Main Calls
- name: Lifecycle Template
  tags:
  - Lifecycle Template Main Calls
- name: Admin
  tags:
  - User Sign Up
- name: Alerting
  tags:
  - Alert Receivers
  - Alert Rules