Argo CD API

REST API for managing Argo CD GitOps applications, projects, repositories, clusters, and sync operations for Kubernetes declarative continuous delivery. Authentication uses JWT bearer tokens.

OpenAPI Specification

argo-cd-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Argo CD API
  description: >-
    The Argo CD API provides REST endpoints for managing GitOps continuous
    delivery on Kubernetes. It enables creating and managing applications,
    projects, repositories, clusters, and certificates. The API supports
    syncing application state to match the desired state declared in Git,
    querying health and sync status, managing access control, and
    configuring notifications. All operations require authentication via
    bearer token obtained from the session endpoint.
  version: 'v2.x'
  contact:
    name: Argo CD Community
    url: https://argo-cd.readthedocs.io/en/stable/
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
externalDocs:
  description: Argo CD API Documentation
  url: https://argo-cd.readthedocs.io/en/stable/developer-guide/api-docs/
servers:
- url: https://localhost/api/v1
  description: Argo CD Server (default in-cluster address)
tags:
- name: Applications
  description: >-
    Operations for creating, querying, syncing, and deleting Argo CD
    GitOps applications.
- name: Clusters
  description: >-
    Operations for registering and managing target Kubernetes clusters
    for application deployment.
- name: Projects
  description: >-
    Operations for managing Argo CD projects that provide governance
    and access control for applications.
- name: Repositories
  description: >-
    Operations for registering and managing Git and Helm chart
    repositories used as application sources.
- name: Session
  description: >-
    Authentication operations for obtaining and invalidating bearer tokens.
- name: Settings
  description: >-
    Operations for reading Argo CD server configuration and settings.
- name: Version
  description: >-
    Server version information endpoint.
security:
- bearerAuth: []
paths:
  /applications:
    get:
      operationId: listApplications
      summary: Argo CD Argo List Applications
      description: >-
        Returns a list of all Argo CD applications, optionally filtered by
        project, namespace, or name. Each application includes its current
        sync status, health status, source configuration, and destination
        cluster details.
      tags:
      - Applications
      parameters:
      - $ref: '#/components/parameters/projectParam'
      - name: name
        in: query
        description: Filter applications by name.
        schema:
          type: string
      - name: namespace
        in: query
        description: Filter applications by destination namespace.
        schema:
          type: string
      - name: appNamespace
        in: query
        description: The application namespace to filter by.
        schema:
          type: string
      responses:
        '200':
          description: List of applications.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationList'
        '401':
          description: Unauthorized. Missing or invalid authentication token.
        '403':
          description: Forbidden. Insufficient permissions.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: createApplication
      summary: Argo CD Argo Create an Application
      description: >-
        Creates a new Argo CD application from the provided Application
        manifest. The application must reference a valid project, source
        repository, and destination cluster. Optionally upsert to update
        an existing application with the same name.
      tags:
      - Applications
      parameters:
      - name: upsert
        in: query
        description: >-
          If true, perform an upsert rather than a create, updating the
          application if it already exists.
        schema:
          type: boolean
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Application'
      responses:
        '200':
          description: Application created or updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
        '400':
          description: Bad request. Invalid application specification.
        '401':
          description: Unauthorized.
        '403':
          description: Forbidden.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /applications/{name}:
    get:
      operationId: getApplication
      summary: Argo CD Argo Get an Application
      description: >-
        Returns the full specification and current status of a named Argo
        CD application, including sync status, health status, resource tree,
        and operation state.
      tags:
      - Applications
      parameters:
      - $ref: '#/components/parameters/appNameParam'
      - name: appNamespace
        in: query
        description: Application namespace.
        schema:
          type: string
      responses:
        '200':
          description: Application details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
        '401':
          description: Unauthorized.
        '404':
          description: Application not found.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    put:
      operationId: updateApplication
      summary: Argo CD Argo Update an Application
      description: >-
        Replaces the specification of an existing Argo CD application with
        the provided manifest. Used to update source, destination, sync
        policy, or other application configuration.
      tags:
      - Applications
      parameters:
      - $ref: '#/components/parameters/appNameParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Application'
      responses:
        '200':
          description: Updated application.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
        '400':
          description: Bad request.
        '401':
          description: Unauthorized.
        '404':
          description: Application not found.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      operationId: deleteApplication
      summary: Argo CD Argo Delete an Application
      description: >-
        Deletes the named Argo CD application. Optionally cascades deletion
        to all managed Kubernetes resources in the destination cluster.
      tags:
      - Applications
      parameters:
      - $ref: '#/components/parameters/appNameParam'
      - name: cascade
        in: query
        description: Cascade deletion to managed Kubernetes resources.
        schema:
          type: boolean
          default: true
      - name: propagationPolicy
        in: query
        description: >-
          Kubernetes resource deletion propagation policy
          (foreground, background, orphan).
        schema:
          type: string
          enum: [foreground, background, orphan]
      responses:
        '200':
          description: Application deleted.
        '401':
          description: Unauthorized.
        '404':
          description: Application not found.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /applications/{name}/sync:
    post:
      operationId: syncApplication
      summary: Argo CD Argo Sync an Application
      description: >-
        Triggers a synchronization of the named Argo CD application,
        reconciling the live Kubernetes state with the desired state
        from the Git source. Supports selective resource sync, dry-run
        mode, force sync, and prune of removed resources.
      tags:
      - Applications
      parameters:
      - $ref: '#/components/parameters/appNameParam'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SyncRequest'
      responses:
        '200':
          description: Sync operation initiated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
        '401':
          description: Unauthorized.
        '404':
          description: Application not found.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /applications/{name}/rollback:
    post:
      operationId: rollbackApplication
      summary: Argo CD Argo Rollback an Application
      description: >-
        Rolls back the named application to a previous deployed revision.
        Requires the ID of a history entry from the application's
        deployment history.
      tags:
      - Applications
      parameters:
      - $ref: '#/components/parameters/appNameParam'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  format: int64
                  description: History ID of the revision to roll back to.
                prune:
                  type: boolean
                  description: Whether to prune resources removed in the target revision.
                dryRun:
                  type: boolean
                  description: Preview rollback without applying changes.
      responses:
        '200':
          description: Rollback initiated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
        '401':
          description: Unauthorized.
        '404':
          description: Application not found.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /projects:
    get:
      operationId: listProjects
      summary: Argo CD Argo List Projects
      description: >-
        Returns all Argo CD projects. Projects provide logical grouping,
        access control, and policy enforcement for applications.
      tags:
      - Projects
      responses:
        '200':
          description: List of projects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectList'
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: createProject
      summary: Argo CD Argo Create a Project
      description: >-
        Creates a new Argo CD project with the specified source repositories,
        destination clusters/namespaces, and resource allow/deny policies.
      tags:
      - Projects
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppProject'
      responses:
        '200':
          description: Project created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppProject'
        '400':
          description: Bad request.
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /projects/{name}:
    get:
      operationId: getProject
      summary: Argo CD Argo Get a Project
      description: Returns the specification and detailed information for a named project.
      tags:
      - Projects
      parameters:
      - $ref: '#/components/parameters/projectNameParam'
      responses:
        '200':
          description: Project details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppProject'
        '401':
          description: Unauthorized.
        '404':
          description: Project not found.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      operationId: deleteProject
      summary: Argo CD Argo Delete a Project
      description: >-
        Deletes the named Argo CD project. The project must have no
        associated applications before it can be deleted.
      tags:
      - Projects
      parameters:
      - $ref: '#/components/parameters/projectNameParam'
      responses:
        '200':
          description: Project deleted.
        '401':
          description: Unauthorized.
        '404':
          description: Project not found.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /repositories:
    get:
      operationId: listRepositories
      summary: Argo CD Argo List Repositories
      description: >-
        Returns all registered Git and Helm chart repositories, including
        their connection status and type.
      tags:
      - Repositories
      responses:
        '200':
          description: List of repositories.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RepositoryList'
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: createRepository
      summary: Argo CD Argo Register a Repository
      description: >-
        Registers a new Git or Helm chart repository with Argo CD. Supports
        HTTPS, SSH, and GitHub App authentication methods.
      tags:
      - Repositories
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Repository'
      responses:
        '200':
          description: Repository registered.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Repository'
        '400':
          description: Bad request.
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /repositories/{repo}:
    delete:
      operationId: deleteRepository
      summary: Argo CD Argo Delete a Repository
      description: Removes the named repository registration from Argo CD.
      tags:
      - Repositories
      parameters:
      - name: repo
        in: path
        required: true
        description: Repository URL (URL-encoded).
        schema:
          type: string
      responses:
        '200':
          description: Repository deleted.
        '401':
          description: Unauthorized.
        '404':
          description: Repository not found.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /clusters:
    get:
      operationId: listClusters
      summary: Argo CD Argo List Clusters
      description: >-
        Returns all registered Kubernetes clusters available as deployment
        targets for Argo CD applications.
      tags:
      - Clusters
      responses:
        '200':
          description: List of clusters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterList'
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: createCluster
      summary: Argo CD Argo Register a Cluster
      description: >-
        Registers a new Kubernetes cluster as a deployment target. The
        cluster must be reachable from the Argo CD server and the provided
        credentials must have sufficient permissions.
      tags:
      - Clusters
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Cluster'
      responses:
        '200':
          description: Cluster registered.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cluster'
        '400':
          description: Bad request.
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /session:
    post:
      operationId: createSession
      summary: Argo CD Argo Create a Session (login)
      description: >-
        Authenticates with username and password or SSO token and returns
        a bearer token for use in subsequent API requests.
      tags:
      - Session
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [username, password]
              properties:
                username:
                  type: string
                  description: Argo CD local user username.
                password:
                  type: string
                  description: Argo CD local user password.
      responses:
        '200':
          description: Session created. Token returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  token:
                    type: string
                    description: Bearer token for subsequent API calls.
        '401':
          description: Invalid credentials.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      operationId: deleteSession
      summary: Argo CD Argo Delete a Session (logout)
      description: Invalidates the current bearer token, logging out the authenticated user.
      tags:
      - Session
      responses:
        '200':
          description: Session deleted.
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /version:
    get:
      operationId: getVersion
      summary: Argo CD Argo Get Server Version
      description: >-
        Returns the Argo CD server version, build date, Git commit SHA,
        Go version, and Kubernetes server version.
      tags:
      - Version
      security: []
      responses:
        '200':
          description: Version information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VersionMessage'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /settings:
    get:
      operationId: getSettings
      summary: Argo CD Argo Get Server Settings
      description: >-
        Returns the Argo CD server configuration including OIDC settings,
        Helm settings, resource tracking method, and UI customization.
      tags:
      - Settings
      responses:
        '200':
          description: Server settings.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Settings'
        '401':
          description: Unauthorized.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Bearer token obtained from the POST /session endpoint using
        username/password or from an external OIDC provider configured
        in Argo CD.
  parameters:
    appNameParam:
      name: name
      in: path
      required: true
      description: The name of the Argo CD application.
      schema:
        type: string
    projectParam:
      name: project
      in: query
      description: Filter by project name.
      schema:
        type: string
    projectNameParam:
      name: name
      in: path
      required: true
      description: The name of the Argo CD project.
      schema:
        type: string
  schemas:
    Application:
      type: object
      description: >-
        An Argo CD Application represents a deployed set of Kubernetes
        resources managed through GitOps.
      properties:
        apiVersion:
          type: string
          description: API version, always argoproj.io/v1alpha1.
        kind:
          type: string
          description: Resource kind, always Application.
        metadata:
          type: object
          description: Kubernetes object metadata.
          properties:
            name:
              type: string
              description: Application name.
            namespace:
              type: string
              description: Application namespace.
        spec:
          $ref: '#/components/schemas/ApplicationSpec'
        status:
          $ref: '#/components/schemas/ApplicationStatus'
    ApplicationSpec:
      type: object
      description: Desired state specification for an Argo CD application.
      required: [destination, project, source]
      properties:
        source:
          $ref: '#/components/schemas/ApplicationSource'
        destination:
          $ref: '#/components/schemas/ApplicationDestination'
        project:
          type: string
          description: Argo CD project this application belongs to.
        syncPolicy:
          $ref: '#/components/schemas/SyncPolicy'
        ignoreDifferences:
          type: array
          description: Resource fields to ignore when computing sync status.
          items:
            type: object
            properties:
              group:
                type: string
                description: Kubernetes API group.
              kind:
                type: string
                description: Kubernetes resource kind.
              jsonPointers:
                type: array
                items:
                  type: string
                description: JSON Pointer paths to ignore.
    ApplicationSource:
      type: object
      description: Git or Helm chart source for the application manifests.
      required: [repoURL]
      properties:
        repoURL:
          type: string
          description: URL of the Git repository or Helm chart repository.
          format: uri
        path:
          type: string
          description: >-
            Path within the repository where manifests are located. Used
            for Git repositories.
        targetRevision:
          type: string
          description: >-
            Git branch, tag, or commit SHA to deploy. Defaults to HEAD.
        chart:
          type: string
          description: Helm chart name. Used when repoURL points to a Helm registry.
        helm:
          type: object
          description: Helm-specific source configuration.
          properties:
            valueFiles:
              type: array
              items:
                type: string
              description: List of Helm value file paths.
            values:
              type: string
              description: Inline Helm values as a YAML string.
            releaseName:
              type: string
              description: Helm release name override.
        kustomize:
          type: object
          description: Kustomize-specific source configuration.
          properties:
            namePrefix:
              type: string
              description: Prefix to append to all resource names.
            nameSuffix:
              type: string
              description: Suffix to append to all resource names.
            images:
              type: array
              items:
                type: string
              description: List of image overrides in name=tag format.
    ApplicationDestination:
      type: object
      description: Target Kubernetes cluster and namespace for application deployment.
      properties:
        server:
          type: string
          description: >-
            Kubernetes API server URL of the target cluster. Use
            https://kubernetes.default.svc for the in-cluster target.
          format: uri
        name:
          type: string
          description: >-
            Name of the registered cluster. Mutually exclusive with server.
        namespace:
          type: string
          description: Target namespace in the destination cluster.
    SyncPolicy:
      type: object
      description: Policy controlling how and when the application is synchronized.
      properties:
        automated:
          type: object
          description: Configuration for automatic synchronization.
          properties:
            prune:
              type: boolean
              description: >-
                Automatically delete resources removed from the source.
              default: false
            selfHeal:
              type: boolean
              description: >-
                Automatically sync when live state drifts from desired state.
              default: false
            allowEmpty:
              type: boolean
              description: Allows apps to have an empty source.
              default: false
        syncOptions:
          type: array
          description: >-
            List of sync option flags (e.g., CreateNamespace=true,
            PrunePropagationPolicy=foreground).
          items:
            type: string
        retry:
          type: object
          description: Retry configuration for failed sync operations.
          properties:
            limit:
              type: integer
              format: int64
              description: Maximum number of retry attempts. -1 for unlimited.
            backoff:
              type: object
              description: Backoff strategy for retries.
              properties:
                duration:
                  type: string
                  description: Initial retry backoff duration.
                factor:
                  type: integer
                  format: int64
                  description: Multiplicative factor applied to duration on each retry.
                maxDuration:
                  type: string
                  description: Maximum duration between retries.
    ApplicationStatus:
      type: object
      description: Observed state and operational status of an Argo CD application.
      properties:
        sync:
          type: object
          description: Current sync status.
          properties:
            status:
              type: string
              description: Sync status (Synced, OutOfSync, Unknown).
              enum: [Synced, OutOfSync, Unknown]
            revision:
              type: string
              description: Deployed Git revision (commit SHA).
        health:
          type: object
          description: Current health status.
          properties:
            status:
              type: string
              description: Health status (Healthy, Progressing, Degraded, Suspended, Missing, Unknown).
              enum: [Healthy, Progressing, Degraded, Suspended, Missing, Unknown]
            message:
              type: string
              description: Human-readable health status message.
        operationState:
          type: object
          description: State of the current or most recent operation.
          properties:
            phase:
              type: string
              description: Operation phase (Running, Failed, Succeeded, Error, Terminating).
            message:
              type: string
              description: Human-readable operation status message.
            startedAt:
              type: string
              format: date-time
              description: When the operation started.
            finishedAt:
              type: string
              format: date-time
              description: When the operation finished.
    ApplicationList:
      type: object
      description: A list of Argo CD applications.
      properties:
        items:
          type: array
          description: Array of application objects.
          items:
            $ref: '#/components/schemas/Application'
    AppProject:
      type: object
      description: >-
        An Argo CD project providing logical grouping and RBAC for
        applications.
      properties:
        metadata:
          type: object
          properties:
            name:
              type: string
              description: Project name.
        spec:
          type: object
          description: Project specification.
          properties:
            description:
              type: string
              description: Human-readable project description.
            sourceRepos:
              type: array
              description: Allowed source repositories. Use '*' for any.
              items:
                type: string
            destinations:
              type: array
              description: Allowed destination clusters and namespaces.
              items:
                type: object
                properties:
                  server:
                    type: string
                    description: Cluster server URL.
                  namespace:
                    type: string
                    description: Allowed namespace pattern.
            clusterResourceWhitelist:
              type: array
              description: Allowed cluster-scoped resource types.
              items:
                type: object
                properties:
                  group:
                    type: string
                  kind:
                    type: string
    ProjectList:
      type: object
      description: A list of Argo CD projects.
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/AppProject'
    Repository:
      type: object
      description: A registered Git or Helm chart repository.
      properties:
        repo:
          type: string
          description: Repository URL.
          format: uri
        type:
          type: string
          description: Repository type.
          enum: [git, helm]
        name:
          type: string
          description: Human-readable repository name.
        connectionState:
          type: object
          description: Current connection status.
          properties:
            status:
              type: string
              description: Connection status (Successful, Failed, Unknown).
            message:
              type: string
              description: Status message.
    RepositoryList:
      type: object
      description: A list of registered repositories.
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Repository'
    Cluster:
      type: object
      description: A registered Kubernetes cluster deployment target.
      properties:
        server:
          type: string
          description: Kubernetes API server URL.
          format: uri
        name:
          type: string
          description: Cluster display name.
        config:
          type: object
          description: Cluster connection configuration.
          properties:
            bearerToken:
              type: string
              description: Service account bearer token for cluster access.
            tlsClientConfig:
              type: object
              description: TLS client configuration.
              properties:
                insecure:
                  type: boolean
                  description: Skip TLS verification.
        info:
          type: object
          description: Cluster information.
          properties:
            serverVersion:
              type: string
              description: Kubernetes server version.
            applicationsCount:
              type: integer
              description: Number of applications targeting this cluster.
    ClusterList:
      type: object
      description: A list of registered clusters.
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Cluster'
    SyncRequest:
      type: object
      description: Request body for triggering an application sync operation.
      properties:
        revision:
          type: string
          description: >-
            Specific Git revision to sync to. Defaults to the current
            target revision.
        dryRun:
          type: boolean
          description: Preview sync without applying changes.
        prune:
          type: boolean
          description: Delete resources no longer defined in the source.
        strategy:
          type: object
          description: Sync strategy configuration.
          properties:
            apply:
              type: object
              description: Use kubectl apply sync strategy.
              properties:
                force:
                  type: boolean
                  description: Force resource 

# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/argo/refs/heads/main/openapi/argo-cd-openapi.yml