openapi: 3.0.0
info:
  version: 1.0.4
  title: Qovery 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
tags:
  - name: Account
  - name: Account Info
  - name: IPs
  - name: Alert Receivers
  - name: Alert Rules
  - name: Admin
  - name: ArgoCD
  - name: Application
  - name: Application Actions
  - name: Application Configuration
  - name: Application Database
  - name: Application Deployment Restriction
  - name: Application Deployment History
  - name: Application Environment Variable
  - name: Application Logs
  - name: Application Main Calls
  - name: Application Secret
  - name: Application Annotations Group
  - name: Applications
  - name: AutoscalingPolicy
  - name: Container
  - name: Container Actions
  - name: Container Configuration
  - name: Container Database
  - name: Container Deployment History
  - name: Container Environment Variable
  - name: Container Logs
  - name: Container Main Calls
  - name: Container Registry
  - name: Container Secret
  - name: Container Annotations Group
  - name: Containers
  - name: Deployment Stage Main Calls
  - name: Job
  - name: Job Actions
  - name: Job Configuration
  - name: Job Database
  - name: Job Deployment Restriction
  - name: Job Deployment History
  - name: Job Environment Variable
  - name: Job Logs
  - name: Job Main Calls
  - name: Job Registry
  - name: Job Secret
  - name: Job Annotations Group
  - name: Jobs
  - name: KedaTriggerAuthentication
  - name: Helm
  - name: Helm Actions
  - name: Helm Configuration
  - name: Helm Database
  - name: Helm Deployment Restriction
  - name: Helm Deployment History
  - name: Helm Logs
  - name: Helm Main Calls
  - name: Helm Repository
  - name: Helms
  - name: Backups
  - name: Billing
  - name: Blueprint Catalog
  - name: Cloud Provider
  - name: Cloud Provider Credentials
  - name: Clusters
  - name: Platform Configuration
  - name: Custom Domain
  - name: Container Custom Domain
  - name: Database
  - name: Database Actions
  - name: Database Application
  - name: Database Container
  - name: Database Deployment History
  - name: Database Main Calls
  - name: Database Annotations Group
  - name: Databases
  - name: Environment
  - name: Environment Actions
  - name: Environment Deployment History
  - name: Environment Deployment Rule
  - name: Environment Logs
  - name: Environment Main Calls
  - name: Environment Secret
  - name: Environment Variable
  - name: Environments
  - name: Git
  - name: Github App
  - name: Git repositories
  - name: Members
  - name: Organization
  - name: Organization Account Git Repositories
  - name: Organization Cluster Lock
  - name: Organization Main Calls
  - name: Organization Custom Role
  - name: Organization Event
  - name: Organization Api Token
  - name: Organization Agent Api Token
  - name: Organization Webhook
  - name: Organization Annotations Group
  - name: Organization Labels Group
  - name: Organization Enterprise Connection
  - name: Project
  - name: Project Deployment Rule
  - name: Project Environment Variable
  - name: Project Main Calls
  - name: Project Secret
  - name: Projects
  - name: Referral & Rewards
  - name: Secret Manager Access
  - name: Terraforms
  - name: Terraform Main Calls
  - name: Terraform Resources
  - name: Terraform Deployment History
  - name: Terraform Deployment Restriction
  - name: Container Registries
  - name: Helm Repositories
  - name: User Sign Up
  - name: Variable Main Calls
  - name: Helm Custom Domain
  - name: Lifecycle Template Main Calls
  - name: Blueprint Main Calls
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
      - IPs
  - 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
  - name: Blueprint
    tags:
      - Blueprint Main Calls
servers:
  - url: 'https://api.qovery.com'
paths:
  /ips:
    get:
      summary: List Qovery NAT gateway IP addresses
      description: >-
        Returns the list of static IP addresses used by Qovery's NAT gateways for outbound traffic.
        Customers can allow-list these IPs on their side. This endpoint is public and does not
        require authentication.
      operationId: listQoveryIps
      security: []
      tags:
        - IPs
      responses:
        '200':
          description: List of Qovery NAT gateway IP addresses
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QoveryIpsResponse'
            text/plain:
              schema:
                type: string
                description: The IP addresses, one per line.
                example: |-
                  13.59.73.12
                  18.224.119.19
                  3.143.66.53
  /organization:
    get:
      summary: List user organizations
      operationId: listOrganization
      tags:
        - Organization Main Calls
      responses:
        '200':
          description: List organizations
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create an organization
      operationId: createOrganization
      tags:
        - Organization Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationRequest'
      responses:
        '201':
          description: Create organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Organization name is already taken
  '/organization/{organizationId}':
    get:
      summary: Get organization by ID
      operationId: getOrganization
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Main Calls
      responses:
        '200':
          description: Get organization by ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit an organization
      description: To edit an organization you must have the admin permission.
      operationId: editOrganization
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationEditRequest'
      responses:
        '200':
          description: Edit an organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Organization name is already taken
    delete:
      summary: Delete an organization
      description: To delete an organization you must have the admin permission
      operationId: deleteOrganization
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Main Calls
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/agentApiToken':
    get:
      summary: List organization agent api tokens
      description: List the agent api tokens of the organization, each with the Open Policy Agent (rego) policy it carries. The token value itself is never returned here, it is only shown once at creation.
      operationId: listOrganizationAgentApiTokens
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Agent Api Token
      responses:
        '200':
          description: List organization agent api tokens
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationAgentApiTokenResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create an organization agent api token
      description: >-
        Create an agent api token, intended for autonomous agents calling the Qovery API.


        Unlike a regular api token, an agent api token carries **no organization role**. The Open
        Policy Agent (rego) policy attached to it is evaluated on every request and is the only
        thing constraining what the token can do: a policy that allows everything grants full
        organization admin access. For that reason only an organization owner or admin can create
        one.


        The generated token value is returned only in this response and cannot be retrieved
        afterwards.
      operationId: createOrganizationAgentApiToken
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Agent Api Token
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationAgentApiTokenCreateRequest'
      responses:
        '201':
          description: Organization agent api token created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationAgentApiTokenCreate'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Organization Agent Api Token name is already taken
  '/organization/{organizationId}/agentApiToken/{agentApiTokenId}':
    delete:
      summary: Delete organization agent api token
      description: Delete organization agent api token
      operationId: deleteOrganizationAgentApiToken
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - name: agentApiTokenId
          in: path
          description: Organization Agent Api Token ID
          required: true
          schema:
            type: string
            format: uuid
      tags:
        - Organization Agent Api Token
      responses:
        '204':
          $ref: '#/components/responses/204'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/apiToken':
    get:
      summary: List organization api tokens
      description: List organization api tokens
      operationId: listOrganizationApiTokens
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - in: query
          name: name
          schema:
            type: string
          required: false
          description: Name of the token to filter results by.
        - in: query
          name: creatorName
          schema:
            type: string
          required: false
          description: Name of the token creator to filter results by.
      tags:
        - Organization Api Token
      responses:
        '200':
          description: List organization api tokens
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationApiTokenResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create an organization api token
      description: Create an organization api token. You can use the generated token to interact in a programmatic way with our API.
      operationId: createOrganizationApiToken
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Api Token
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationApiTokenCreateRequest'
      responses:
        '201':
          description: Organization api token created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationApiTokenCreate'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Organization Api Token name is already taken
  '/organization/{organizationId}/apiToken/{apiTokenId}':
    delete:
      summary: Delete organization api token
      description: Delete organization api token
      operationId: deleteOrganizationApiToken
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - name: apiTokenId
          in: path
          description: Organization Api Token ID
          required: true
          schema:
            type: string
            format: uuid
      tags:
        - Organization Api Token
      responses:
        '204':
          $ref: '#/components/responses/204'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/availableRole':
    get:
      summary: List organization available roles
      description: List organization available roles
      operationId: listOrganizationAvailableRoles
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Main Calls
      responses:
        '200':
          description: List organization available roles
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationAvailableRoleList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/gitToken':
    get:
      summary: List organization git tokens
      description: List organization git tokens
      operationId: listOrganizationGitTokens
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Main Calls
      responses:
        '200':
          description: List organization git tokens
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitTokenResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create a git token
      description: Create a new git token to be used as a git provider by a service
      operationId: createGitToken
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GitTokenRequest'
      responses:
        '201':
          description: Git token created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitTokenResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/gitToken/{gitTokenId}':
    get:
      summary: Get organization git token
      description: Get organization git token
      operationId: getOrganizationGitToken
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/gitTokenId'
      tags:
        - Organization Main Calls
      responses:
        '200':
          description: Get organization git token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitTokenResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit a git token
      operationId: editGitToken
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/gitTokenId'
      tags:
        - Organization Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GitTokenRequest'
      responses:
        '200':
          description: Git token edited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitTokenResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete a git token
      operationId: deleteGitToken
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/gitTokenId'
      tags:
        - Organization Main Calls
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/gitToken/{gitTokenId}/associatedServices':
    get:
      summary: Get organization git token associated services
      description: Get organization git tokens associated services
      operationId: getGitTokenAssociatedServices
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/gitTokenId'
      tags:
        - Organization Main Calls
      responses:
        '200':
          description: Get organization git token associated services
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitTokenAssociatedServicesResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/listDirectoriesFromGitRepository':
    post:
      summary: List directories from a git repository
      description: |
        List immediate subdirectories at a specified path in a git repository.
        This endpoint is used when creating Terraform services to help users browse
        and select the appropriate root path.
      operationId: listDirectoriesFromGitRepository
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Git repositories
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationGitRepositoryRequest'
      responses:
        '200':
          description: List of directories at the specified path
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      type: string
                    example:
                      - infra
                      - terraform
                      - .github
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/member':
    get:
      summary: Get organization members
      operationId: getOrganizationMembers
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Members
      responses:
        '200':
          description: Get members
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemberResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit an organization member role
      description: Edit an organization member role
      operationId: editOrganizationMemberRole
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Members
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MemberRoleUpdateRequest'
      responses:
        '200':
          description: Edit an organization member role
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Remove a member
      operationId: deleteMember
      parameters:
        - $ref: '#/components/parameters/organizationId'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - user_id
              properties:
                user_id:
                  type: string
                  format: uuid
      tags:
        - Members
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/inviteMember':
    get:
      summary: Get invited members
      operationId: getOrganizationInvitedMembers
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Members
      responses:
        '200':
          description: Get invited members
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InviteMemberResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Invite someone in the organization
      operationId: postInviteMember
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Members
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InviteMemberRequest'
      responses:
        '201':
          description: User invited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InviteMember'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: User already invited
  '/organization/{organizationId}/inviteMember/{inviteId}':
    get:
      summary: Get member invitation
      operationId: getMemberInvitation
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/inviteId'
      tags:
        - Members
      responses:
        '200':
          description: Get member invitation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InviteMember'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Accept Invite in the organization
      operationId: postAcceptInviteMember
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/inviteId'
      tags:
        - Members
      responses:
        '201':
          description: User invited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InviteMember'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: User already invited
    delete:
      summary: Remove an invited member
      operationId: deleteInviteMember
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/inviteId'
      tags:
        - Members
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/transferOwnership':
    post:
      summary: Transfer organization ownership to another user
      operationId: postOrganizationTransferOwnership
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Members
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferOwnershipRequest'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/currentCost':
    get:
      summary: Get organization current cost
      operationId: getOrganizationCurrentCost
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Billing
      responses:
        '200':
          description: Get Cost
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationCurrentCost'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/creditCode':
    post:
      summary: Add credit code
      operationId: addCreditCode
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Billing
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationCreditCodeRequest'
      responses:
        '200':
          description: add credit code
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/changePlan':
    post:
      summary: Change organization plan
      operationId: changePlan
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Billing
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationChangePlanRequest'
      responses:
        '200':
          description: plan has been successfully changed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/cluster/{clusterId}/currentCost':
    get:
      summary: Get cluster current cost
      operationId: getClusterCurrentCost
      description: |
        Get your cluster cost range. We are unable to give a precise cost of your infrastructure at the moment.
        But Qovery guarantees that the cost of your cluster will not exceed the max range.
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Billing
      responses:
        '200':
          description: Get cluster cost
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CostRange'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/billingInfo':
    get:
      summary: Get organization billing info
      operationId: getOrganizationBillingInfo
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Billing
      responses:
        '200':
          description: Get Billing Info
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingInfo'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit Organization Billing Info
      operationId: editOrganizationBillingInfo
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Billing
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillingInfoRequest'
      responses:
        '200':
          description: Edit billing info
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingInfo'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/billingStatus':
    get:
      summary: Get organization billing status
      description: |
        This endpoint returns a "is_valid" boolean field reflecting the billing status of the organization:
        - If true, the organization billing is valid
        - For Startup organization, it returns false if there is at least 1 invoice unpaid since 1 week
        - For Community organization, it returns false if there is no credit left
      operationId: getOrganizationBillingStatus
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Billing
      responses:
        '200':
          description: Get Billing Status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingStatus'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/billingUsageReport':
    post:
      summary: Generate organization billing usage report
      operationId: generateBillingUsageReport
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Billing
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationBillingUsageReportRequest'
      responses:
        '200':
          description: billing usage report has been successfully generated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationBillingUsageReportResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/billingExternalId':
    get:
      summary: Get organization billing external ID
      description: |
        This endpoint returns the external ID of the organization's billing account
      operationId: getOrganizationBillingExternalId
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Billing
      responses:
        '200':
          description: Get Billing External ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingExternalId'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/invoice':
    get:
      summary: List organization invoices
      operationId: listOrganizationInvoice
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Billing
      responses:
        '200':
          description: List Invoices
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/invoice/{invoiceId}':
    get:
      summary: Get organization invoice
      operationId: getOrganizationInvoice
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/invoiceId'
      tags:
        - Billing
      responses:
        '200':
          description: Get Invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invoice'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/invoice/{invoiceId}/download':
    get:
      summary: Get invoice link
      description: This will return URL of the invoice PDF
      operationId: getOrganizationInvoicePDF
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/invoiceId'
      tags:
        - Billing
      responses:
        '200':
          description: Get invoice PDF
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/downloadInvoices':
    post:
      summary: Download all invoices
      operationId: organizationDownloadAllInvoices
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Billing
      responses:
        '202':
          description: You will receive an email containing your invoices
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/creditCard':
    get:
      summary: List organization credit cards
      operationId: listOrganizationCreditCards
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Billing
      responses:
        '200':
          description: List cfredit cards
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreditCardResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Add credit card
      operationId: addCreditCard
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Billing
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreditCardRequest'
      responses:
        '201':
          description: Add credit card
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreditCard'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/creditCard/{creditCardId}':
    delete:
      summary: Delete credit card
      operationId: deleteCreditCard
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/creditCardId'
      tags:
        - Billing
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/project':
    get:
      summary: List projects
      operationId: listProject
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Projects
      responses:
        '200':
          description: List projects
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create a project
      operationId: createProject
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Projects
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectRequest'
      responses:
        '200':
          description: Create project
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Project name within the organization is already taken
  '/organization/{organizationId}/project/stats':
    get:
      summary: List total number of services and environments for each project of the organization
      description: 'Returns a list of project ids, and for each its total numberof services and environments'
      operationId: getOrganizationProjectStats
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Projects
      responses:
        '200':
          description: Get number of services
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectStatsResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/onboarding':
    get:
      summary: Get the onboarding status of an organization
      description: Returns the onboarding status for the given organization and the use cases selected by the owner at sign-up.
      operationId: getOrganizationOnboarding
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Main Calls
      responses:
        '200':
          description: Onboarding status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationOnboardingResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Update the onboarding status of an organization
      description: Updates the onboarding status for the calling user's organization. Only the authenticated user's own sign-up record is updated.
      operationId: updateOrganizationOnboarding
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Main Calls
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationOnboardingPatchRequest'
      responses:
        '200':
          description: Updated onboarding status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationOnboardingResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/platformTemplate':
    get:
      summary: List platform templates
      description: >-
        Returns the published platform templates available to the organization. Each template
        contains its layers, components, and the configuration fields that the Console can render.
        When clusterMode and cloudProvider are supplied together, component field constraints are
        narrowed to the effective choices for that cluster context.
      operationId: listPlatformTemplates
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - name: clusterMode
          in: query
          required: false
          description: Cluster management mode. Must be supplied together with cloudProvider.
          schema:
            $ref: '#/components/schemas/PlatformClusterMode'
        - name: cloudProvider
          in: query
          required: false
          description: Cluster cloud provider. Must be supplied together with clusterMode.
          schema:
            $ref: '#/components/schemas/PlatformCloudVendor'
      tags:
        - Platform Configuration
      responses:
        '200':
          description: Published platform template catalog
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformTemplateCatalogResponse'
        '400':
          description: clusterMode and cloudProvider must be supplied together
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          description: The platform template catalog could not be loaded
        '503':
          description: A component configuration model is temporarily unavailable
  '/organization/{organizationId}/platformTemplate/{templateKey}/{templateVersion}/component/{componentKey}/resolve':
    post:
      summary: Resolve a platform component configuration before cluster creation
      description: >-
        Resolves the fields and runtime requirements to display for a component using an explicit
        cluster context and the values currently entered in the Console. This operation is read-only
        and does not require an existing cluster or platform binding.
      operationId: resolvePlatformTemplateComponentConfiguration
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - name: templateKey
          in: path
          description: Platform template key
          required: true
          schema:
            type: string
        - name: templateVersion
          in: path
          description: Platform template version
          required: true
          schema:
            type: string
        - name: componentKey
          in: path
          description: Platform component key
          required: true
          schema:
            type: string
        - name: clusterMode
          in: query
          description: Cluster management mode used to resolve component applicability
          required: true
          schema:
            $ref: '#/components/schemas/PlatformClusterMode'
        - name: cloudProvider
          in: query
          description: Cluster cloud provider used to resolve component applicability
          required: true
          schema:
            $ref: '#/components/schemas/PlatformCloudVendor'
      tags:
        - Platform Configuration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlatformComponentConfigurationPreviewRequest'
      responses:
        '200':
          description: Resolved component configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformComponentConfigurationResolutionResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '503':
          description: The platform template catalog is temporarily unavailable
  '/organization/{organizationId}/cluster':
    get:
      summary: List organization clusters
      operationId: listOrganizationCluster
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Clusters
      responses:
        '200':
          description: List clusters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create a cluster
      operationId: createCluster
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Clusters
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterRequest'
      responses:
        '201':
          description: Create cluster
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cluster'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/cluster/status':
    get:
      summary: List all clusters statuses
      description: Returns a list of clusters with only their id and status.
      operationId: getOrganizationClusterStatus
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Clusters
      responses:
        '200':
          description: Get statuses
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterStatusResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/cluster/{clusterId}':
    delete:
      summary: Delete a cluster
      operationId: deleteCluster
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
        - in: query
          name: deleteMode
          schema:
            $ref: '#/components/schemas/ClusterDeleteMode'
        - in: query
          name: skipReconcile
          required: false
          schema:
            type: boolean
            default: false
          description: 'When true, skip the pre-destroy Terraform/Helm apply and tear down best-effort, tolerating already-absent resources. Not allowed with deleteMode=DELETE_QOVERY_CONFIG.'
      tags:
        - Clusters
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit a cluster
      operationId: editCluster
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterRequest'
      responses:
        '200':
          description: Edited the cluster
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cluster'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/cluster/{clusterId}/platformBinding':
    get:
      summary: Get the cluster platform binding
      description: >-
        Returns the platform template selected for the cluster, its layer resolution, and the
        currently stored component configuration.
      operationId: getClusterPlatformBinding
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Platform Configuration
      responses:
        '200':
          description: Cluster platform binding
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterPlatformBindingResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          description: The selected platform template could not be resolved
        '503':
          description: The platform template catalog is temporarily unavailable
    put:
      summary: Update the cluster platform binding
      description: >-
        Selects a platform template and stores layer selections, component profile values, and
        customer-provided runtime inputs for the cluster.
      operationId: updateClusterPlatformBinding
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Platform Configuration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterPlatformBindingRequest'
      responses:
        '200':
          description: Updated cluster platform binding
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterPlatformBindingResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          description: The selected platform template could not be resolved
        '503':
          description: The platform template catalog is temporarily unavailable
  '/organization/{organizationId}/cluster/{clusterId}/platformBinding/component/{componentKey}/resolve':
    post:
      summary: Resolve a platform component configuration
      description: >-
        Resolves the fields and runtime requirements to display for a component using the cluster
        context and the values currently entered in the Console. This operation is read-only.
      operationId: resolvePlatformComponentConfiguration
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
        - name: componentKey
          in: path
          description: Platform component key
          required: true
          schema:
            type: string
      tags:
        - Platform Configuration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlatformComponentConfigurationPreviewRequest'
      responses:
        '200':
          description: Resolved component configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformComponentConfigurationPreviewResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '503':
          description: The platform template catalog is temporarily unavailable
  '/organization/{organizationId}/cluster/{clusterId}/status':
    get:
      summary: Get cluster status
      operationId: getClusterStatus
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      responses:
        '200':
          description: Get status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterStatus'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/cluster/{clusterId}/installationHelmValues':
    get:
      summary: Get cluster helm values for self managed installation
      operationId: getInstallationHelmValues
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      responses:
        '200':
          description: Helm values
          content:
            application/x-yaml:
              schema:
                type: string
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/cluster/{clusterId}/kubeconfig':
    get:
      summary: Get cluster kubeconfig
      operationId: getClusterKubeconfig
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
        - schema:
            type: boolean
          in: query
          name: with_token_from_cli
          description: 'If true, the user auth part will have an exec command with qovery cli'
        - schema:
            type: boolean
          in: query
          name: read_only
          description: 'If true, the kubeconfig exec plugin will request a read-only token backed by a Kubernetes ServiceAccount with the view ClusterRole'
      tags:
        - Clusters
      responses:
        '200':
          description: Get kubeconfig of the cluster
          content:
            application/x-yaml:
              schema:
                type: string
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit cluster kubeconfig
      operationId: editClusterKubeconfig
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      requestBody:
        content:
          application/x-yaml:
            schema:
              type: string
      responses:
        '204':
          description: edit kubeconfig of the cluster
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/cluster/{clusterId}/advancedSettings':
    get:
      summary: Get advanced settings
      description: |
        Get the list and values of the advanced settings of the cluster.
        Default values for each setting are available in [our documentation](https://hub.qovery.com/docs/using-qovery/configuration/cluster-advanced-settings/)
      operationId: getClusterAdvancedSettings
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      responses:
        '200':
          description: Advanced settings list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterAdvancedSettings'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit advanced settings
      description: Edit advanced settings by returning table of advanced settings.
      operationId: editClusterAdvancedSettings
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterAdvancedSettings'
      responses:
        '201':
          description: Updated advanced settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterAdvancedSettings'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/cluster/{clusterId}/routingTable':
    get:
      summary: Get routing table
      description: Retrieve network routing table where each line corresponds to a route between a destination and a target.
      operationId: getRoutingTable
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      responses:
        '200':
          description: Routing table
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterRoutingTable'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit routing table
      description: Edit routing table by returning updated table.
      operationId: editRoutingTable
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterRoutingTableRequest'
      responses:
        '201':
          description: Updated routing table
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterRoutingTable'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/cluster/{clusterId}/logs':
    get:
      summary: List Cluster Logs
      description: List Cluster Logs
      operationId: listClusterLogs
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      responses:
        '200':
          description: list cluster logs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterLogsResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/clusters/{clusterId}/analysis':
    post:
      summary: Start cluster analysis
      description: Starts a read-only analysis for the cluster. The result and logs can be retrieved later from the cluster analysis endpoints.
      operationId: startClusterAnalysis
      parameters:
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterAnalysisRequest'
      responses:
        '202':
          description: Cluster analysis started
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterAnalysisResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: A cluster analysis is already in progress for this cluster
    get:
      summary: List cluster analyses
      description: Lists previous analysis executions for the cluster.
      operationId: listClusterAnalyses
      parameters:
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      responses:
        '200':
          description: List cluster analyses
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterAnalysisResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/clusters/{clusterId}/analysis/{analysisId}':
    get:
      summary: Get cluster analysis
      description: Returns metadata and status for one cluster analysis execution.
      operationId: getClusterAnalysis
      parameters:
        - $ref: '#/components/parameters/clusterId'
        - $ref: '#/components/parameters/analysisId'
      tags:
        - Clusters
      responses:
        '200':
          description: Cluster analysis
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterAnalysisResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/clusters/{clusterId}/analysis/{analysisId}/logs':
    get:
      summary: List cluster analysis logs
      description: Returns the persisted cluster analysis report/log lines in order.
      operationId: listClusterAnalysisLogs
      parameters:
        - $ref: '#/components/parameters/clusterId'
        - $ref: '#/components/parameters/analysisId'
      tags:
        - Clusters
      responses:
        '200':
          description: List cluster analysis logs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterAnalysisLogResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/secretManagerAccess/{secretManagerAccessId}/secrets':
    get:
      summary: List upstream secrets from secret provider
      description: List upstream secrets from secret provider
      operationId: listUpstreamSecretsFromSecretProvider
      parameters:
        - $ref: '#/components/parameters/secretManagerAccessId'
        - name: namePrefix
          in: query
          required: false
          schema:
            type: string
      tags:
        - Secret Manager Access
      responses:
        '200':
          description: List upstream secrets from secret provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderSecrets'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/secretManagerAccess/{secretManagerAccessId}/associatedServices':
    get:
      summary: List external secrets used by a secret manager access
      description: List external secrets used by a secret manager access
      operationId: listSecretManagerAccessExternalSecrets
      parameters:
        - $ref: '#/components/parameters/secretManagerAccessId'
      tags:
        - Secret Manager Access
      responses:
        '200':
          description: List external secrets used by a secret manager access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalSecretAssociatedServiceResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/aws/credentials':
    get:
      summary: List AWS credentials
      operationId: listAWSCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Cloud Provider Credentials
      responses:
        '200':
          description: list credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentialsResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create AWS credentials set
      operationId: createAWSCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Cloud Provider Credentials
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AwsCredentialsRequest'
      responses:
        '201':
          description: Credentials created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentials'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/aws/credentials/{credentialsId}':
    get:
      summary: Get a set of AWS credentials
      operationId: getAWSCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/credentialsId'
      tags:
        - Cloud Provider Credentials
      responses:
        '200':
          description: Get a set of AWS credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentials'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit a set of AWS credentials
      operationId: editAWSCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/credentialsId'
      tags:
        - Cloud Provider Credentials
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AwsCredentialsRequest'
      responses:
        '200':
          description: Edit a set of AWS credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentials'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete a set of AWS credentials
      operationId: deleteAWSCredentials
      parameters:
        - $ref: '#/components/parameters/credentialsId'
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Cloud Provider Credentials
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/onPremise/credentials':
    get:
      summary: List OnPremise credentials
      operationId: listOnPremiseCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Cloud Provider Credentials
      responses:
        '200':
          description: list credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentialsResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create OnPremise credentials set
      operationId: createOnPremiseCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Cloud Provider Credentials
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OnPremiseCredentialsRequest'
      responses:
        '201':
          description: Credentials created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentials'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/onPremise/credentials/{credentialsId}':
    get:
      summary: Get a set of OnPremise credentials
      operationId: getOnPremiseCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/credentialsId'
      tags:
        - Cloud Provider Credentials
      responses:
        '200':
          description: Get a set of OnPremise credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentials'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit a set of OnPremise credentials
      operationId: editOnPremiseCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/credentialsId'
      tags:
        - Cloud Provider Credentials
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OnPremiseCredentialsRequest'
      responses:
        '200':
          description: Edit a set of OnPremise credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentials'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete a set of OnPremise credentials
      operationId: deleteOnPremiseCredentials
      parameters:
        - $ref: '#/components/parameters/credentialsId'
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Cloud Provider Credentials
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/scaleway/credentials':
    get:
      summary: List Scaleway credentials
      operationId: listScalewayCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Cloud Provider Credentials
      responses:
        '200':
          description: list credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentialsResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create Scaleway credentials set
      operationId: createScalewayCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Cloud Provider Credentials
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScalewayCredentialsRequest'
      responses:
        '201':
          description: Credentials created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentials'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/scaleway/credentials/{credentialsId}':
    get:
      summary: Get a set of Scaleway credentials
      operationId: getScalewayCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/credentialsId'
      tags:
        - Cloud Provider Credentials
      responses:
        '200':
          description: Get a set of Scaleway credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentials'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit a set of Scaleway credentials
      operationId: editScalewayCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/credentialsId'
      tags:
        - Cloud Provider Credentials
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScalewayCredentialsRequest'
      responses:
        '200':
          description: Edit a set of Scaleway credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentials'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete a set of Scaleway credentials
      operationId: deleteScalewayCredentials
      parameters:
        - $ref: '#/components/parameters/credentialsId'
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Cloud Provider Credentials
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/gcp/credentials':
    get:
      summary: List GCP credentials
      operationId: listGcpCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Cloud Provider Credentials
      responses:
        '200':
          description: list credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentialsResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create GCP credentials set
      operationId: createGcpCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Cloud Provider Credentials
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GcpCredentialsRequest'
      responses:
        '201':
          description: Credentials created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentials'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/gcp/credentials/{credentialsId}':
    get:
      summary: Get a set of GCP credentials
      operationId: getGcpCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/credentialsId'
      tags:
        - Cloud Provider Credentials
      responses:
        '200':
          description: Get a set of GCP credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentials'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit a set of GCP credentials
      operationId: editGcpCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/credentialsId'
      tags:
        - Cloud Provider Credentials
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GcpCredentialsRequest'
      responses:
        '200':
          description: Edit a set of GCP credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentials'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete a set of GCP credentials
      operationId: deleteGcpCredentials
      parameters:
        - $ref: '#/components/parameters/credentialsId'
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Cloud Provider Credentials
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/github/connect':
    post:
      summary: Connect a github account to an organization
      operationId: organizationGithubAppConnect
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Github App
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationGithubAppConnectRequest'
      responses:
        '200':
          description: Github App connected
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/github/disconnect':
    delete:
      summary: Disconnect a github account from an organization
      operationId: organizationGithubAppDisconnect
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - in: query
          name: force
          schema:
            type: boolean
          description: Indicates if the github app should be disconnected despite github applications linked to organization
      tags:
        - Github App
      responses:
        '204':
          description: Github App disconnected
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/account/gitAuthProvider':
    get:
      summary: Get git provider accounts
      operationId: getOrganizationGitProviderAccount
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Account Git Repositories
      responses:
        '200':
          description: Get account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitAuthProviderResponseList'
        '401':
          $ref: '#/components/responses/401'
  '/organization/{organizationId}/account/github/repository':
    get:
      summary: Get github repositories of the connected user
      operationId: getOrganizationGithubRepositories
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - in: query
          name: gitTokenId
          schema:
            type: string
            format: uuid
          description: The git token id that must be used for the application
      tags:
        - Organization Account Git Repositories
      responses:
        '200':
          description: Get github repositories
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitRepositoryResponseList'
        '401':
          $ref: '#/components/responses/401'
  '/organization/{organizationId}/account/github/repository/branch':
    get:
      summary: Get github branches of the specified repository
      operationId: getOrganizationGithubRepositoryBranches
      tags:
        - Organization Account Git Repositories
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - in: query
          name: name
          schema:
            type: string
          description: The name of the repository where to retrieve the branches
        - in: query
          name: gitTokenId
          schema:
            type: string
            format: uuid
          description: The git token id that must be used for the application
      responses:
        '200':
          description: Get github repository branches
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitRepositoryBranchResponseList'
        '401':
          $ref: '#/components/responses/401'
  '/organization/{organizationId}/account/gitlab/repository':
    get:
      summary: Get gitlab repositories of the connected user
      operationId: getOrganizationGitlabRepositories
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - in: query
          name: gitTokenId
          schema:
            type: string
            format: uuid
          description: The git token id that must be used for the application
      tags:
        - Organization Account Git Repositories
      responses:
        '200':
          description: Get gitlab repositories
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitRepositoryResponseList'
        '401':
          $ref: '#/components/responses/401'
  '/organization/{organizationId}/account/gitlab/repository/branch':
    get:
      summary: Get gitlab branches of the specified repository
      operationId: getOrganizationGitlabRepositoryBranches
      tags:
        - Organization Account Git Repositories
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - in: query
          name: name
          schema:
            type: string
          description: The name of the repository to retrieve the branches
        - in: query
          name: gitTokenId
          schema:
            type: string
            format: uuid
          description: The git token id that must be used for the application
      responses:
        '200':
          description: Get gitlab repository branches
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitRepositoryBranchResponseList'
        '401':
          $ref: '#/components/responses/401'
  '/organization/{organizationId}/account/bitbucket/repository':
    get:
      summary: Get bitbucket repositories of the connected user
      operationId: getOrganizationBitbucketRepositories
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - in: query
          name: gitTokenId
          schema:
            type: string
            format: uuid
          description: The git token id that must be used for the application
      tags:
        - Organization Account Git Repositories
      responses:
        '200':
          description: Get bitbucket repositories
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitRepositoryResponseList'
        '401':
          $ref: '#/components/responses/401'
  '/organization/{organizationId}/account/bitbucket/repository/branch':
    get:
      summary: Get bitbucket branches of the specified repository
      operationId: getOrganizationBitbucketRepositoryBranches
      tags:
        - Organization Account Git Repositories
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - in: query
          name: name
          schema:
            type: string
          description: The name of the repository where to retrieve the branches
        - in: query
          name: gitTokenId
          schema:
            type: string
            format: uuid
          description: The git token id that must be used for the application
      responses:
        '200':
          description: Get bitbucket repository branches
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitRepositoryBranchResponseList'
        '401':
          $ref: '#/components/responses/401'
  '/organization/{organizationId}/webhook':
    get:
      summary: List organization webhooks
      description: List organization webhooks
      operationId: listOrganizationWebHooks
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Webhook
      responses:
        '200':
          description: List organization webhooks
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationWebhookResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create an organization webhook
      description: Create an organization webhook.
      operationId: createOrganizationWebhook
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Webhook
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationWebhookCreateRequest'
      responses:
        '201':
          description: Organization webhook created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationWebhookCreateResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
      x-stoplight:
        id: ihun7iwf9rffw
  '/organization/{organizationId}/webhook/{webhookId}/event':
    get:
      summary: List events of a webhook
      description: List events of a webhooks
      operationId: listWebhookEvent
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/webhookId'
      tags:
        - Organization Webhook
      responses:
        '200':
          description: List of event for the webhook
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookEventResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/webhook/{webhookId}':
    get:
      summary: Get an Organization webhook
      description: Get an Organization webhook
      operationId: getOrganizationWebhook
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/webhookId'
      tags:
        - Organization Webhook
      responses:
        '200':
          description: Get organization webhook
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationWebhookResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit an organization webhook
      description: Edit an organization webhook
      operationId: editOrganizationWebhook
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/webhookId'
      tags:
        - Organization Webhook
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationWebhookCreateRequest'
      responses:
        '200':
          description: Edit an organization webhook
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationWebhookCreateResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete organization webhook
      description: Delete organization webhook
      operationId: deleteOrganizationWebhook
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/webhookId'
      tags:
        - Organization Webhook
      responses:
        '204':
          $ref: '#/components/responses/204'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/blueprint/catalog/{provider}/{serviceFamily}/{serviceVersion}/readme':
    get:
      summary: Get the README of a blueprint catalog service
      operationId: getBlueprintCatalogServiceReadme
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - name: provider
          in: path
          description: 'Cloud provider (e.g. aws, gcp, azure)'
          required: true
          schema:
            type: string
        - name: serviceFamily
          in: path
          description: 'Service family (e.g. mysql, postgresql)'
          required: true
          schema:
            type: string
        - name: serviceVersion
          in: path
          description: 'Service version (e.g. 8, 14)'
          required: true
          schema:
            type: string
      tags:
        - Blueprint Catalog
      responses:
        '200':
          description: README content and repository URL
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlueprintReadmeResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '502':
          description: Failed to fetch README from GitHub
  '/organization/{organizationId}/blueprint/catalog/{provider}/{serviceFamily}/{serviceVersion}/manifest':
    get:
      summary: Get the input fields to display for a blueprint catalog service
      description: >-
        Returns the list of form fields the console must display to deploy the selected blueprint,
        derived from the blueprint's qbm.yml manifest. Includes editable variables (overridable=true)
        and auto-sourced context variables (overridable=false, with a source).
      operationId: getBlueprintCatalogServiceManifest
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - name: provider
          in: path
          description: 'Cloud provider (e.g. aws, gcp, azure)'
          required: true
          schema:
            type: string
        - name: serviceFamily
          in: path
          description: 'Service family (e.g. mysql, postgresql)'
          required: true
          schema:
            type: string
        - name: serviceVersion
          in: path
          description: 'Service version (e.g. 8, 14)'
          required: true
          schema:
            type: string
        - name: environmentId
          in: query
          description: Environment ID used to resolve context variables
          required: true
          schema:
            type: string
            format: uuid
      tags:
        - Blueprint Catalog
      responses:
        '200':
          description: The form fields and engine spec for the selected blueprint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlueprintManifestResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '502':
          description: Failed to fetch or parse the blueprint manifest from GitHub
  '/organization/{organizationId}/customRole':
    get:
      summary: List organization custom roles
      description: List organization custom roles
      operationId: listOrganizationCustomRoles
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Custom Role
      responses:
        '200':
          description: List organization custom roles
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationCustomRoleList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create an organization custom role
      description: Create an organization custom role
      operationId: createOrganizationCustomRole
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Custom Role
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationCustomRoleCreateRequest'
      responses:
        '201':
          description: Organization custom role created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationCustomRole'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
  '/organization/{organizationId}/customRole/{customRoleId}':
    get:
      summary: 'Get an organization custom role '
      description: 'Get an organization custom role '
      operationId: getOrganizationCustomRole
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/customRoleId'
      tags:
        - Organization Custom Role
      responses:
        '200':
          description: 'Get an organization custom role '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationCustomRole'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit an organization custom role
      description: Edit an organization custom role
      operationId: editOrganizationCustomRole
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/customRoleId'
      tags:
        - Organization Custom Role
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationCustomRoleUpdateRequest'
      responses:
        '200':
          description: Edit an organization custom role
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationCustomRole'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete organization custom role
      description: Delete organization custom role
      operationId: deleteOrganizationCustomRole
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/customRoleId'
      tags:
        - Organization Custom Role
      responses:
        '204':
          $ref: '#/components/responses/204'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/events':
    get:
      summary: Get all events inside the organization
      description: Get all events inside the organization
      operationId: getOrganizationEvents
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - in: query
          name: pageSize
          description: The number of events to display in the current page
          schema:
            type: number
            nullable: true
            default: 10
        - in: query
          name: fromTimestamp
          description: |
            Display events triggered since this timestamp.  
            A range of date can be specified by using `from-timestamp` with `to-timestamp`
            The format is a timestamp with nano precision
          schema:
            type: string
            nullable: true
        - in: query
          name: toTimestamp
          description: |
            Display events triggered before this timestamp.  
            A range of date can be specified by using `to-timestamp` with `from-timestamp`
            The format is a timestamp with nano precision
          schema:
            type: string
            nullable: true
        - in: query
          name: continueToken
          description: |
            Token used to fetch the next page results
            The format is a timestamp with nano precision
          schema:
            type: string
        - in: query
          name: stepBackToken
          description: |
            Token used to fetch the previous page results
            The format is a timestamp with nano precision
          schema:
            type: string
        - in: query
          name: eventType
          schema:
            $ref: '#/components/schemas/OrganizationEventType'
        - in: query
          name: targetType
          schema:
            $ref: '#/components/schemas/OrganizationEventTargetType'
        - in: query
          name: targetId
          description: |
            The target resource id to search.  
            Must be specified with the corresponding `target_type`
          schema:
            type: string
            format: uuid
            nullable: true
        - in: query
          name: subTargetType
          schema:
            $ref: '#/components/schemas/OrganizationEventSubTargetType'
        - in: query
          name: triggeredBy
          description: Information about the owner of the event (user name / apitoken / automatic action)
          schema:
            type: string
        - in: query
          name: origin
          schema:
            $ref: '#/components/schemas/OrganizationEventOrigin'
        - in: query
          name: serviceProjectId
          description: The project chosen when filtering on a service type
          schema:
            type: string
        - in: query
          name: serviceEnvironmentId
          description: The environment chosen when filtering on a service type
          schema:
            type: string
      tags:
        - Organization Event
      responses:
        '200':
          description: Get organization events
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationEventResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/targets':
    get:
      summary: Get available event targets to filter events
      description: Get available event targets to filter events
      operationId: getOrganizationEventTargets
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - in: query
          name: fromTimestamp
          description: |
            Display targets available since this timestamp.  
            A range of date can be specified by using `from-timestamp` with `to-timestamp`
            The format is a timestamp with nano precision
          schema:
            type: string
            nullable: true
        - in: query
          name: toTimestamp
          description: |
            Display targets triggered before this timestamp.  
            A range of date can be specified by using `to-timestamp` with `from-timestamp`
            The format is a timestamp with nano precision
          schema:
            type: string
            nullable: true
        - in: query
          name: eventType
          schema:
            $ref: '#/components/schemas/OrganizationEventType'
        - in: query
          name: targetType
          schema:
            $ref: '#/components/schemas/OrganizationEventTargetType'
        - in: query
          name: triggeredBy
          description: Information about the owner of the event (user name / apitoken / automatic action)
          schema:
            type: string
        - in: query
          name: origin
          schema:
            $ref: '#/components/schemas/OrganizationEventOrigin'
        - in: query
          name: projectId
          description: Mandatory when requesting an environment or a service
          schema:
            type: string
            format: uuid
        - in: query
          name: environmentId
          description: Mandatory when requesting a service
          schema:
            type: string
            format: uuid
        - in: query
          name: targetLevelToFetch
          description: Used only to retrieve projects or environments linked to service typed events
          schema:
            $ref: '#/components/schemas/OrganizationEventTargetLevel'
      tags:
        - Organization Event
      responses:
        '200':
          description: Get organization event targets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationEventTargetResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/annotationsGroups':
    get:
      summary: List organization annotations group
      description: List organization annotations group
      operationId: listOrganizationAnnotationsGroup
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Annotations Group
      responses:
        '200':
          description: List organization annotations groups
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    $ref: '#/components/schemas/OrganizationAnnotationsGroupEnrichedResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create an organization annotations group
      description: Create an organization annotations group
      operationId: createOrganizationAnnotationsGroup
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Annotations Group
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationAnnotationsGroupCreateRequest'
      responses:
        '201':
          description: Organization annotations group created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationAnnotationsGroupResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
  '/organization/{organizationId}/annotationsGroups/{annotationsGroupId}':
    get:
      summary: Get organization annotations group
      description: Get organization annotations group
      operationId: getOrganizationAnnotationsGroup
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/annotationsGroupId'
      tags:
        - Organization Annotations Group
      responses:
        '200':
          description: List organization annotations groups
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationAnnotationsGroupResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit organization annotations group
      description: Edit organization annotations group
      operationId: editOrganizationAnnotationsGroup
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/annotationsGroupId'
      tags:
        - Organization Annotations Group
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationAnnotationsGroupCreateRequest'
      responses:
        '200':
          description: Edit organization annotations groups
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationAnnotationsGroupResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete organization annotations group
      description: Delete organization annotations group
      operationId: deleteOrganizationAnnotationsGroup
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/annotationsGroupId'
      tags:
        - Organization Annotations Group
      responses:
        '204':
          $ref: '#/components/responses/204'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/annotationsGroups/{annotationsGroupId}/associatedItems':
    get:
      summary: Get organization annotations group associated items
      description: Get organization annotations group associated items
      operationId: getOrganizationAnnotationsGroupAssociatedItems
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/annotationsGroupId'
      tags:
        - Organization Annotations Group
      responses:
        '200':
          description: Get organization annotations group token associated items
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationAnnotationsGroupAssociatedItemsResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/labelsGroups':
    get:
      summary: List organization labels group
      description: List organization labels group
      operationId: listOrganizationLabelsGroup
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Labels Group
      responses:
        '200':
          description: List organization labels groups
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    $ref: '#/components/schemas/OrganizationLabelsGroupEnrichedResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create an organization labels group
      description: Create an organization labels group
      operationId: createOrganizationLabelsGroup
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Labels Group
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationLabelsGroupCreateRequest'
      responses:
        '201':
          description: Organization labels group created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationLabelsGroupResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
  '/organization/{organizationId}/labelsGroups/{labelsGroupId}':
    get:
      summary: Get organization labels group
      description: Get organization labels group
      operationId: getOrganizationLabelssGroup
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/labelsGroupId'
      tags:
        - Organization Labels Group
      responses:
        '200':
          description: List organization labels groups
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationLabelsGroupResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit organization labels group
      description: Edit organization labels group
      operationId: editOrganizationLabelsGroup
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/labelsGroupId'
      tags:
        - Organization Labels Group
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationLabelsGroupCreateRequest'
      responses:
        '200':
          description: Edit organization labels groups
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationLabelsGroupResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete organization labels group
      description: Delete organization labels group
      operationId: deleteOrganizationLabelsGroup
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/labelsGroupId'
      tags:
        - Organization Labels Group
      responses:
        '204':
          $ref: '#/components/responses/204'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/labelsGroups/{labelsGroupId}/associatedItems':
    get:
      summary: Get organization labels group associated items
      description: Get organization labels group associated items
      operationId: getOrganizationLabelsGroupAssociatedItems
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/labelsGroupId'
      tags:
        - Organization Labels Group
      responses:
        '200':
          description: Get organization labels group token associated items
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationLabelsGroupAssociatedItemsResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /cloudProvider:
    get:
      summary: List Cloud providers available
      operationId: listCloudProvider
      tags:
        - Cloud Provider
      responses:
        '200':
          description: list cloud providers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CloudProviderResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /aws/region:
    get:
      summary: List AWS regions
      operationId: listAWSRegions
      tags:
        - Cloud Provider
      responses:
        '200':
          description: list regions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterRegionResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /aws/clusterFeature:
    get:
      summary: List AWS features available
      operationId: listAWSFeatures
      tags:
        - Cloud Provider
      responses:
        '200':
          description: list features available for AWS cloud provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterFeatureResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /aws/instanceType:
    get:
      summary: List AWS available instance types
      operationId: listAWSInstanceType
      tags:
        - Cloud Provider
      responses:
        '200':
          description: list the instance types available for AWS cloud provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterInstanceTypeResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /aws/managedDatabase/type:
    get:
      summary: List AWS available managed database types
      operationId: listAWSManagedDatabaseType
      tags:
        - Cloud Provider
      responses:
        '200':
          description: list AWS available managed database types
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedDatabaseTypeResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/aws/managedDatabase/instanceType/{region}/{databaseType}':
    get:
      summary: List AWS available managed database instance types
      operationId: listAWSManagedDatabaseInstanceType
      parameters:
        - $ref: '#/components/parameters/region'
        - $ref: '#/components/parameters/databaseType'
      tags:
        - Cloud Provider
      responses:
        '200':
          description: list AWS available managed database instance types
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedDatabaseInstanceTypeResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/azure/aks/instanceType/{region}':
    get:
      summary: List Azure AKS available instance types
      operationId: listAzureAKSInstanceType
      parameters:
        - $ref: '#/components/parameters/region'
        - schema:
            type: boolean
          in: query
          name: only_meets_resource_reqs
        - schema:
            type: boolean
          in: query
          name: with_gpu
          description: 'deprecated field, use `gpu` instead'
          deprecated: true
        - schema:
            type: string
            enum:
              - ONLY
              - INCLUDE
              - EXCLUDE
            default: INCLUDE
          in: query
          name: gpu
      tags:
        - Cloud Provider
      responses:
        '200':
          description: list the instance types available for Azure AKS by region
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterInstanceTypeResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/aws/eks/instanceType/{region}':
    get:
      summary: List AWS EKS available instance types
      operationId: listAWSEKSInstanceType
      parameters:
        - $ref: '#/components/parameters/region'
        - schema:
            type: boolean
          in: query
          name: only_meets_resource_reqs
        - schema:
            type: boolean
          in: query
          name: with_gpu
          description: 'deprecated field, use `gpu` instead'
          deprecated: true
        - schema:
            type: string
            enum:
              - INCLUDE
              - EXCLUDE
              - ONLY
            default: INCLUDE
          in: query
          name: gpu
          deprecated: true
      tags:
        - Cloud Provider
      responses:
        '200':
          description: list the instance types available for AWS EKS by region
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterInstanceTypeResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /scaleway/region:
    get:
      summary: List Scaleway regions
      operationId: listScalewayRegions
      tags:
        - Cloud Provider
      responses:
        '200':
          description: list regions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterRegionResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /scaleway/clusterFeature:
    get:
      summary: List Scaleway features available
      operationId: listScalewayFeatures
      tags:
        - Cloud Provider
      responses:
        '200':
          description: list features available for Scaleway cloud provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterFeatureResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /scaleway/instanceType:
    get:
      summary: List Scaleway available instance types
      operationId: listScalewayInstanceType
      tags:
        - Cloud Provider
      responses:
        '200':
          description: list the instance types available for Scaleway cloud provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterInstanceTypeResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /scaleway/managedDatabase/type:
    get:
      summary: List Scaleway available managed database types
      operationId: listSCWManagedDatabaseType
      tags:
        - Cloud Provider
      responses:
        '200':
          description: list Scaleway available managed database types
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedDatabaseTypeResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/scaleway/instanceType/{zone}':
    get:
      summary: List Scaleway Kapsule available instance types
      operationId: listScalewayKapsuleInstanceType
      parameters:
        - name: zone
          in: path
          description: zone name
          required: true
          schema:
            type: string
            example: fr-par-1
      tags:
        - Cloud Provider
      responses:
        '200':
          description: list the instance types available for Scaleway Kapsule by region
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterInstanceTypeResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /gcp/region:
    get:
      summary: List GCP regions
      operationId: listGcpRegions
      tags:
        - Cloud Provider
      responses:
        '200':
          description: list regions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterRegionResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /gcp/clusterFeature:
    get:
      summary: List GCP features available
      operationId: listGcpFeatures
      tags:
        - Cloud Provider
      responses:
        '200':
          description: list features available for GCP cloud provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterFeatureResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/gcp/instanceType/{region}':
    get:
      summary: List GCP GKE available instance types
      operationId: listGcpGkeInstanceType
      parameters:
        - $ref: '#/components/parameters/region'
      tags:
        - Cloud Provider
      responses:
        '200':
          description: list the instance types available for GCP GKE by region
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterInstanceTypeResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/cluster/{clusterId}/cloudProviderInfo':
    get:
      summary: Get cluster cloud provider info and credentials
      operationId: getOrganizationCloudProviderInfo
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      responses:
        '200':
          description: get cloud provider info and credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCloudProviderInfo'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Specify cluster cloud provider info and credentials
      operationId: specifyClusterCloudProviderInfo
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterCloudProviderInfoRequest'
      responses:
        '201':
          description: Create cluster
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCloudProviderInfo'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/cluster/{clusterId}/isReady':
    get:
      summary: Know if a cluster is ready to be deployed or not
      operationId: getClusterReadinessStatus
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      responses:
        '200':
          description: Get Cluster Readiness Status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterReadinessStatus'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/cluster/{clusterId}/deploy':
    post:
      summary: Deploy a cluster
      description: allows to deploy a cluster
      operationId: deployCluster
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
        - schema:
            type: boolean
          in: query
          name: dry_run
          description: 'default: false. Decide if the deployment of the cluster should be done in dry_run mode. Avoiding any changes'
      tags:
        - Clusters
      responses:
        '201':
          description: Deploy cluster
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterStatus'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/cluster/{clusterId}/eks-anywhere/commits':
    get:
      summary: List EKS Anywhere commits
      description: Returns list of the last commits made on the repository linked to the EKS Anywhere cluster, filtered by the targeted YAML file when supported by provider.
      operationId: listEksAnywhereCommits
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      responses:
        '200':
          description: List EKS Anywhere commits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommitResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/cluster/{clusterId}/eks-anywhere/commit':
    put:
      summary: Update selected EKS Anywhere commit
      description: Persist selected commit for an EKS Anywhere cluster.
      operationId: updateEksAnywhereCommit
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EksAnywhereCommitRequest'
      responses:
        '200':
          description: Updated EKS Anywhere commit
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EksAnywhereCommitResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/cluster/{clusterId}/eks-anywhere/jwt':
    get:
      summary: Get latest EKS Anywhere cluster JWT
      description: Returns the latest valid JWT currently used for engine deployments for the specified EKS Anywhere cluster.
      operationId: getEksAnywhereClusterJwt
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      responses:
        '200':
          description: Latest EKS Anywhere cluster JWT
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EksAnywhereClusterJwtResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/cluster/{clusterId}/dnsProvider':
    get:
      summary: Get cluster DNS provider
      description: Retrieve the DNS provider currently associated with a cluster. Requires VIEWER role.
      operationId: getClusterDnsProvider
      parameters:
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      responses:
        '200':
          description: Cluster DNS provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterDnsProviderResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit cluster DNS provider
      description: |
        Update the DNS provider associated with a cluster. Requires an Enterprise plan.
        Cloudflare api_token and Route53 STATIC credentials aws_secret_access_key must be provided on every edit.
      operationId: editClusterDnsProvider
      parameters:
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterDnsProviderRequest'
      responses:
        '200':
          description: Updated cluster DNS provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterDnsProviderResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/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'
    delete:
      summary: Delete an ArgoCD destination cluster mapping
      description: |
        Remove the mapping between an ArgoCD destination cluster URL and a Qovery cluster.
        Requires ADMIN role on the agent cluster.
      operationId: deleteArgoCdDestinationClusterMapping
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - name: agentClusterId
          in: query
          required: true
          schema:
            type: string
            format: uuid
          description: ID of the Qovery cluster where the ArgoCD instance is running
        - name: argocdClusterUrl
          in: query
          required: true
          schema:
            type: string
          description: ArgoCD destination cluster URL as reported by ArgoCD
          example: 'https://kubernetes.default.svc'
      tags:
        - ArgoCD
      responses:
        '204':
          description: Mapping deleted
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/cluster/{clusterId}/upgrade':
    post:
      summary: Upgrade a cluster
      description: allows to upgrade a cluster to next available kubernetes version
      operationId: upgradeCluster
      parameters:
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      responses:
        '201':
          description: Upgrade cluster
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterStatus'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/cluster/{clusterId}/karpenterPrivateSubnetIds':
    put:
      summary: Update karpenter private fargate subnet ids
      description: Update karpenter private fargate subnet ids
      operationId: updateKarpenterPrivateFargateSubnetIds
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterKarpenterPrivateSubnetIdsPutRequest'
      responses:
        '200':
          description: Updated
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/cluster/{clusterId}/stop':
    post:
      summary: Stop cluster
      description: Cluster stop has been requester.
      operationId: StopCluster
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/clusterId'
      tags:
        - Clusters
      responses:
        '202':
          description: Update cluster
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterStatus'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Cluster is already stopped or an operation is in progress
  '/organization/{organizationId}/containerRegistry':
    get:
      summary: List organization container registries
      operationId: listContainerRegistry
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Container Registries
      responses:
        '200':
          description: List container registries
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerRegistryResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create a container registry
      operationId: createContainerRegistry
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Container Registries
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContainerRegistryRequest'
      responses:
        '201':
          description: Create a Container Registry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerRegistryResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/containerRegistry/{containerRegistryId}':
    get:
      summary: Get a container registry
      operationId: getContainerRegistry
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/containerRegistryId'
      tags:
        - Container Registries
      responses:
        '200':
          description: The container registry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerRegistryResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete a container registry
      operationId: deleteContainerRegistry
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/containerRegistryId'
      tags:
        - Container Registries
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit a container registry
      operationId: editContainerRegistry
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/containerRegistryId'
      tags:
        - Container Registries
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContainerRegistryRequest'
      responses:
        '200':
          description: Edited the container registry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerRegistryResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/containerRegistry/{containerRegistryId}/images':
    get:
      summary: List image version for a container registry
      operationId: getContainerVersions
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/containerRegistryId'
        - $ref: '#/components/parameters/imageName'
        - $ref: '#/components/parameters/searchImageName'
      tags:
        - Container Registries
      responses:
        '200':
          description: The container registry versions list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerVersionResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/containerRegistry/{containerRegistryId}/container/status':
    get:
      summary: List all container registry container statuses
      description: Returns a list of containers with only their id and status.
      operationId: getContainerRegistryContainerStatus
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/containerRegistryId'
      tags:
        - Containers
      responses:
        '200':
          description: Get status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReferenceObjectStatusResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /availableContainerRegistry:
    get:
      summary: List supported container registries
      description: List supported container registries by Qovery and get the mandatory authentification configuration.
      operationId: listAvailableContainerRegistry
      tags:
        - Container Registries
      responses:
        '200':
          description: supported container registries
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AvailableContainerRegistryResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /availableHelmRepository:
    get:
      summary: List supported helm repository
      description: List supported helm repository by Qovery and get the mandatory authentification configuration.
      operationId: listAvailableHelmRepository
      tags:
        - Helm Repositories
      responses:
        '200':
          description: supported helm repositories
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AvailableHelmRepositoryResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/helmRepository':
    get:
      summary: List organization helm repositories
      operationId: listHelmRepository
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Helm Repositories
      responses:
        '200':
          description: List helm repositories
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmRepositoryResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create a helm repository
      operationId: createHelmRepository
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Helm Repositories
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HelmRepositoryRequest'
      responses:
        '201':
          description: Create a helm repository
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmRepositoryResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/helmRepository/{helmRepositoryId}':
    get:
      summary: Get a helm repository
      operationId: getHelmRepository
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/helmRepositoryId'
      tags:
        - Helm Repositories
      responses:
        '200':
          description: The helm repository
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmRepositoryResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete a helm repository
      operationId: deleteHelmRepository
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/helmRepositoryId'
      tags:
        - Helm Repositories
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit a helm repository
      operationId: editHelmRepository
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/helmRepositoryId'
      tags:
        - Helm Repositories
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HelmRepositoryRequest'
      responses:
        '200':
          description: Edited the helm repository
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmRepositoryResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/helmRepository/{helmRepositoryId}/charts':
    get:
      summary: List helm charts contained inside the repository
      operationId: getHelmCharts
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/helmRepositoryId'
        - $ref: '#/components/parameters/chartName'
      tags:
        - Helm Repositories
      responses:
        '200':
          description: The helm repository versions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmVersionResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/project/{projectId}':
    get:
      summary: Get project by ID
      operationId: getProject
      parameters:
        - $ref: '#/components/parameters/projectId'
      tags:
        - Project Main Calls
      responses:
        '200':
          description: Get project by ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit a project
      description: To edit a project you must have the admin permission
      operationId: editProject
      parameters:
        - $ref: '#/components/parameters/projectId'
      tags:
        - Project Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectRequest'
      responses:
        '200':
          description: Edit a project
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Project name within the organization is already taken
    delete:
      summary: Delete a project
      description: To delete a project you must have the admin permission
      operationId: deleteProject
      parameters:
        - $ref: '#/components/parameters/projectId'
      tags:
        - Project Main Calls
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/project/{projectId}/deploymentRule':
    get:
      summary: List project deployment rules
      description: List project deployment rules
      operationId: listProjectDeploymentRules
      parameters:
        - $ref: '#/components/parameters/projectId'
      tags:
        - Project Deployment Rule
      responses:
        '200':
          description: Get project deployment rules
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectDeploymentRuleResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create a deployment rule
      description: Create a deployment rule
      operationId: createDeploymentRule
      parameters:
        - $ref: '#/components/parameters/projectId'
      tags:
        - Project Deployment Rule
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectDeploymentRuleRequest'
      responses:
        '201':
          description: Create deployment rule
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectDeploymentRule'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/project/{projectId}/deploymentRule/{deploymentRuleId}':
    get:
      summary: Get a project deployment rule
      description: Get a project deployment rule
      operationId: getProjectDeploymentRule
      parameters:
        - $ref: '#/components/parameters/projectId'
        - $ref: '#/components/parameters/deploymentRuleId'
      tags:
        - Project Deployment Rule
      responses:
        '200':
          description: Get project deployment rule
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectDeploymentRule'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit a project deployment rule
      description: Edit a project deployment rule
      operationId: editProjectDeployemtnRule
      parameters:
        - $ref: '#/components/parameters/projectId'
        - $ref: '#/components/parameters/deploymentRuleId'
      tags:
        - Project Deployment Rule
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectDeploymentRuleRequest'
      responses:
        '200':
          description: Edit a project deployment rule
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectDeploymentRule'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete a project deployment rule
      description: Delete a project deployment rule
      operationId: deleteProjectDeploymentRule
      parameters:
        - $ref: '#/components/parameters/projectId'
        - $ref: '#/components/parameters/deploymentRuleId'
      tags:
        - Project Deployment Rule
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/project/{projectId}/deploymentRule/order':
    put:
      summary: Update deployment rules priority order
      description: Update deployment rules priority order
      operationId: updateDeploymentRulesPriorityOrder
      parameters:
        - $ref: '#/components/parameters/projectId'
      tags:
        - Project Deployment Rule
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectDeploymentRulesPriorityOrderRequest'
      responses:
        '200':
          description: Update deployment rules priority order
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/project/{projectId}/environment':
    get:
      summary: List environments
      operationId: listEnvironment
      parameters:
        - $ref: '#/components/parameters/projectId'
      tags:
        - Environments
      responses:
        '200':
          description: List environments
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create an environment
      operationId: createEnvironment
      parameters:
        - $ref: '#/components/parameters/projectId'
      tags:
        - Environments
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEnvironmentRequest'
      responses:
        '201':
          description: Create environment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Environment'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Environment name within the project is already taken
  '/project/{projectId}/environmentVariable':
    post:
      summary: Add an environment variable to the project
      description: |
        - Add an environment variable to the project.
          - If the environment variable key already exists, then it will be replaced by the new one.
          - If the environment variable value points toward an existing environment variable key, it will be considered as an alias.
      operationId: createProjectEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/projectId'
      tags:
        - Project Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentVariableRequest'
      responses:
        '201':
          description: Added an environment variable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    get:
      summary: List project environment variables
      operationId: listProjectEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/projectId'
      tags:
        - Project Environment Variable
      responses:
        '200':
          description: List project environment variables
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariableResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/project/{projectId}/environmentVariable/{environmentVariableId}':
    delete:
      summary: Delete an environment variable from a project
      description: |
        - To delete an environment variable you must have the project user permission
        - You can't delete a BUILT_IN variable
        - If you delete a variable having override or alias, the associated override/alias will be deleted as well
      operationId: deleteProjectEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/projectId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Project Environment Variable
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit an environment variable belonging to the project
      description: |
        - You can't edit a BUILT_IN variable
        - For an override, you can't edit the key
        - For an alias, you can't edit the value
        - An override can only have a scope lower to the variable it is overriding (hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION)
      operationId: editProjectEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/projectId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Project Environment Variable
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentVariableEditRequest'
      responses:
        '200':
          description: Edited the environment variable value
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/project/{projectId}/environmentVariable/{environmentVariableId}/override':
    post:
      summary: Create an environment variable override at the project level
      description: |
        - Allows you to override at project level an environment variable that has a higher scope.
        - You only have to specify a value in the request body
        - The system will create a new environment variable at project level with the same key as the one corresponding to the variable id in the path
        - The response body will contain the newly created variable
        - Information regarding the overridden_variable will be exposed in the "overridden_variable" field of the newly created variable
      operationId: createProjectEnvironmentVariableOverride
      parameters:
        - $ref: '#/components/parameters/projectId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Project Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Value'
      responses:
        '201':
          description: Create variable override
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          description: Can't create an override on a higher scope. Overrides can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/project/{projectId}/environmentVariable/{environmentVariableId}/alias':
    post:
      summary: Create an environment variable alias at the project level
      description: |
        - Allows you to add an alias at project level on an existing environment variable having higher scope, in order to customize its key.
        - You only have to specify a key in the request body
        - The system will create a new environment variable at project level with the same value as the one corresponding to the variable id in the path
        - The response body will contain the newly created variable
        - Information regarding the aliased_variable will be exposed in the "aliased_variable" field of the newly created variable
        - You can't create an alias on an alias
      operationId: createProjectEnvironmentVariableAlias
      parameters:
        - $ref: '#/components/parameters/projectId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Project Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Key'
      responses:
        '201':
          description: Create variable alias
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          description: Can't create an alias on a higher scope. Aliases can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/project/{projectId}/secret':
    get:
      summary: List project secrets
      operationId: listProjectSecrets
      parameters:
        - $ref: '#/components/parameters/projectId'
      tags:
        - Project Secret
      responses:
        '200':
          description: List project secrets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecretResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Add a secret to the project
      description: |
        - Add a secret to the project.
          - If the secret key already exists, then it will be replaced by the new one.
          - If the secret value points toward an existing secret key, it will be considered as an alias.
      operationId: createProjectSecret
      parameters:
        - $ref: '#/components/parameters/projectId'
      tags:
        - Project Secret
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecretRequest'
      responses:
        '201':
          description: Added a secret
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/project/{projectId}/secret/{secretId}':
    delete:
      summary: Delete a secret from a project
      description: |
        - To delete a secret you must have the project user permission
        - You can't delete a BUILT_IN secret
        - If you delete a secret having override or alias, the associated override/alias will be deleted as well  operationId: deleteProjectSecret
      operationId: deleteProjectSecret
      parameters:
        - $ref: '#/components/parameters/projectId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Project Secret
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit a secret belonging to the project
      description: |
        - You can't edit a BUILT_IN secret
        - For an override, you can't edit the key
        - For an alias, you can't edit the value
        - An override can only have a scope lower to the secret it is overriding (hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION)
      operationId: editProjectSecret
      parameters:
        - $ref: '#/components/parameters/projectId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Project Secret
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecretEditRequest'
      responses:
        '200':
          description: Edited the secret value
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/project/{projectId}/secret/{secretId}/override':
    post:
      summary: Create a secret override at the project level
      description: |
        - Allows you to override at project level a secret that has a higher scope.
        - You only have to specify a value in the request body
        - The system will create a new secret at project level with the same key as the one corresponding to the secret id in the path
        - The response body will contain the newly created secret
        - Information regarding the overridden_secret will be exposed in the "overridden_secret" field of the newly created secret
      operationId: createProjectSecretOverride
      parameters:
        - $ref: '#/components/parameters/projectId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Project Secret
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Value'
      responses:
        '201':
          description: Create secret override
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          description: Can't create an override on a higher scope. Overrides can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/project/{projectId}/secret/{secretId}/alias':
    post:
      summary: Create a secret alias at the project level
      description: |
        - Allows you to add an alias at project level on an existing secret having higher scope, in order to customize its key.
        - You only have to specify a key in the request body
        - The system will create a new secret at project level with the same value as the one corresponding to the secret id in the path
        - The response body will contain the newly created secret
        - Information regarding the aliased_secret will be exposed in the "aliased_secret" field of the newly created secret
        - You can't create an alias on an alias
      operationId: createProjectSecretAlias
      parameters:
        - $ref: '#/components/parameters/projectId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Project Secret
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Key'
      responses:
        '201':
          description: Create secret alias
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          description: Can't create an alias on a higher scope. Aliases can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/project/{projectId}/environment/status':
    get:
      summary: List environments statuses
      description: Returns a list of environments with only their id and status.
      operationId: getProjectEnvironmentsStatus
      parameters:
        - $ref: '#/components/parameters/projectId'
      tags:
        - Environments
      responses:
        '200':
          description: Get status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentStatusList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/project/{projectId}/environment/stats':
    get:
      summary: List total number of services for each environment of the project
      description: 'Returns a list of environment ids, and for each its total numberof services'
      operationId: getProjectEnvironmentServiceNumber
      parameters:
        - $ref: '#/components/parameters/projectId'
      tags:
        - Environments
      responses:
        '200':
          description: Get number of services
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentStatsResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/project/{projectId}/environment/overview':
    get:
      summary: List environments overview
      description: 'Returns a list of environments with their overview information including deployment status, service count, and cluster details.'
      operationId: getProjectEnvironmentsOverview
      parameters:
        - $ref: '#/components/parameters/projectId'
      tags:
        - Environments
      responses:
        '200':
          description: List environments overview
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentOverviewResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}':
    get:
      summary: Get environment by ID
      operationId: getEnvironment
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Main Calls
      responses:
        '200':
          description: Get environment by ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Environment'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit an environment
      description: To edit an environment you must have the admin permission
      operationId: editEnvironment
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentEditRequest'
      responses:
        '200':
          description: Edit an environment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Environment'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Environment name within the project is already taken
    delete:
      summary: Delete an environment
      description: To delete an environment you must have the admin permission
      operationId: deleteEnvironment
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - in: query
          name: skipReconcile
          required: false
          schema:
            type: boolean
            default: false
          description: 'When true, skip the pre-destroy apply/reconcile and tear down best-effort, tolerating already-absent resources.'
      tags:
        - Environment Main Calls
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/status':
    get:
      summary: Get environment status
      operationId: getEnvironmentStatus
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Main Calls
      responses:
        '200':
          description: Get status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentStatus'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/statuses':
    get:
      summary: Get environment statuses with services status
      operationId: getEnvironmentStatuses
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Main Calls
      responses:
        '200':
          description: Get statuses
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentStatuses'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/statusesWithStages':
    get:
      summary: Get environment statuses with stages
      operationId: getEnvironmentStatusesWithStages
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Main Calls
      responses:
        '200':
          description: Get statuses with stages
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentStatusesWithStages'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/deploymentStage':
    get:
      summary: List environment deployment stage
      operationId: ListEnvironmentDeploymentStage
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Deployment Stage Main Calls
      responses:
        '200':
          description: List deployment stage
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentStageResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create environment deployment stage
      operationId: CreateEnvironmentDeploymentStage
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Deployment Stage Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeploymentStageRequest'
      responses:
        '200':
          description: created deployment stage
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentStageResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/deploymentStage/{deploymentStageId}':
    get:
      summary: Get Deployment Stage
      operationId: getDeploymentStage
      parameters:
        - $ref: '#/components/parameters/deploymentStageId'
      tags:
        - Deployment Stage Main Calls
      responses:
        '200':
          description: Get Deployment Stage
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentStageResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete deployment stage
      operationId: DeleteDeploymentStage
      parameters:
        - $ref: '#/components/parameters/deploymentStageId'
      tags:
        - Deployment Stage Main Calls
      responses:
        '204':
          $ref: '#/components/responses/204'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit deployment stage
      operationId: EditDeploymentStage
      parameters:
        - $ref: '#/components/parameters/deploymentStageId'
      tags:
        - Deployment Stage Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeploymentStageRequest'
      responses:
        '200':
          description: created deployment stage
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentStageResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/deploymentStage/{deploymentStageId}/service/{serviceId}':
    put:
      summary: Attach service to deployment stage
      description: 'Moves the service to the specified deployment stage. To skip a service from environment-level deployments while keeping it in its current stage, set `is_skipped: true` in the request body. Moving the service to a different stage automatically un-skips it (sets `is_skipped: false`).'
      operationId: AttachServiceToDeploymentStage
      parameters:
        - $ref: '#/components/parameters/deploymentStageId'
        - $ref: '#/components/parameters/serviceId'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                is_skipped:
                  type: boolean
                  description: 'When true, marks the service as skipped (excluded from environment-level bulk deployments) while keeping it in the specified stage. When false or omitted, the service is moved to the specified stage and un-skipped.'
      tags:
        - Deployment Stage Main Calls
      responses:
        '200':
          description: List of deployment stages for the env
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentStageResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/deploymentStage/{deploymentStageId}/moveBefore/{stageId}':
    put:
      summary: Move deployment stage before requested stage
      operationId: MoveBeforeDeploymentStage
      parameters:
        - $ref: '#/components/parameters/deploymentStageId'
        - $ref: '#/components/parameters/stageId'
      tags:
        - Deployment Stage Main Calls
      responses:
        '200':
          description: List deployment stage
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentStageResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/deploymentStage/{deploymentStageId}/moveAfter/{stageId}':
    put:
      summary: Move deployment stage after requested stage
      operationId: MoveAfterDeploymentStage
      parameters:
        - $ref: '#/components/parameters/deploymentStageId'
        - $ref: '#/components/parameters/stageId'
      tags:
        - Deployment Stage Main Calls
      responses:
        '200':
          description: List deployment stage
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentStageResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/deploymentRule':
    get:
      summary: Get environment deployment rule
      operationId: getEnvironmentDeploymentRule
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Deployment Rule
      responses:
        '200':
          description: Get deployment rule
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentDeploymentRule'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/deploymentRule/{deploymentRuleId}':
    put:
      summary: Edit an environment deployment rule
      operationId: editEnvironmentDeploymentRule
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - $ref: '#/components/parameters/deploymentRuleId'
      tags:
        - Environment Deployment Rule
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentDeploymentRuleEditRequest'
      responses:
        '200':
          description: Edit environment deployment rule
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentDeploymentRule'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/deploy':
    post:
      summary: Deploy environment
      description: This will deploy all the services of this environment to their latest version.
      operationId: deployEnvironment
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Actions
      responses:
        '202':
          description: Deploy environment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/environment/{environmentId}/uninstall':
    post:
      summary: Uninstall environment
      description: This will uninstall all the services of this environment.
      operationId: uninstallEnvironment
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Actions
      responses:
        '202':
          description: uninstall environment
          content:
            application/json:
              schema:
                type: object
                properties: {}
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
      x-stoplight:
        id: g57d57j59zihv
    parameters:
      - schema:
          type: string
        name: environmentId
        in: path
        required: true
  '/environment/{environmentId}/stop':
    post:
      summary: Stop environment
      operationId: stopEnvironment
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Actions
      responses:
        '202':
          description: Environment stop has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentStatus'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Environment is already stopped or an operation is in progress
  '/environment/{environmentId}/redeploy':
    post:
      summary: Redeploy environment
      operationId: redeployEnvironment
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Actions
      responses:
        '202':
          description: Environment redeploy has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentStatus'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/environment/{environmentId}/cancelDeployment':
    post:
      summary: Cancel environment deployment
      description: Cancel the current deployment of your environment.
      operationId: cancelEnvironmentDeployment
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Actions
      responses:
        '202':
          description: environment deployment cancelling has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentStatus'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Environment deployment is already cancelled or an operation is in progress
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                force_cancel:
                  type: boolean
                  x-stoplight:
                    id: c5k0n6yafpsig
                  default: false
                  description: Force cancel everything running in this environment if set to true (e.q lifecycle jobs triggered during the deployment).
  '/deploymentQueue/{deploymentRequestId}/cancelDeployment':
    post:
      summary: Cancel deployment request
      description: Cancel the a deployment request.
      operationId: cancelDeploymentRequest
      tags:
        - Deployment Queue Actions
      responses:
        '202':
          description: deployment request cancelling has been requested
          content: {}
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Deployment request is already cancelled or an operation is in progress
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties: {}
      x-stoplight:
        id: tybevwlak1oip
    parameters:
      - schema:
          type: string
          format: uuid
        name: deploymentRequestId
        in: path
        required: true
  '/environment/{environmentId}/clone':
    post:
      summary: Clone environment
      description: 'You must provide a name. This will create a new environment, with the same configuration, and same applications and databases. Database data is not cloned.'
      operationId: cloneEnvironment
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Actions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloneEnvironmentRequest'
      responses:
        '202':
          description: Environment clone has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Environment'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/environment/{environmentId}/application':
    get:
      summary: List applications
      operationId: listApplication
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - $ref: '#/paths/~1environment~1%7BenvironmentId%7D~1job/get/parameters/1'
      tags:
        - Applications
      responses:
        '200':
          description: List applications
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create an application
      operationId: createApplication
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Applications
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationRequest'
      responses:
        '201':
          description: Create application
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Application name within the environment is already taken
  '/environment/{environmentId}/application/status':
    get:
      summary: List all environment applications statuses
      description: Returns a list of applications with only their id and status.
      operationId: getEnvironmentApplicationStatus
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Applications
      responses:
        '200':
          description: Get status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReferenceObjectStatusResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/container':
    get:
      summary: List containers
      operationId: listContainer
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Containers
      responses:
        '200':
          description: List containers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create a container
      operationId: createContainer
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Containers
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContainerRequest'
      responses:
        '201':
          description: Create container
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Container name within the environment is already taken
  '/environment/{environmentId}/container/status':
    get:
      summary: List all environment container statuses
      description: Returns a list of containers with only their id and status.
      operationId: getEnvironmentContainerStatus
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Containers
      responses:
        '200':
          description: Get status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReferenceObjectStatusResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/service/deploy':
    post:
      summary: Deploy services
      description: Update and deploy the selected services
      operationId: deployAllServices
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Actions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeployAllRequest'
      responses:
        '202':
          description: Deployed services
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentStatus'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/environment/{environmentId}/service/restart-service':
    post:
      summary: Reboot services
      description: Update and reboot the selected services
      operationId: rebootServices
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Actions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RebootServicesRequest'
      responses:
        '202':
          description: Reboot services
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/environment/{environmentId}/service/stop':
    post:
      summary: Stop services
      description: Stop selected services
      operationId: stopSelectedServices
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Actions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentServiceIdsAllRequest'
      responses:
        '200':
          description: Services have been triggered to be deleted
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/environment/{environmentId}/service/delete':
    post:
      summary: Delete services
      description: Delete selected services
      operationId: deleteSelectedServices
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - in: query
          name: skipReconcile
          required: false
          schema:
            type: boolean
            default: false
          description: 'When true, skip the pre-destroy apply/reconcile and tear down best-effort, tolerating already-absent resources.'
      tags:
        - Environment Actions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentServiceIdsAllRequest'
      responses:
        '200':
          description: Services have been triggered to be deleted
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/environment/{environmentId}/service/uninstall':
    post:
      summary: Uninstall services
      description: uninstall selected services
      operationId: uninstallSelectedServices
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Actions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentServiceIdsAllRequest'
      responses:
        '200':
          description: Services have been triggered to be uninstalled
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
      x-stoplight:
        id: m4lfkqr1n8s97
    parameters:
      - schema:
          type: string
        name: environmentId
        in: path
        required: true
  '/organization/{organizationId}/container/deploy':
    post:
      summary: Auto deploy containers
      description: |
        Triggers a new container deploy in each environment matching the following conditions
        - environment should have the auto-deploy enabled
        - the container should have the same image name and a different tag
      operationId: autoDeployContainerEnvironments
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Containers
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationContainerAutoDeployRequest'
      responses:
        '202':
          description: Deployed containers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/organization/{organizationId}/container/preview':
    post:
      summary: Preview container environments
      description: |
        Triggers a new container preview for each environment matching the following conditions
        - preview environment feature should be enabled for the container
        - the container should have the same image name and a different tag
      operationId: previewContainerEnvironments
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Containers
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationContainerPreviewRequest'
      responses:
        '202':
          description: Preview environments processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/organization/{organizationId}/job/deploy':
    post:
      summary: Auto deploy jobs
      description: |
        Triggers a new job deploy in each environment matching the following conditions
        - environment should have the auto-deploy enabled
        - the job should have the same image name and a different tag
      operationId: autoDeployJobEnvironments
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Jobs
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationJobAutoDeployRequest'
      responses:
        '202':
          description: Deployed jobs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/environment/{environmentId}/log':
    get:
      summary: List environment deployment logs
      operationId: listEnvironmentLog
      description: This returns the last 1000 environment deployment logs.
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Logs
      responses:
        '200':
          description: List logs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentLogResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/logs':
    get:
      summary: List environment deployment logs v2
      operationId: listEnvironmentLogs
      description: This returns the last 1000 environment deployment logs v2
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - in: query
          name: version
          schema:
            type: string
      tags:
        - Environment Logs
      responses:
        '200':
          description: List logs v2
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentLogsResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/deploymentHistory':
    get:
      summary: List environment deployments
      description: 'List previous and current environment deployments with the status deployment and the related services. By default it returns the 20 last results. The response is paginated. In order to request the next page, you can use the startId query parameter'
      operationId: listEnvironmentDeploymentHistory
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - $ref: '#/components/parameters/startId'
      tags:
        - Environment Deployment History
      responses:
        '200':
          description: List deployment history
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentHistoryEnvironmentPaginatedResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/deploymentHistoryV2':
    get:
      summary: List environment deployments
      description: 'List previous and current environment deployments with the status deployment and the related services. By default it returns the 20 last results. The response is paginated. In order to request the next page, you can use the startId query parameter'
      operationId: listEnvironmentDeploymentHistoryV2
      parameters:
        - in: query
          name: pageSize
          description: The number of deployments to return in the current page
          schema:
            type: number
            nullable: true
            default: 20
      tags:
        - Environment Deployment History
      responses:
        '200':
          description: List deployment history
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentHistoryEnvironmentPaginatedResponseListV2'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      x-stoplight:
        id: pqsu5pghhay1j
    parameters:
      - schema:
          type: string
          format: uuid
        name: environmentId
        in: path
        required: true
  '/environment/{environmentId}/deploymentBuildUsageReport':
    post:
      summary: Generate a Grafana snapshot report showing build runner pod usage for a specific deployment
      description: Generate a Grafana snapshot report that shows the resource usage (CPU, memory) of build runner pods for a specific deployment execution. The report is publicly accessible for the specified duration.
      operationId: generateDeploymentBuildUsageReport
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Deployment History
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeploymentBuildUsageReportRequest'
      responses:
        '201':
          description: Build usage report snapshot has been successfully generated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentBuildUsageReportResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/environmentVariable':
    get:
      summary: List environment variables
      operationId: listEnvironmentEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Variable
      responses:
        '200':
          description: List environment variables
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariableResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Add an environment variable to the environment
      description: |
        - Add an environment variable to the environment.
          - If the environment variable key already exists, then it will be replaced by the new one.
          - If the environment variable value points toward an existing environment variable key, it will be considered as an alias.
      operationId: createEnvironmentEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentVariableRequest'
      responses:
        '201':
          description: Added an environment variable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/environmentVariable/{environmentVariableId}':
    delete:
      summary: Delete an environment variable from an environment
      description: |
        - To delete an environment variable you must have the project user permission
        - You can't delete a BUILT_IN variable
        - If you delete a variable having override or alias, the associated override/alias will be deleted as well
      operationId: deleteEnvironmentEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Environment Variable
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit an environment variable belonging to the environment
      description: |
        - You can't edit a BUILT_IN variable
        - For an override, you can't edit the key
        - For an alias, you can't edit the value
        - An override can only have a scope lower to the variable it is overriding (hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION)
      operationId: editEnvironmentEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Environment Variable
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentVariableEditRequest'
      responses:
        '200':
          description: Edited the environment variable value
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/environmentVariable/{environmentVariableId}/override':
    post:
      summary: Create an environment variable override at the environment level
      description: |
        - Allows you to override at environment level an environment variable that has a higher scope.
        - You only have to specify a value in the request body
        - The system will create a new environment variable at environment level with the same key as the one corresponding to the variable id in the path
        - The response body will contain the newly created variable
        - Information regarding the overridden_variable will be exposed in the "overridden_variable" field of the newly created variable
      operationId: createEnvironmentEnvironmentVariableOverride
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Value'
      responses:
        '201':
          description: Create variable override
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          description: Can't create an override on a higher scope. Overrides can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/environmentVariable/{environmentVariableId}/alias':
    post:
      summary: Create an environment variable alias at the environment level
      description: |
        - Allows you to add an alias at environment level on an existing environment variable having higher scope, in order to customize its key.
        - You only have to specify a key in the request body
        - The system will create a new environment variable at environment level with the same value as the one corresponding to the variable id in the path
        - The response body will contain the newly created variable
        - Information regarding the aliased_variable will be exposed in the "aliased_variable" field of the newly created variable
        - You can't create an alias on an alias
      operationId: createEnvironmentEnvironmentVariableAlias
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Key'
      responses:
        '201':
          description: Create variable alias
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          description: Can't create an alias on a higher scope. Aliases can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/secret':
    get:
      summary: List environment secrets
      operationId: listEnvironmentSecrets
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Secret
      responses:
        '200':
          description: List environment secrets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecretResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Add a secret to the environment
      description: |
        - Add a secret to the environment.
          - If the secret key already exists, then it will be replaced by the new one.
          - If the secret value points toward an existing secret key, it will be considered as an alias.
      operationId: createEnvironmentSecret
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment Secret
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecretRequest'
      responses:
        '201':
          description: Added a secret
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/secret/{secretId}':
    delete:
      summary: Delete a secret from the environment
      description: |
        - To delete a secret you must have the project user permission
        - You can't delete a BUILT_IN secret
        - If you delete a secret having override or alias, the associated override/alias will be deleted as well  operationId: deleteEnvironmentSecret
      operationId: deleteEnvironmentSecret
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Environment Secret
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit a secret belonging to the environment
      description: |
        - You can't edit a BUILT_IN secret
        - For an override, you can't edit the key
        - For an alias, you can't edit the value
        - An override can only have a scope lower to the secret it is overriding (hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION)
      operationId: editEnvironmentSecret
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Environment Secret
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecretEditRequest'
      responses:
        '200':
          description: Edited the secret value
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/secret/{secretId}/override':
    post:
      summary: Create a secret override at the environment level
      description: |
        - Allows you to override at environment level a secret that has a higher scope.
        - You only have to specify a value in the request body
        - The system will create a new secret at environment level with the same key as the one corresponding to the secret id in the path
        - The response body will contain the newly created secret
        - Information regarding the overridden_secret will be exposed in the "overridden_secret" field of the newly created secret
      operationId: createEnvironmentSecretOverride
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Environment Secret
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Value'
      responses:
        '201':
          description: Create secret override
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          description: Can't create an override on a higher scope. Overrides can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/secret/{secretId}/alias':
    post:
      summary: Create a secret alias at the environment level
      description: |
        - Allows you to add an alias at environment level on an existing secret having higher scope, in order to customize its key.
        - You only have to specify a key in the request body
        - The system will create a new secret at environment level with the same value as the one corresponding to the secret id in the path
        - The response body will contain the newly created secret
        - Information regarding the aliased_secret will be exposed in the "aliased_secret" field of the newly created secret
        - You can't create an alias on an alias
      operationId: createEnvironmentSecretAlias
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Environment Secret
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Key'
      responses:
        '201':
          description: Create secret alias
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          description: Can't create an alias on a higher scope. Aliases can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/databaseConfiguration':
    get:
      summary: 'List eligible database types, versions and modes for the environment'
      operationId: listEnvironmentDatabaseConfig
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Databases
      responses:
        '200':
          description: List eligible database
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatabaseConfigurationResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/terraformExport':
    get:
      summary: Export full environment and its resources into Terraform manifests
      operationId: exportEnvironmentConfigurationIntoTerraform
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - name: exportSecrets
          in: query
          description: export Secrets from configuration and include them into Terraform export
          required: false
          schema:
            type: boolean
            default: false
      tags:
        - Environment Export
      responses:
        '200':
          description: Export full environment and its resources into Terraform manifests (ZIP file)
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /defaultApplicationAdvancedSettings:
    get:
      summary: List default application advanced settings
      operationId: getDefaultApplicationAdvancedSettings
      description: 'Default values for each setting are available in [our documentation](https://hub.qovery.com/docs/using-qovery/configuration/advanced-settings/)'
      tags:
        - Applications
      responses:
        '200':
          description: Default application advanced settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationAdvancedSettings'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
  /defaultClusterAdvancedSettings:
    get:
      summary: List default cluster advanced settings
      description: 'Default values for each setting are available in [our documentation](https://hub.qovery.com/docs/using-qovery/configuration/cluster-advanced-settings/)'
      operationId: getDefaultClusterAdvancedSettings
      tags:
        - Clusters
      responses:
        '200':
          description: Default cluster advanced settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterAdvancedSettings'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
  /defaultContainerAdvancedSettings:
    get:
      summary: List default container advanced settings
      description: 'Default values for each setting are available in [our documentation](https://hub.qovery.com/docs/using-qovery/configuration/advanced-settings/)'
      operationId: getDefaultContainerAdvancedSettings
      tags:
        - Containers
      responses:
        '200':
          description: Default container advanced settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerAdvancedSettings'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
  /defaultJobAdvancedSettings:
    get:
      summary: List default job advanced settings
      description: 'Default values for each setting is available in [our documentation](https://hub.qovery.com/docs/using-qovery/configuration/advanced-settings/)'
      operationId: getDefaultJobAdvancedSettings
      tags:
        - Jobs
      responses:
        '200':
          description: Default job advanced settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobAdvancedSettings'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
  /defaultHelmAdvancedSettings:
    get:
      summary: List default helm advanced settings
      operationId: getDefaultHelmAdvancedSettings
      tags:
        - Helms
      responses:
        '200':
          description: Default helm advanced settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmAdvancedSettings'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
  '/application/{applicationId}':
    get:
      summary: Get application by ID
      operationId: getApplication
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Main Calls
      responses:
        '200':
          description: Get application by ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit application
      description: |
        - To edit the application you must have the admin permission.
        - For port edition, if you provide a port id, we will update the corresponding port. If you don't we will create a new one. If you remove a port from the payload, we will delete it.
        - For storage edition, if you provide a storage id, we will update the corresponding storage. If you don't we will create a new one. If you remove a storage from the payload, we will delete it.
      operationId: editApplication
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationEditRequest'
      responses:
        '200':
          description: Edit application
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Application name within the environment is already taken
    delete:
      summary: Delete application
      description: To delete the application you must have the admin permission
      operationId: deleteApplication
      parameters:
        - $ref: '#/components/parameters/applicationId'
        - in: query
          name: skipReconcile
          required: false
          schema:
            type: boolean
            default: false
          description: 'When true, skip the pre-destroy apply/reconcile and tear down best-effort, tolerating already-absent resources.'
      tags:
        - Application Main Calls
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/status':
    get:
      summary: Get application status
      operationId: getApplicationStatus
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Main Calls
      responses:
        '200':
          description: Get status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/deploymentRestriction':
    get:
      summary: Get application deployment restrictions
      description: Get application deployment restrictions
      operationId: getApplicationDeploymentRestrictions
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Deployment Restriction
      responses:
        '200':
          description: Get application deployment restrictions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationDeploymentRestrictionResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create an application deployment restriction
      description: Create an application deployment restriction
      operationId: createApplicationDeploymentRestriction
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Deployment Restriction
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationDeploymentRestrictionRequest'
      responses:
        '201':
          description: Added an environment variable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationDeploymentRestriction'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '409':
          description: An application deployment restriction with same properties already exists for this application
  '/application/{applicationId}/deploymentRestriction/{deploymentRestrictionId}':
    put:
      summary: Edit an application deployment restriction
      description: Edit an application deployment restriction
      operationId: editApplicationDeploymentRestriction
      parameters:
        - $ref: '#/components/parameters/applicationId'
        - $ref: '#/components/parameters/deploymentRestrictionId'
      tags:
        - Application Deployment Restriction
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationDeploymentRestrictionRequest'
      responses:
        '200':
          description: Edit an application deployment restriction
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationDeploymentRestriction'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete an application deployment restriction
      description: Delete an application deployment restriction
      operationId: deleteApplicationDeploymentRestriction
      parameters:
        - $ref: '#/components/parameters/applicationId'
        - $ref: '#/components/parameters/deploymentRestrictionId'
      tags:
        - Application Deployment Restriction
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/contributor':
    get:
      summary: List contributors
      operationId: listApplicationContributor
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Main Calls
      responses:
        '200':
          description: List application contributors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/commit':
    get:
      summary: List last commits
      description: Returns list of the last 100 commits made on the repository linked to the application
      operationId: listApplicationCommit
      parameters:
        - $ref: '#/components/parameters/applicationId'
        - $ref: '#/components/parameters/startId'
        - $ref: '#/components/parameters/gitCommitId'
      tags:
        - Application Main Calls
      responses:
        '200':
          description: List commits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommitResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/deploy':
    post:
      summary: Deploy application
      description: You must provide a git commit id
      operationId: deployApplication
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Actions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeployRequest'
      responses:
        '202':
          description: Deploy application
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/application/{applicationId}/uninstall':
    post:
      summary: Uninstall application
      description: |
        Delete the resources of an application but keep the Qovery config.
      operationId: uninstallApplication
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Actions
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties: {}
      responses:
        '202':
          description: 'Delete the compute and data of the service, but keep Qovery configuration'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '204':
          description: No deployment has been triggered
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
      x-stoplight:
        id: vrnx0mllgta48
    parameters:
      - schema:
          type: string
        name: applicationId
        in: path
        required: true
  '/application/{applicationId}/stop':
    post:
      summary: Stop application
      operationId: stopApplication
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Actions
      responses:
        '202':
          description: Application stop has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Application is already stopped or an operation is in progress
  '/application/{applicationId}/redeploy':
    post:
      summary: Redeploy application
      operationId: redeployApplication
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Actions
      responses:
        '202':
          description: Application redeploy has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/application/{applicationId}/restart-service':
    post:
      summary: Reboot application
      operationId: rebootApplication
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Actions
      responses:
        '202':
          description: Application reboot has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/application/{applicationId}/deploymentHistory':
    get:
      summary: List application deploys
      description: 'By default it returns the 20 last results. The response is paginated. In order to request the next page, you can use the startId query parameter. You can also filter by status (FAILED or SUCCESS), and git_commit_id'
      operationId: listApplicationDeploymentHistory
      parameters:
        - $ref: '#/components/parameters/applicationId'
        - $ref: '#/components/parameters/startId'
      tags:
        - Application Deployment History
      responses:
        '200':
          description: List deployment history
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentHistoryPaginatedResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/deploymentHistoryV2':
    get:
      summary: List application deploys
      description: 'By default it returns the 20 last results. The response is paginated. In order to request the next page, you can use the startId query parameter. You can also filter by status (FAILED or SUCCESS), and git_commit_id'
      operationId: listApplicationDeploymentHistoryV2
      parameters:
        - in: query
          name: pageSize
          description: The number of deployments to return in the current page
          schema:
            type: number
            nullable: true
            default: 20
      tags:
        - Application Deployment History
      responses:
        '200':
          description: List deployment history
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentHistoryServicePaginatedResponseListV2'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      x-stoplight:
        id: 59xza5oe7uvet
    parameters:
      - schema:
          type: string
        name: applicationId
        in: path
        required: true
  '/application/{applicationId}/environmentVariable':
    get:
      summary: List environment variables
      operationId: listApplicationEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Environment Variable
      responses:
        '200':
          description: List environment variables
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariableResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Add an environment variable to the application
      description: |
        - Add an environment variable to the application.
      operationId: createApplicationEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentVariableRequest'
      responses:
        '201':
          description: Added an environment variable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/environmentVariable/import':
    post:
      summary: Import variables
      description: 'Import environment variables in a defined scope, with a defined visibility.'
      operationId: importEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VariableImportRequest'
      responses:
        '201':
          description: Import environment variables
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VariableImport'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/environmentVariable/{environmentVariableId}':
    delete:
      summary: Delete an environment variable from an application
      description: |
        - To delete an environment variable from an application you must have the project user permission
        - You can't delete a BUILT_IN variable
        - If you delete a variable having override or alias, the associated override/alias will be deleted as well
      operationId: deleteApplicationEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/applicationId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Application Environment Variable
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit an environment variable belonging to the application
      description: |
        - You can't edit a BUILT_IN variable
        - For an override, you can't edit the key
        - For an alias, you can't edit the value
        - An override can only have a scope lower to the variable it is overriding (hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION)
      operationId: editApplicationEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/applicationId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Application Environment Variable
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentVariableEditRequest'
      responses:
        '200':
          description: Edited the environment variable value
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/environmentVariable/{environmentVariableId}/override':
    post:
      summary: Create an environment variable override at the application level
      description: |
        - Allows you to override at application level an environment variable that has a higher scope.
        - You only have to specify a value in the request body
        - The system will create a new environment variable at application level with the same key as the one corresponding to the variable id in the path
        - The response body will contain the newly created variable
        - Information regarding the overridden_variable will be exposed in the "overridden_variable" field of the newly created variable
      operationId: createApplicationEnvironmentVariableOverride
      parameters:
        - $ref: '#/components/parameters/applicationId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Application Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Value'
      responses:
        '201':
          description: Create variable override
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          description: Can't create an override on a higher scope. Overrides can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/environmentVariable/{environmentVariableId}/alias':
    post:
      summary: Create an environment variable alias at the application level
      description: |
        - Allows you to add an alias at application level on an existing environment variable having higher scope, in order to customize its key.
        - You only have to specify a key in the request body
        - The system will create a new environment variable at application level with the same value as the one corresponding to the variable id in the path
        - The response body will contain the newly created variable
        - Information regarding the aliased_variable will be exposed in the "aliased_variable" field of the newly created variable
        - You can't create an alias on an alias
      operationId: createApplicationEnvironmentVariableAlias
      parameters:
        - $ref: '#/components/parameters/applicationId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Application Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Key'
      responses:
        '201':
          description: Create variable alias
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          description: Can't create an alias on a higher scope. Aliases can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/secret':
    get:
      summary: List application secrets
      description: 'Secrets are like environment variables, but they are secured and can''t be revealed.'
      operationId: listApplicationSecrets
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Secret
      responses:
        '200':
          description: List secrets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecretResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Add a secret to the application
      description: |
        - Add a secret to the application.
      operationId: createApplicationSecret
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Secret
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecretRequest'
      responses:
        '201':
          description: Add a secret
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/secret/{secretId}':
    delete:
      summary: Delete a secret from an application
      description: |
        - To delete a secret you must have the project user permission
        - You can't delete a BUILT_IN secret
        - If you delete a secret having override or alias, the associated override/alias will be deleted as well
      operationId: deleteApplicationSecret
      parameters:
        - $ref: '#/components/parameters/applicationId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Application Secret
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit a secret belonging to the application
      description: |
        - You can't edit a BUILT_IN secret
        - For an override, you can't edit the key
        - For an alias, you can't edit the value
        - An override can only have a scope lower to the secret it is overriding (hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION)
      operationId: editApplicationSecret
      parameters:
        - $ref: '#/components/parameters/applicationId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Application Secret
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecretEditRequest'
      responses:
        '200':
          description: Edited the secret value
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/secret/{secretId}/override':
    post:
      summary: Create a secret override at the application level
      description: |
        - Allows you to override at application level a secret that has a higher scope.
        - You only have to specify a value in the request body
        - The system will create a new secret at application level with the same key as the one corresponding to the secret id in the path
        - The response body will contain the newly created secret
        - Information regarding the overridden_secret will be exposed in the "overridden_secret" field of the newly created secret
      operationId: createApplicationSecretOverride
      parameters:
        - $ref: '#/components/parameters/applicationId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Application Secret
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Value'
      responses:
        '201':
          description: Create secret override
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          description: Can't create an override on a higher scope. Overrides can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/secret/{secretId}/alias':
    post:
      summary: Create a secret alias at the application level
      description: |
        - Allows you to add an alias at application level on an existing secret having higher scope, in order to customize its key.
        - You only have to specify a key in the request body
        - The system will create a new secret at application level with the same value as the one corresponding to the secret id in the path
        - The response body will contain the newly created secret
        - Information regarding the aliased_secret will be exposed in the "aliased_secret" field of the newly created secret
        - You can't create an alias on an alias
      operationId: createApplicationSecretAlias
      parameters:
        - $ref: '#/components/parameters/applicationId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Application Secret
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Key'
      responses:
        '201':
          description: Create secret alias
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          description: Can't create an alias on a higher scope. Aliases can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/customDomain':
    get:
      summary: List application custom domains
      operationId: listApplicationCustomDomain
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Custom Domain
      responses:
        '200':
          description: List custom domains
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomDomainResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Add custom domain to the application.
      description: Add a custom domain to this application in order not to use qovery autogenerated domain
      operationId: createApplicationCustomDomain
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Custom Domain
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomDomainRequest'
      responses:
        '201':
          description: Added application custom domain
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomDomain'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/customDomain/{customDomainId}':
    put:
      summary: Edit a Custom Domain
      description: To edit a Custom Domain you must have the project user permission
      operationId: editCustomDomain
      parameters:
        - $ref: '#/components/parameters/applicationId'
        - $ref: '#/components/parameters/customDomainId'
      tags:
        - Application Custom Domain
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomDomainRequest'
      responses:
        '200':
          description: Edit a CustomDomain
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomDomain'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete a Custom Domain
      description: To delete an CustomDomain you must have the project user permission
      operationId: deleteCustomDomain
      parameters:
        - $ref: '#/components/parameters/applicationId'
        - $ref: '#/components/parameters/customDomainId'
      tags:
        - Application Custom Domain
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/customDomain/{customDomainId}/status':
    get:
      summary: Get Custom Domain status
      operationId: getCustomDomainStatus
      parameters:
        - $ref: '#/components/parameters/applicationId'
        - $ref: '#/components/parameters/customDomainId'
      tags:
        - Application Custom Domain
      responses:
        '200':
          description: Get status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomDomain'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/checkCustomDomain':
    get:
      summary: Check Application Custom Domain
      operationId: checkApplicationCustomDomain
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Custom Domain
      responses:
        '200':
          description: Check Application Custom Domain
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckedCustomDomainsResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/log':
    get:
      summary: List logs
      operationId: listApplicationLog
      description: This will list the last 1000 logs of the application
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Logs
      responses:
        '200':
          description: List logs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LogResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/network':
    get:
      summary: Get Application Network information
      description: Get status of the application network settings.
      operationId: getApplicationNetwork
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Configuration
      responses:
        '200':
          description: Network information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationNetwork'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit Application Network
      description: Edit the Network settings of the application.
      operationId: editApplicationNetwork
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Configuration
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationNetworkRequest'
      responses:
        '201':
          description: Updated application network setting
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationNetwork'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/link':
    get:
      summary: List all URLs of the application
      description: This will return all the custom domains and Qovery autogenerated domain for the given application
      operationId: listApplicationLinks
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Main Calls
      responses:
        '200':
          description: List links
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/advancedSettings':
    get:
      summary: Get advanced settings
      description: |
        Get list and values of the advanced settings of the application.
        Default values for each setting are available in [our documentation](https://hub.qovery.com/docs/using-qovery/configuration/advanced-settings/)
      operationId: getAdvancedSettings
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Configuration
      responses:
        '200':
          description: Advanced settings list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationAdvancedSettings'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit advanced settings
      description: Edit advanced settings by returning table of advanced settings.
      operationId: editAdvancedSettings
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Application Configuration
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationAdvancedSettings'
      responses:
        '201':
          description: Updated advanced settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationAdvancedSettings'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/application/{applicationId}/clone':
    post:
      summary: Clone application
      description: This will create a new application with the same configuration on the targeted environment Id.
      operationId: cloneApplication
      parameters:
        - $ref: '#/components/parameters/applicationId'
      tags:
        - Applications
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloneServiceRequest'
      responses:
        '202':
          description: Application clone has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/container/{containerId}':
    get:
      summary: Get container by ID
      operationId: getContainer
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Main Calls
      responses:
        '200':
          description: Get container by ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit container
      description: |
        - To edit the container you must have the admin permission.
        - For port edition, if you provide a port id, we will update the corresponding port. If you don't we will create a new one. If you remove a port from the payload, we will delete it.
        - For storage edition, if you provide a storage id, we will update the corresponding storage. If you don't we will create a new one. If you remove a storage from the payload, we will delete it.
      operationId: editContainer
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContainerRequest'
      responses:
        '200':
          description: Edit container
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Container name within the environment is already taken
    delete:
      summary: Delete container
      description: To delete the container you must have the admin permission
      operationId: deleteContainer
      parameters:
        - $ref: '#/components/parameters/containerId'
        - in: query
          name: skipReconcile
          required: false
          schema:
            type: boolean
            default: false
          description: 'When true, skip the pre-destroy apply/reconcile and tear down best-effort, tolerating already-absent resources.'
      tags:
        - Container Main Calls
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/status':
    get:
      summary: Get container status
      operationId: getContainerStatus
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Main Calls
      responses:
        '200':
          description: Get status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/deploymentHistory':
    get:
      summary: List container deployments
      description: Returns the 20 last container deployments
      operationId: listContainerDeploymentHistory
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Deployment History
      responses:
        '200':
          description: List deployment history
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/PaginationData'
                  - type: object
                    properties:
                      results:
                        type: array
                        items:
                          $ref: '#/components/schemas/DeploymentHistoryContainer'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/deploymentHistoryV2':
    get:
      summary: List container deployments
      description: Returns the 20 last container deployments
      operationId: listContainerDeploymentHistoryV2
      parameters:
        - $ref: '#/components/parameters/containerId'
        - in: query
          name: pageSize
          description: The number of deployments to return in the current page
          schema:
            type: number
            nullable: true
            default: 20
      tags:
        - Container Deployment History
      responses:
        '200':
          description: List deployment history
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentHistoryServicePaginatedResponseListV2'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      x-stoplight:
        id: qfy5ueb8cyebe
  '/container/{containerId}/advancedSettings':
    get:
      summary: Get advanced settings
      description: |
        Get list and values of the advanced settings of the container.
        Default values for each setting are available in [our documentation](https://hub.qovery.com/docs/using-qovery/configuration/advanced-settings/)
      operationId: getContainerAdvancedSettings
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Configuration
      responses:
        '200':
          description: Advanced settings list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerAdvancedSettings'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit advanced settings
      description: Edit advanced settings by returning table of advanced settings.
      operationId: editContainerAdvancedSettings
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Configuration
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContainerAdvancedSettings'
      responses:
        '201':
          description: Updated advanced settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerAdvancedSettings'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/deploy':
    post:
      summary: Deploy container
      description: You must provide a container image tag
      operationId: deployContainer
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Actions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContainerDeployRequest'
      responses:
        '202':
          description: Deploy container
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/container/{containerId}/uninstall':
    post:
      summary: Uninstall container
      description: Delete the resources of the container but keep Qovery configuration
      operationId: uninstallContainer
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Actions
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties: {}
      responses:
        '202':
          description: 'Delete the compute and data of the service, but keep Qovery configuration'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '204':
          description: No deployment has been triggered
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
      x-stoplight:
        id: tyqhmv3tdihmm
    parameters:
      - schema:
          type: string
        name: containerId
        in: path
        required: true
  '/container/{containerId}/stop':
    post:
      summary: Stop container
      operationId: stopContainer
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Actions
      responses:
        '202':
          description: Container stop has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Container is already stopped or an operation is in progress
  '/container/{containerId}/redeploy':
    post:
      summary: Redeploy container
      operationId: redeployContainer
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Actions
      responses:
        '202':
          description: Container redeploy has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/container/{containerId}/restart-service':
    post:
      summary: Reboot container
      operationId: rebootContainer
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Actions
      responses:
        '202':
          description: Container reboot has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/container/{containerId}/environmentVariable':
    get:
      summary: List environment variables
      operationId: listContainerEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Environment Variable
      responses:
        '200':
          description: List environment variables
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariableResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Add an environment variable to the container
      description: |
        - Add an environment variable to the container.
      operationId: createContainerEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentVariableRequest'
      responses:
        '201':
          description: Added an environment variable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/environmentVariable/import':
    post:
      summary: Import variables
      description: 'Import environment variables in a defined scope, with a defined visibility.'
      operationId: importContainerEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VariableImportRequest'
      responses:
        '201':
          description: Import environment variables
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VariableImport'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/environmentVariable/{environmentVariableId}':
    delete:
      summary: Delete an environment variable from a container
      description: |
        - To delete an environment variable from an container you must have the project user permission
        - You can't delete a BUILT_IN variable
        - If you delete a variable having override or alias, the associated override/alias will be deleted as well
      operationId: deleteContainerEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/containerId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Container Environment Variable
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit an environment variable belonging to the container
      description: |
        - You can't edit a BUILT_IN variable
        - For an override, you can't edit the key
        - For an alias, you can't edit the value
        - An override can only have a scope lower to the variable it is overriding (hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > CONTAINER)
      operationId: editContainerEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/containerId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Container Environment Variable
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentVariableEditRequest'
      responses:
        '200':
          description: Edited the environment variable value
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/environmentVariable/{environmentVariableId}/override':
    post:
      summary: Create an environment variable override at the container level
      description: |
        - Allows you to override at container level an environment variable that has a higher scope.
        - You only have to specify a value in the request body
        - The system will create a new environment variable at container level with the same key as the one corresponding to the variable id in the path
        - The response body will contain the newly created variable
        - Information regarding the overridden_variable will be exposed in the "overridden_variable" field of the newly created variable
      operationId: createContainerEnvironmentVariableOverride
      parameters:
        - $ref: '#/components/parameters/containerId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Container Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Value'
      responses:
        '201':
          description: Create variable override
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          description: Can't create an override on a higher scope. Overrides can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > CONTAINER
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/environmentVariable/{environmentVariableId}/alias':
    post:
      summary: Create an environment variable alias at the container level
      description: |
        - Allows you to add an alias at container level on an existing environment variable having higher scope, in order to customize its key.
        - You only have to specify a key in the request body
        - The system will create a new environment variable at container level with the same value as the one corresponding to the variable id in the path
        - The response body will contain the newly created variable
        - Information regarding the aliased_variable will be exposed in the "aliased_variable" field of the newly created variable
        - You can't create an alias on an alias
      operationId: createContainerEnvironmentVariableAlias
      parameters:
        - $ref: '#/components/parameters/containerId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Container Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Key'
      responses:
        '201':
          description: Create variable alias
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          description: Can't create an alias on a higher scope. Aliases can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > CONTAINER
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/secret':
    get:
      summary: List container secrets
      description: 'Secrets are like environment variables, but they are secured and can''t be revealed.'
      operationId: listContainerSecrets
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Secret
      responses:
        '200':
          description: List secrets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecretResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Add a secret to the container
      description: |
        - Add a secret to the container.
      operationId: createContainerSecret
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Secret
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecretRequest'
      responses:
        '201':
          description: Add a secret
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/secret/{secretId}':
    delete:
      summary: Delete a secret from an container
      description: |
        - To delete a secret you must have the project user permission
        - You can't delete a BUILT_IN secret
        - If you delete a secret having override or alias, the associated override/alias will be deleted as well
      operationId: deleteContainerSecret
      parameters:
        - $ref: '#/components/parameters/containerId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Container Secret
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit a secret belonging to the container
      description: |
        - You can't edit a BUILT_IN secret
        - For an override, you can't edit the key
        - For an alias, you can't edit the value
        - An override can only have a scope lower to the secret it is overriding (hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > CONTAINER)
      operationId: editContainerSecret
      parameters:
        - $ref: '#/components/parameters/containerId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Container Secret
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecretEditRequest'
      responses:
        '200':
          description: Edited the secret value
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/secret/{secretId}/override':
    post:
      summary: Create a secret override at the container level
      description: |
        - Allows you to override at container level a secret that has a higher scope.
        - You only have to specify a value in the request body
        - The system will create a new secret at container level with the same key as the one corresponding to the secret id in the path
        - The response body will contain the newly created secret
        - Information regarding the overridden_secret will be exposed in the "overridden_secret" field of the newly created secret
      operationId: createContainerSecretOverride
      parameters:
        - $ref: '#/components/parameters/containerId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Container Secret
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Value'
      responses:
        '201':
          description: Create secret override
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          description: Can't create an override on a higher scope. Overrides can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/secret/{secretId}/alias':
    post:
      summary: Create a secret alias at the container level
      description: |
        - Allows you to add an alias at container level on an existing secret having higher scope, in order to customize its key.
        - You only have to specify a key in the request body
        - The system will create a new secret at container level with the same value as the one corresponding to the secret id in the path
        - The response body will contain the newly created secret
        - Information regarding the aliased_secret will be exposed in the "aliased_secret" field of the newly created secret
        - You can't create an alias on an alias
      operationId: createContainerSecretAlias
      parameters:
        - $ref: '#/components/parameters/containerId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Container Secret
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Key'
      responses:
        '201':
          description: Create secret alias
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          description: Can't create an alias on a higher scope. Aliases can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/customDomain':
    get:
      summary: List container custom domains
      operationId: listContainerCustomDomain
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Custom Domain
      responses:
        '200':
          description: List custom domains
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomDomainResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Add custom domain to the container.
      description: Add a custom domain to this container in order not to use qovery autogenerated domain
      operationId: createContainerCustomDomain
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Custom Domain
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomDomainRequest'
      responses:
        '201':
          description: Added container custom domain
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomDomain'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/customDomain/{customDomainId}':
    put:
      summary: Edit a Custom Domain
      description: To edit a Custom Domain  you must have the project user permission
      operationId: editContainerCustomDomain
      parameters:
        - $ref: '#/components/parameters/containerId'
        - $ref: '#/components/parameters/customDomainId'
      tags:
        - Container Custom Domain
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomDomainRequest'
      responses:
        '200':
          description: Edit a CustomDomain
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomDomain'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete a Custom Domain
      description: To delete an CustomDomain you must have the project user permission
      operationId: deleteContainerCustomDomain
      parameters:
        - $ref: '#/components/parameters/containerId'
        - $ref: '#/components/parameters/customDomainId'
      tags:
        - Container Custom Domain
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/customDomain/{customDomainId}/status':
    get:
      summary: Get Custom Domain status
      operationId: getContainerCustomDomainStatus
      parameters:
        - $ref: '#/components/parameters/containerId'
        - $ref: '#/components/parameters/customDomainId'
      tags:
        - Container Custom Domain
      responses:
        '200':
          description: Get status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomDomain'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/checkCustomDomain':
    get:
      summary: Check Container Custom Domain
      operationId: checkContainerCustomDomain
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Custom Domain
      responses:
        '200':
          description: Check Container Custom Domain
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckedCustomDomainsResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/log':
    get:
      summary: List logs
      operationId: listContainerLog
      description: This will list the last 1000 logs of the container
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Logs
      responses:
        '200':
          description: List logs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LogResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/network':
    get:
      summary: Get Container Network information
      description: Get status of the container network settings.
      operationId: getContainerNetwork
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Configuration
      responses:
        '200':
          description: Network information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerNetwork'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit Container Network
      description: Edit the Network settings of the container.
      operationId: editContainerNetwork
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Configuration
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContainerNetworkRequest'
      responses:
        '201':
          description: Updated container network setting
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerNetwork'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/link':
    get:
      summary: List all URLs of the container
      description: This will return all the custom domains and Qovery autogenerated domain for the given container
      operationId: listContainerLinks
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Container Main Calls
      responses:
        '200':
          description: List links
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/container/{containerId}/clone':
    post:
      summary: Clone container
      description: This will create a new container with the same configuration on the targeted environment Id.
      operationId: cloneContainer
      parameters:
        - $ref: '#/components/parameters/containerId'
      tags:
        - Containers
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloneServiceRequest'
      responses:
        '202':
          description: Container clone has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/environment/{environmentId}/database':
    get:
      summary: List environment databases
      operationId: listDatabase
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Databases
      responses:
        '200':
          description: List databases
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatabaseResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create a database
      operationId: createDatabase
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Databases
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DatabaseRequest'
      responses:
        '201':
          description: 'Create database '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Database'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Database name within the environment is already taken
  '/environment/{environmentId}/database/status':
    get:
      summary: List all environment databases statuses
      description: Returns a list of databases with only their id and status.
      operationId: getEnvironmentDatabaseStatus
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Databases
      responses:
        '200':
          description: Get status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReferenceObjectStatusResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/database/{databaseId}':
    get:
      summary: Get database by ID
      operationId: getDatabase
      parameters:
        - $ref: '#/components/parameters/databaseId'
      tags:
        - Database Main Calls
      responses:
        '200':
          description: Get database  by ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Database'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: 'Edit a database '
      description: To edit a database  you must have the admin permission
      operationId: editDatabase
      parameters:
        - $ref: '#/components/parameters/databaseId'
      tags:
        - Database Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DatabaseEditRequest'
      responses:
        '200':
          description: 'Edit a database '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Database'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Database  name within the environment is already taken
    delete:
      summary: 'Delete a database '
      description: To delete a database you must have the admin permission
      operationId: deleteDatabase
      parameters:
        - $ref: '#/components/parameters/databaseId'
        - in: query
          name: skipReconcile
          required: false
          schema:
            type: boolean
            default: false
          description: 'When true, skip the pre-destroy apply/reconcile and tear down best-effort, tolerating already-absent resources.'
      tags:
        - Database Main Calls
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/database/{databaseId}/status':
    get:
      summary: Get database status
      operationId: getDatabaseStatus
      parameters:
        - $ref: '#/components/parameters/databaseId'
      tags:
        - Database Main Calls
      responses:
        '200':
          description: Get status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/database/{databaseId}/version':
    get:
      summary: List eligible versions for the database
      operationId: listDatabaseVersion
      parameters:
        - $ref: '#/components/parameters/databaseId'
      tags:
        - Database Main Calls
      responses:
        '200':
          description: List eligible versions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VersionResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/database/{databaseId}/masterCredentials':
    get:
      summary: Get master credentials of the database
      operationId: getDatabaseMasterCredentials
      parameters:
        - $ref: '#/components/parameters/databaseId'
      tags:
        - Database Main Calls
      responses:
        '200':
          description: get credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Credentials'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit database  master credentials
      operationId: editDatabaseCredentials
      parameters:
        - $ref: '#/components/parameters/databaseId'
      tags:
        - Database Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CredentialsRequest'
      responses:
        '200':
          description: Edit database credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Credentials'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/database/{databaseId}/application':
    get:
      summary: List applications using the database
      operationId: listDatabaseApplication
      parameters:
        - $ref: '#/components/parameters/databaseId'
      tags:
        - Database Application
      responses:
        '200':
          description: List linked applications
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/database/{databaseId}/application/{targetApplicationId}':
    delete:
      summary: 'Remove an application from this database '
      operationId: removeApplicationFromDatabase
      parameters:
        - $ref: '#/components/parameters/databaseId'
        - $ref: '#/components/parameters/targetApplicationId'
      tags:
        - Database Application
      responses:
        '204':
          $ref: '#/components/responses/204'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/database/{databaseId}/redeploy':
    post:
      summary: Redeploy database
      operationId: redeployDatabase
      parameters:
        - $ref: '#/components/parameters/databaseId'
        - in: query
          name: applyImmediately
          schema:
            type: boolean
          description: Apply immediately regardless of the maintenance window
          required: false
      tags:
        - Database Actions
      responses:
        '202':
          description: Database redeploy has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/database/{databaseId}/restart-service':
    post:
      summary: Retart database
      operationId: rebootDatabase
      parameters:
        - $ref: '#/components/parameters/databaseId'
      tags:
        - Database Actions
      responses:
        '202':
          description: Database reboot has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/database/{databaseId}/stop':
    post:
      summary: Stop database
      operationId: stopDatabase
      parameters:
        - $ref: '#/components/parameters/databaseId'
      tags:
        - Database Actions
      responses:
        '202':
          description: Database  stop has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/database/{databaseId}/deploy':
    post:
      summary: 'Deploy database '
      operationId: deployDatabase
      parameters:
        - $ref: '#/components/parameters/databaseId'
        - in: query
          name: applyImmediately
          schema:
            type: boolean
          description: Apply immediately regardless of the maintenance window
          required: false
      tags:
        - Database Actions
      responses:
        '202':
          description: 'Deploy database '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/database/{databaseId}/uninstall':
    post:
      summary: Uninstall database
      operationId: uninstallDatabase
      parameters:
        - $ref: '#/components/parameters/databaseId'
      tags:
        - Database Actions
      responses:
        '202':
          description: 'Delete the compute and data of the service, but keep Qovery configuration'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '204':
          description: No deployment has been triggered
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
      x-stoplight:
        id: dn8xf9tcthfqn
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties: {}
    parameters:
      - schema:
          type: string
        name: databaseId
        in: path
        required: true
  '/database/{databaseId}/deploymentHistory':
    get:
      summary: List database deploys
      description: By default it returns the 20 last results. The response is paginated.
      operationId: listDatabaseDeploymentHistory
      parameters:
        - $ref: '#/components/parameters/databaseId'
        - $ref: '#/components/parameters/startId'
      tags:
        - Database Deployment History
      responses:
        '200':
          description: List deployment history
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/PaginationData'
                  - type: object
                    properties:
                      results:
                        type: array
                        items:
                          $ref: '#/components/schemas/DeploymentHistoryDatabase'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/database/{databaseId}/deploymentHistoryV2':
    get:
      summary: List database deploys
      description: By default it returns the 20 last results. The response is paginated.
      operationId: listDatabaseDeploymentHistoryV2
      parameters:
        - in: query
          name: pageSize
          description: The number of deployments to return in the current page
          schema:
            type: number
            nullable: true
            default: 20
      tags:
        - Database Deployment History
      responses:
        '200':
          description: List deployment history
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentHistoryServicePaginatedResponseListV2'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      x-stoplight:
        id: mzftpr17opgzp
    parameters:
      - schema:
          type: string
          format: uuid
        name: databaseId
        in: path
        required: true
  '/database/{databaseId}/backup':
    get:
      summary: List database  backups
      description: 'By default it returns the 20 last results. The response is paginated. In order to request the next page, you can use the startId query parameter'
      operationId: listDatabaseBackup
      parameters:
        - $ref: '#/components/parameters/databaseId'
        - $ref: '#/components/parameters/startId'
      tags:
        - Backups
      responses:
        '200':
          description: List backups
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BackupPaginatedResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: 'Add a backup to the Database '
      operationId: addBackupDatabase
      parameters:
        - $ref: '#/components/parameters/databaseId'
      tags:
        - Backups
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BackupRequest'
      responses:
        '201':
          description: Added backup
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Backup'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/database/{databaseId}/backup/{backupId}':
    delete:
      summary: Remove database  backup
      operationId: removeDatabaseBackup
      parameters:
        - $ref: '#/components/parameters/databaseId'
        - $ref: '#/components/parameters/backupId'
      tags:
        - Backups
      responses:
        '204':
          $ref: '#/components/responses/204'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/database/{databaseId}/clone':
    post:
      summary: Clone database
      description: This will create a new database with the same configuration on the targeted environment Id.
      operationId: cloneDatabase
      parameters:
        - $ref: '#/components/parameters/databaseId'
      tags:
        - Databases
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloneServiceRequest'
      responses:
        '202':
          description: Database clone has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Database'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  /account:
    get:
      summary: Get Account information
      operationId: getAccountInformation
      tags:
        - Account Info
      responses:
        '200':
          description: Get account info
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountInfo'
        '401':
          $ref: '#/components/responses/401'
    put:
      summary: Edit account information
      operationId: editAccountInformation
      tags:
        - Account Info
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountInfoEditRequest'
      responses:
        '200':
          description: Edit application
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountInfo'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
  /account/gitAuthProvider:
    get:
      deprecated: true
      summary: Get git provider accounts
      operationId: getGitProviderAccount
      tags:
        - Git repositories
      responses:
        '200':
          description: Get account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitAuthProviderResponseList'
        '401':
          $ref: '#/components/responses/401'
  /account/github/repository:
    get:
      deprecated: true
      summary: Get github repositories of the connected user
      operationId: getGithubRepositories
      tags:
        - Git repositories
      responses:
        '200':
          description: Get github repositories
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitRepositoryResponseList'
        '401':
          $ref: '#/components/responses/401'
  /account/github/repository/branch:
    get:
      deprecated: true
      summary: Get github branches of the specified repository
      operationId: getGithubRepositoryBranches
      tags:
        - Git repositories
      parameters:
        - in: query
          name: name
          schema:
            type: string
          description: The name of the repository where to retrieve the branches
      responses:
        '200':
          description: Get github repository branches
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitRepositoryBranchResponseList'
        '401':
          $ref: '#/components/responses/401'
  /account/gitlab/repository:
    get:
      deprecated: true
      summary: Get gitlab repositories of the connected user
      operationId: getGitlabRepositories
      tags:
        - Git repositories
      responses:
        '200':
          description: Get gitlab repositories
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitRepositoryResponseList'
        '401':
          $ref: '#/components/responses/401'
  /account/gitlab/repository/branch:
    get:
      deprecated: true
      summary: Get gitlab branches of the specified repository
      operationId: getGitlabRepositoryBranches
      tags:
        - Git repositories
      parameters:
        - in: query
          name: name
          schema:
            type: string
          description: The name of the repository to retrieve the branches
      responses:
        '200':
          description: Get gitlab repository branches
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitRepositoryBranchResponseList'
        '401':
          $ref: '#/components/responses/401'
  /account/bitbucket/repository:
    get:
      deprecated: true
      summary: Get bitbucket repositories of the connected user
      operationId: getBitbucketRepositories
      tags:
        - Git repositories
      responses:
        '200':
          description: Get bitbucket repositories
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitRepositoryResponseList'
        '401':
          $ref: '#/components/responses/401'
  /account/bitbucket/repository/branch:
    get:
      deprecated: true
      summary: Get bitbucket branches of the specified repository
      operationId: getBitbucketRepositoryBranches
      tags:
        - Git repositories
      parameters:
        - in: query
          name: name
          schema:
            type: string
          description: The name of the repository where to retrieve the branches
      responses:
        '200':
          description: Get bitbucket repository branches
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitRepositoryBranchResponseList'
        '401':
          $ref: '#/components/responses/401'
  /account/referral:
    get:
      summary: Get your referral information
      operationId: getAccountReferral
      tags:
        - Referral & Rewards
      responses:
        '200':
          description: Get referral info
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Referral'
        '401':
          $ref: '#/components/responses/401'
  /account/rewardClaim:
    post:
      summary: Claim a reward
      description: A same code can be claimed only 3 times at max
      operationId: postAccountRewardClaim
      tags:
        - Referral & Rewards
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RewardClaim'
      responses:
        '200':
          description: Claim reward
  /admin/userSignUp:
    get:
      summary: Get Sign up information
      description: Retrieve the Sign Up information of the user
      operationId: getUserSignUp
      tags:
        - User Sign Up
      responses:
        '200':
          description: 'If a previous sign up request for the same user has been found, the information is returned in the payload'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignUp'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Send Sign Up request
      description: Send a Sign Up request containing the user information
      operationId: createUserSignUp
      tags:
        - User Sign Up
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignUpRequest'
      responses:
        '200':
          description: Sign up request stored
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/helm':
    get:
      summary: List helms
      operationId: listHelms
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - $ref: '#/paths/~1environment~1%7BenvironmentId%7D~1job/get/parameters/1'
      tags:
        - Helms
      responses:
        '200':
          description: List helms
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create a helm
      operationId: createHelm
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Helms
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HelmRequest'
      responses:
        '201':
          description: Create helm
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Helm name within the environment is already taken
  '/environment/{environmentId}/helmDefaultValues':
    post:
      summary: Get helm default values
      operationId: createHelmDefaultValues
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Helms
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HelmDefaultValuesRequest'
      responses:
        '201':
          description: helm values
          content:
            text/plain:
              schema:
                type: string
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/helm/status':
    get:
      summary: List all environment helm statuses
      description: Returns a list of helms with only their id and status.
      operationId: getEnvironmentHelmStatus
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Helms
      responses:
        '200':
          description: Get status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReferenceObjectStatusResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/helm/{helmId}':
    get:
      summary: Get helm by ID
      operationId: getHelm
      parameters:
        - $ref: '#/components/parameters/helmId'
      tags:
        - Helm Main Calls
      responses:
        '200':
          description: Get helm by ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit helm
      description: |
        - To edit the helm you must have the admin permission.
      operationId: editHelm
      parameters:
        - $ref: '#/components/parameters/helmId'
      tags:
        - Helm Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HelmRequest'
      responses:
        '200':
          description: Edit helm
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Helm name within the environment is already taken
    delete:
      summary: Delete helm
      description: To delete the helm you must have the admin permission
      operationId: deleteHelm
      parameters:
        - $ref: '#/components/parameters/helmId'
        - in: query
          name: skipReconcile
          required: false
          schema:
            type: boolean
            default: false
          description: 'When true, skip the pre-destroy apply/reconcile and tear down best-effort, tolerating already-absent resources.'
      tags:
        - Helm Main Calls
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/helm/{helmId}/commit':
    get:
      summary: List last helm commits
      description: Returns list of the last 100 commits made on the repository linked to helm
      operationId: listHelmCommit
      parameters:
        - $ref: '#/components/parameters/helmId'
        - $ref: '#/components/parameters/helmOf'
      tags:
        - Helm Main Calls
      responses:
        '200':
          description: List Helm commits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommitResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/helm/{helmId}/advancedSettings':
    get:
      summary: Get advanced settings
      description: Get list and values of the advanced settings of the helm.
      operationId: getHelmAdvancedSettings
      parameters:
        - $ref: '#/components/parameters/helmId'
      tags:
        - Helm Configuration
      responses:
        '200':
          description: Advanced settings list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmAdvancedSettings'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit advanced settings
      description: Edit advanced settings by returning table of advanced settings.
      operationId: editHelmAdvancedSettings
      parameters:
        - $ref: '#/components/parameters/helmId'
      tags:
        - Helm Configuration
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HelmAdvancedSettings'
      responses:
        '201':
          description: Updated advanced settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmAdvancedSettings'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/helm/{helmId}/deploy':
    post:
      summary: Deploy helm
      description: You must provide a git commit id or a helm version depending on the source location of your code (git vs helm repository).
      operationId: deployHelm
      parameters:
        - $ref: '#/components/parameters/helmId'
        - name: forceEvent
          in: query
          required: false
          description: |
            When filled, it indicates the target event to be deployed.  
            If the concerned helm hasn't the target event provided, the helm won't be deployed.
          schema:
            $ref: '#/components/schemas/HelmForceEvent'
      tags:
        - Helm Actions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HelmDeployRequest'
      responses:
        '202':
          description: Deploy helm
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/helm/{helmId}/uninstall':
    post:
      summary: Uninstall helm
      description: Delete the resources of the helm but keep Qovery configuration
      operationId: uninstallHelm
      parameters:
        - $ref: '#/components/parameters/helmId'
      tags:
        - Helm Actions
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        '202':
          description: 'Delete the compute and data of the service, but keep Qovery configuration'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '204':
          description: No deployment has been triggered
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
      x-stoplight:
        id: cdps3bcv0l0wa
    parameters:
      - schema:
          type: string
        name: helmId
        in: path
        required: true
  '/helm/{helmId}/redeploy':
    post:
      summary: Redeploy helm
      operationId: redeployHelm
      parameters:
        - $ref: '#/components/parameters/helmId'
        - name: forceEvent
          in: query
          required: false
          description: |
            When filled, it indicates the target event to be deployed.  
            If the concerned helm hasn't the target event provided, the helm won't be deployed.
          schema:
            $ref: '#/components/schemas/HelmForceEvent'
      tags:
        - Helm Actions
      responses:
        '202':
          description: Helm redeploy has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/helm/{helmId}/stop':
    post:
      summary: Stop helm
      operationId: stopHelm
      parameters:
        - $ref: '#/components/parameters/helmId'
      tags:
        - Helm Actions
      responses:
        '202':
          description: Helm stop has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Helm is already stopped or an operation is in progress
  '/helm/{helmId}/status':
    get:
      summary: Get helm status
      operationId: getHelmStatus
      parameters:
        - $ref: '#/components/parameters/helmId'
      tags:
        - Helm Main Calls
      responses:
        '200':
          description: Get status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/helm/{helmId}/deploymentHistory':
    get:
      summary: List helm deployments
      description: Returns the 20 last helm deployments
      operationId: listHelmDeploymentHistory
      parameters:
        - $ref: '#/components/parameters/helmId'
      tags:
        - Helm Deployment History
      responses:
        '200':
          description: List deployment history
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/PaginationData'
                  - type: object
                    properties:
                      results:
                        type: array
                        items:
                          $ref: '#/components/schemas/DeploymentHistoryHelmResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/helm/{helmId}/deploymentHistoryV2':
    get:
      summary: List helm deployments
      description: Returns the 20 last helm deployments
      operationId: listHelmDeploymentHistoryV2
      parameters:
        - in: query
          name: pageSize
          description: The number of deployments to return in the current page
          schema:
            type: number
            nullable: true
            default: 20
      tags:
        - Helm Deployment History
      responses:
        '200':
          description: List deployment history
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentHistoryServicePaginatedResponseListV2'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      x-stoplight:
        id: fn9qd5qn7dhdv
    parameters:
      - schema:
          type: string
          format: uuid
        name: helmId
        in: path
        required: true
  '/helm/{helmId}/deploymentRestriction':
    get:
      summary: Get helm deployment restrictions
      description: Get helm deployment restrictions
      operationId: getHelmDeploymentRestrictions
      parameters:
        - $ref: '#/components/parameters/helmId'
      tags:
        - Helm Deployment Restriction
      responses:
        '200':
          description: Get helm deployment restrictions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmDeploymentRestrictionResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create a helm deployment restriction
      description: Create a helm deployment restriction
      operationId: createHelmDeploymentRestriction
      parameters:
        - $ref: '#/components/parameters/helmId'
      tags:
        - Helm Deployment Restriction
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HelmDeploymentRestrictionRequest'
      responses:
        '201':
          description: Added an helm deployment restriction
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmDeploymentRestrictionResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '409':
          description: A Helm deployment restriction with same properties already exists for this helm
  '/helm/{helmId}/deploymentRestriction/{deploymentRestrictionId}':
    put:
      summary: Edit a helm deployment restriction
      description: Edit a helm deployment restriction
      operationId: editHelmDeploymentRestriction
      parameters:
        - $ref: '#/components/parameters/helmId'
        - $ref: '#/components/parameters/deploymentRestrictionId'
      tags:
        - Helm Deployment Restriction
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HelmDeploymentRestrictionRequest'
      responses:
        '200':
          description: Edit a helm deployment restriction
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmDeploymentRestrictionResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete a helm deployment restriction
      description: Delete a helm deployment restriction
      operationId: deleteHelmDeploymentRestriction
      parameters:
        - $ref: '#/components/parameters/helmId'
        - $ref: '#/components/parameters/deploymentRestrictionId'
      tags:
        - Helm Deployment Restriction
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/helm/{helmId}/clone':
    post:
      summary: Clone helm
      description: This will create a new helm with the same configuration on the targeted environment Id.
      operationId: cloneHelm
      parameters:
        - $ref: '#/components/parameters/helmId'
      tags:
        - Helms
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloneServiceRequest'
      responses:
        '202':
          description: Helm clone has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/helm/{helmId}/link':
    get:
      summary: List all URLs of the helm
      description: This will return all the custom domains and Qovery autogenerated domain for the given helm
      operationId: listHelmLinks
      parameters:
        - $ref: '#/components/parameters/helmId'
      tags:
        - Helm Main Calls
      responses:
        '200':
          description: List links
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/helm/{helmId}/customDomain':
    get:
      summary: List helm custom domains
      description: List the custom domains of this helm
      operationId: listHelmCustomDomain
      parameters:
        - $ref: '#/components/parameters/helmId'
      tags:
        - Helm Custom Domain
      responses:
        '200':
          description: List custom domains
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomDomainResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Add custom domain to the helm.
      description: Add a custom domain to this helm in order not to use qovery autogenerated domain
      operationId: createHelmCustomDomain
      parameters:
        - $ref: '#/components/parameters/helmId'
      tags:
        - Helm Custom Domain
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomDomainRequest'
      responses:
        '201':
          description: Added helm custom domain
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomDomain'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/helm/{helmId}/customDomain/{customDomainId}':
    put:
      summary: Edit a Custom Domain
      description: To edit a Custom Domain you must have the project user permission
      operationId: editHelmCustomDomain
      parameters:
        - $ref: '#/components/parameters/helmId'
        - $ref: '#/components/parameters/customDomainId'
      tags:
        - Helm Custom Domain
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomDomainRequest'
      responses:
        '200':
          description: Edit a CustomDomain
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomDomain'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete a Custom Domain
      description: To delete an CustomDomain you must have the project user permission
      operationId: deleteHelmCustomDomain
      parameters:
        - $ref: '#/components/parameters/helmId'
        - $ref: '#/components/parameters/customDomainId'
      tags:
        - Helm Custom Domain
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    get:
      summary: Get a Custom Domain
      description: Get a custom domain
      operationId: getHelmCustomDomain
      parameters:
        - $ref: '#/components/parameters/helmId'
        - $ref: '#/components/parameters/customDomainId'
      tags:
        - Helm Custom Domain
      responses:
        '200':
          description: Get a CustomDomain
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomDomain'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/helm/{helmId}/checkCustomDomain':
    get:
      summary: Check Helm Custom Domain
      operationId: checkHelmCustomDomain
      parameters:
        - $ref: '#/components/parameters/helmId'
      tags:
        - Helm Custom Domain
      responses:
        '200':
          description: Check Helm Custom Domain
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckedCustomDomainsResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/checkDockerfile':
    post:
      summary: Check dockerfile configuration is correct
      operationId: checkDockerfile
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DockerfileCheckRequest'
      responses:
        '200':
          description: Information about the dockerfile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockerfileCheckResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/checkHelmRepository':
    post:
      summary: Check helm repository configuration is correct
      operationId: checkHelmRepository
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HelmCheckRequest'
      responses:
        '200':
          description: Information about the helm repository
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmCheckResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/checkContainerImage':
    post:
      summary: Check container image configuration is correct
      operationId: checkContainerImage
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContainerImageCheckRequest'
      responses:
        '200':
          description: Information about the image
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerImageCheckResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/checkGitFile':
    post:
      summary: Check git file configuration is correct
      operationId: checkGitFile
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GitFileCheckRequest'
      responses:
        '200':
          description: Information about the image
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitFileCheckResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/job':
    get:
      summary: List jobs
      operationId: listJobs
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - name: toUpdate
          in: query
          description: return (or not) results that must be updated
          required: false
          schema:
            type: boolean
            default: false
      tags:
        - Jobs
      responses:
        '200':
          description: List jobs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create a job
      operationId: createJob
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Jobs
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobRequest'
      responses:
        '201':
          description: Create job
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Job name within the environment is already taken
  '/environment/{environmentId}/job/status':
    get:
      summary: List all environment job statuses
      description: Returns a list of jobs with only their id and status.
      operationId: getEnvironmentJobStatus
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Jobs
      responses:
        '200':
          description: Get status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReferenceObjectStatusResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/job/{jobId}':
    get:
      summary: Get job by ID
      operationId: getJob
      parameters:
        - $ref: '#/components/parameters/jobId'
      tags:
        - Job Main Calls
      responses:
        '200':
          description: Get job by ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit job
      description: |
        - To edit the job you must have the admin permission.
      operationId: editJob
      parameters:
        - $ref: '#/components/parameters/jobId'
      tags:
        - Job Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobRequest'
      responses:
        '200':
          description: Edit job
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Job name within the environment is already taken
    delete:
      summary: Delete job
      description: To delete the job you must have the admin permission
      operationId: deleteJob
      parameters:
        - $ref: '#/components/parameters/jobId'
        - in: query
          name: skipReconcile
          required: false
          schema:
            type: boolean
            default: false
          description: 'When true, skip the pre-destroy apply/reconcile and tear down best-effort, tolerating already-absent resources.'
      tags:
        - Job Main Calls
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/job/{jobId}/advancedSettings':
    get:
      summary: Get advanced settings
      description: |
        Get list and values of the advanced settings of the job.
        Default values for each setting are available in [our documentation](https://hub.qovery.com/docs/using-qovery/configuration/advanced-settings/)
      operationId: getJobAdvancedSettings
      parameters:
        - $ref: '#/components/parameters/jobId'
      tags:
        - Job Configuration
      responses:
        '200':
          description: Advanced settings list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobAdvancedSettings'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit advanced settings
      description: Edit advanced settings by returning table of advanced settings.
      operationId: editJobAdvancedSettings
      parameters:
        - $ref: '#/components/parameters/jobId'
      tags:
        - Job Configuration
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobAdvancedSettings'
      responses:
        '201':
          description: Updated advanced settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobAdvancedSettings'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/job/{jobId}/deploy':
    post:
      summary: Deploy job
      description: You must provide a git commit id or an image tag depending on the source location of your code (git vs image repository).
      operationId: deployJob
      parameters:
        - $ref: '#/components/parameters/jobId'
        - name: forceEvent
          in: query
          required: false
          description: |
            When filled, it indicates the target event to be deployed.  
            If the concerned job hasn't the target event provided, the job won't be deployed.
          schema:
            $ref: '#/components/schemas/JobForceEvent'
      tags:
        - Job Actions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobDeployRequest'
      responses:
        '202':
          description: Deploy job
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/job/{jobId}/uninstall':
    post:
      summary: Uninstall job
      description: Delete the resources of the job but keep Qovery configuration
      operationId: uninstallJob
      parameters:
        - $ref: '#/components/parameters/jobId'
      tags:
        - Job Actions
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties: {}
      responses:
        '202':
          description: 'Delete the compute and data of the service, but keep Qovery configuration'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '204':
          description: No deployment has been triggered
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
      x-stoplight:
        id: s4xgct6hdxymt
    parameters:
      - schema:
          type: string
        name: jobId
        in: path
        required: true
  '/job/{jobId}/redeploy':
    post:
      summary: Redeploy job
      operationId: redeployJob
      parameters:
        - $ref: '#/components/parameters/jobId'
        - name: forceEvent
          in: query
          required: false
          description: |
            When filled, it indicates the target event to be deployed.  
            If the concerned job hasn't the target event provided, the job won't be deployed.
          schema:
            $ref: '#/components/schemas/JobForceEvent'
      tags:
        - Job Actions
      responses:
        '202':
          description: Job redeploy has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/terraform/{terraformId}/redeploy':
    post:
      summary: Redeploy terraform
      operationId: redeployTerraform
      responses:
        '202':
          description: Terraform redeploy has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
      x-stoplight:
        id: 69fa5itbg5w43
      tags:
        - Terraform Actions
    parameters:
      - schema:
          type: string
        name: terraformId
        in: path
        required: true
  '/job/{jobId}/stop':
    post:
      summary: Stop job
      operationId: stopJob
      parameters:
        - $ref: '#/components/parameters/jobId'
      tags:
        - Job Actions
      responses:
        '202':
          description: Job stop has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Job is already stopped or an operation is in progress
  '/job/{jobId}/status':
    get:
      summary: Get job status
      operationId: getJobStatus
      parameters:
        - $ref: '#/components/parameters/jobId'
      tags:
        - Job Main Calls
      responses:
        '200':
          description: Get status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/job/{jobId}/deploymentHistory':
    get:
      summary: List job deployments
      description: Returns the 20 last job deployments
      operationId: listJobDeploymentHistory
      parameters:
        - $ref: '#/components/parameters/jobId'
      tags:
        - Job Deployment History
      responses:
        '200':
          description: List deployment history
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/PaginationData'
                  - type: object
                    properties:
                      results:
                        type: array
                        items:
                          $ref: '#/components/schemas/DeploymentHistoryJobResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/job/{jobId}/deploymentHistoryV2':
    get:
      summary: List job deployments
      description: Returns the 20 last job deployments
      operationId: listJobDeploymentHistoryV2
      parameters:
        - in: query
          name: pageSize
          description: The number of deployments to return in the current page
          schema:
            type: number
            nullable: true
            default: 20
      tags:
        - Job Deployment History
      responses:
        '200':
          description: List deployment history
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentHistoryServicePaginatedResponseListV2'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      x-stoplight:
        id: mcu1nwkl3q2bb
    parameters:
      - schema:
          type: string
          format: uuid
        name: jobId
        in: path
        required: true
  '/job/{jobId}/deploymentRestriction':
    get:
      summary: Get job deployment restrictions
      description: Get job deployment restrictions
      operationId: getJobDeploymentRestrictions
      parameters:
        - $ref: '#/components/parameters/jobId'
      tags:
        - Job Deployment Restriction
      responses:
        '200':
          description: Get job deployment restrictions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobDeploymentRestrictionResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create a job deployment restriction
      description: Create a job deployment restriction
      operationId: createJobDeploymentRestriction
      parameters:
        - $ref: '#/components/parameters/jobId'
      tags:
        - Job Deployment Restriction
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobDeploymentRestrictionRequest'
      responses:
        '201':
          description: Added an environment variable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobDeploymentRestrictionResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '409':
          description: A Job deployment restriction with same properties already exists for this job
  '/job/{jobId}/deploymentRestriction/{deploymentRestrictionId}':
    put:
      summary: Edit a job deployment restriction
      description: Edit a job deployment restriction
      operationId: editJobDeploymentRestriction
      parameters:
        - $ref: '#/components/parameters/jobId'
        - $ref: '#/components/parameters/deploymentRestrictionId'
      tags:
        - Job Deployment Restriction
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobDeploymentRestrictionRequest'
      responses:
        '200':
          description: Edit a job deployment restriction
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobDeploymentRestrictionResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete a job deployment restriction
      description: Delete a job deployment restriction
      operationId: deleteJobDeploymentRestriction
      parameters:
        - $ref: '#/components/parameters/jobId'
        - $ref: '#/components/parameters/deploymentRestrictionId'
      tags:
        - Job Deployment Restriction
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/job/{jobId}/environmentVariable':
    get:
      summary: List environment variables
      operationId: listJobEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/jobId'
      tags:
        - Job Environment Variable
      responses:
        '200':
          description: List environment variables
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariableResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Add an environment variable to the job
      description: |
        - Add an environment variable to the job.
      operationId: createJobEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/jobId'
      tags:
        - Job Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentVariableRequest'
      responses:
        '201':
          description: Added an environment variable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/job/{jobId}/environmentVariable/import':
    post:
      summary: Import variables
      description: 'Import environment variables in a defined scope, with a defined visibility.'
      operationId: importJobEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/jobId'
      tags:
        - Job Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VariableImportRequest'
      responses:
        '201':
          description: Import environment variables
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VariableImport'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/job/{jobId}/environmentVariable/{environmentVariableId}':
    delete:
      summary: Delete an environment variable from a job
      description: |
        - To delete an environment variable from an job you must have the project user permission
        - You can't delete a BUILT_IN variable
        - If you delete a variable having override or alias, the associated override/alias will be deleted as well
      operationId: deleteJobEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/jobId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Job Environment Variable
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit an environment variable belonging to the job
      description: |
        - You can't edit a BUILT_IN variable
        - For an override, you can't edit the key
        - For an alias, you can't edit the value
        - An override can only have a scope lower to the variable it is overriding (hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > CONTAINER)
      operationId: editJobEnvironmentVariable
      parameters:
        - $ref: '#/components/parameters/jobId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Job Environment Variable
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentVariableEditRequest'
      responses:
        '200':
          description: Edited the environment variable value
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/job/{jobId}/environmentVariable/{environmentVariableId}/override':
    post:
      summary: Create an environment variable override at the job level
      description: |
        - Allows you to override at job level an environment variable that has a higher scope.
        - You only have to specify a value in the request body
        - The system will create a new environment variable at job level with the same key as the one corresponding to the variable id in the path
        - The response body will contain the newly created variable
        - Information regarding the overridden_variable will be exposed in the "overridden_variable" field of the newly created variable
      operationId: createJobEnvironmentVariableOverride
      parameters:
        - $ref: '#/components/parameters/jobId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Job Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Value'
      responses:
        '201':
          description: Create variable override
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          description: Can't create an override on a higher scope. Overrides can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > CONTAINER
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/job/{jobId}/environmentVariable/{environmentVariableId}/alias':
    post:
      summary: Create an environment variable alias at the job level
      description: |
        - Allows you to add an alias at job level on an existing environment variable having higher scope, in order to customize its key.
        - You only have to specify a key in the request body
        - The system will create a new environment variable at job level with the same value as the one corresponding to the variable id in the path
        - The response body will contain the newly created variable
        - Information regarding the aliased_variable will be exposed in the "aliased_variable" field of the newly created variable
        - You can't create an alias on an alias
      operationId: createJobEnvironmentVariableAlias
      parameters:
        - $ref: '#/components/parameters/jobId'
        - $ref: '#/components/parameters/environmentVariableId'
      tags:
        - Job Environment Variable
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Key'
      responses:
        '201':
          description: Create variable alias
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentVariable'
        '400':
          description: Can't create an alias on a higher scope. Aliases can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > CONTAINER
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/job/{jobId}/secret':
    get:
      summary: List job secrets
      description: 'Secrets are like environment variables, but they are secured and can''t be revealed.'
      operationId: listJobSecrets
      parameters:
        - $ref: '#/components/parameters/jobId'
      tags:
        - Job Secret
      responses:
        '200':
          description: List secrets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecretResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Add a secret to the job
      description: |
        - Add a secret to the job.
      operationId: createJobSecret
      parameters:
        - $ref: '#/components/parameters/jobId'
      tags:
        - Job Secret
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecretRequest'
      responses:
        '201':
          description: Add a secret
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/job/{jobId}/secret/{secretId}':
    delete:
      summary: Delete a secret from an job
      description: |
        - To delete a secret you must have the project user permission
        - You can't delete a BUILT_IN secret
        - If you delete a secret having override or alias, the associated override/alias will be deleted as well
      operationId: deleteJobSecret
      parameters:
        - $ref: '#/components/parameters/jobId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Job Secret
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit a secret belonging to the job
      description: |
        - You can't edit a BUILT_IN secret
        - For an override, you can't edit the key
        - For an alias, you can't edit the value
        - An override can only have a scope lower to the secret it is overriding (hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > CONTAINER)
      operationId: editJobSecret
      parameters:
        - $ref: '#/components/parameters/jobId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Job Secret
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecretEditRequest'
      responses:
        '200':
          description: Edited the secret value
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/job/{jobId}/secret/{secretId}/override':
    post:
      summary: Create a secret override at the job level
      description: |
        - Allows you to override at job level a secret that has a higher scope.
        - You only have to specify a value in the request body
        - The system will create a new secret at job level with the same key as the one corresponding to the secret id in the path
        - The response body will contain the newly created secret
        - Information regarding the overridden_secret will be exposed in the "overridden_secret" field of the newly created secret
      operationId: createJobSecretOverride
      parameters:
        - $ref: '#/components/parameters/jobId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Job Secret
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Value'
      responses:
        '201':
          description: Create secret override
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          description: Can't create an override on a higher scope. Overrides can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/job/{jobId}/secret/{secretId}/alias':
    post:
      summary: Create a secret alias at the job level
      description: |
        - Allows you to add an alias at job level on an existing secret having higher scope, in order to customize its key.
        - You only have to specify a key in the request body
        - The system will create a new secret at job level with the same value as the one corresponding to the secret id in the path
        - The response body will contain the newly created secret
        - Information regarding the aliased_secret will be exposed in the "aliased_secret" field of the newly created secret
        - You can't create an alias on an alias
      operationId: createJobSecretAlias
      parameters:
        - $ref: '#/components/parameters/jobId'
        - $ref: '#/components/parameters/secretId'
      tags:
        - Job Secret
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Key'
      responses:
        '201':
          description: Create secret alias
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Secret'
        '400':
          description: Can't create an alias on a higher scope. Aliases can only be created from one scope to a lower scope. Scope hierarchy is BUILT_IN > PROJECT > ENVIRONMENT > APPLICATION
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/job/{jobId}/commit':
    get:
      summary: List last job commits
      description: Returns list of the last 100 commits made on the repository linked to the job
      operationId: listJobCommit
      parameters:
        - $ref: '#/components/parameters/jobId'
        - $ref: '#/components/parameters/startId'
        - $ref: '#/components/parameters/gitCommitId'
      tags:
        - Job Main Calls
      responses:
        '200':
          description: List job commits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommitResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/job/{jobId}/clone':
    post:
      summary: Clone job
      description: This will create a new job with the same configuration on the targeted environment Id.
      operationId: cloneJob
      parameters:
        - $ref: '#/components/parameters/jobId'
      tags:
        - Jobs
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloneServiceRequest'
      responses:
        '202':
          description: Job clone has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/service/{serviceId}/deploymentStage':
    get:
      summary: Get Service Deployment Stage
      operationId: getServiceDeploymentStage
      parameters:
        - $ref: '#/components/parameters/serviceId'
      tags:
        - Deployment Stage Main Calls
      responses:
        '200':
          description: Get Service Deployment Stage
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentStageResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/service/{serviceId}/gitWebhookStatus':
    get:
      summary: Get git webhook status for a service
      description: 'Returns the webhook status for a git-based service. Checks if the Qovery webhook is correctly configured on the git provider (GitHub, GitLab, or Bitbucket).'
      operationId: getServiceGitWebhookStatus
      parameters:
        - $ref: '#/components/parameters/serviceId'
      tags:
        - Service Main Calls
      responses:
        '200':
          description: Webhook status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitWebhookStatusResponse'
        '400':
          description: Service does not have a git source
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/service/{serviceId}/gitWebhook/sync':
    post:
      summary: Synchronize git webhook for a service
      description: |
        Synchronizes the Qovery webhook configuration for a git-based service.
        - If no webhook exists, creates one with the correct configuration
        - If webhook exists but is misconfigured, updates it with the correct events
        - If webhook is already correctly configured, returns current status
        Works with GitHub, GitLab, and Bitbucket repositories.
      operationId: syncServiceGitWebhook
      parameters:
        - $ref: '#/components/parameters/serviceId'
      tags:
        - Service Main Calls
      responses:
        '200':
          description: Webhook synchronized successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitWebhookStatusResponse'
        '400':
          description: Service does not have a git source
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          description: 'Cannot configure webhook (provider-specific issues, insufficient permissions)'
        '429':
          description: Git provider rate limit exceeded
  /variable:
    get:
      summary: List variables
      description: Returns a list of variables. The result can be filtered by using the query parameters.
      operationId: listVariables
      parameters:
        - in: query
          name: parent_id
          required: true
          schema:
            type: string
            format: uuid
          description: 'it filters the list by returning only the variables accessible by the selected parent_id. This field shall contain the id of a project, environment or service depending on the selected scope. Example, if scope = APPLICATION and parent_id=<application_id>, the result will contain any variable accessible by the application. The result will contain also any variable declared at an higher scope.'
        - in: query
          name: scope
          required: true
          schema:
            $ref: '#/components/schemas/APIVariableScopeEnum'
          description: 'the type of the parent_id (application, project, environment etc..).'
        - in: query
          name: is_secret
          schema:
            type: boolean
            nullable: true
            description: it filters the list by returning only the variables of type secret or not
      tags:
        - Variable Main Calls
      responses:
        '200':
          description: List variables
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VariableResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create a variable
      description: |
        - Create a variable with the scope defined in the request body.
      operationId: createVariable
      tags:
        - Variable Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VariableRequest'
      responses:
        '201':
          description: Create a variable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VariableResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/variable/{variableId}/alias':
    post:
      summary: Create a variable alias
      description: |
        - Allows you to create an alias of one of the existing variables.
        - You have to specify an alias (key) in the request body, the scope and the parent id of the alias (project id, environment id or service id)
        - The system will create a new variable at the requested level with the same value as the one corresponding to the variable id passed as path parameter.
        - The response body will contain the newly created variable
        - Information regarding the aliased_variable will be exposed in the "aliased_variable" or in the "aliased_secret" field of the newly created variable
        - You can't create an alias on an alias
      operationId: createVariableAlias
      parameters:
        - $ref: '#/components/parameters/variableId'
      tags:
        - Variable Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VariableAliasRequest'
      responses:
        '201':
          description: Create variable alias
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VariableResponse'
        '400':
          description: Can't create an alias on a higher scope. Aliases can only be created from one scope to a lower scope. Scope hierarchy is ORGANIZATION > PROJECT > ENVIRONMENT > CONTAINER
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/variable/{variableId}/override':
    post:
      summary: Create a variable override
      description: |
        - Allows you to override a variable that has a higher scope.
        - You have to specify a value (override) in the request body and the scope and the parent id of the variable to override (project id, environment id or service id)
        - The system will create a new environment variable at the requested level with the same key as the one corresponding to the variable id passed as path parameter.
        - The response body will contain the newly created variable
        - Information regarding the overridden_variable will be exposed in the "overridden_variable" or in the "overridden_secret" field of the newly created variable
      operationId: createVariableOverride
      parameters:
        - $ref: '#/components/parameters/variableId'
      tags:
        - Variable Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VariableOverrideRequest'
      responses:
        '201':
          description: Create variable override
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VariableResponse'
        '400':
          description: Can't create an override on a higher scope. Overrides can only be created from one scope to a lower scope. Scope hierarchy is ORGANIZATION > PROJECT > ENVIRONMENT > APPLICATION
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/variable/{variableId}':
    delete:
      summary: Delete a variable
      description: |
        - To delete a variable
        - You can't delete a BUILT_IN variable
        - If you delete a variable having override or alias, the associated override/alias will be deleted as well
      operationId: deleteVariable
      parameters:
        - $ref: '#/components/parameters/variableId'
      tags:
        - Variable Main Calls
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit a variable
      description: |
        - You can't edit a BUILT_IN variable
        - For an override, you can't edit the key
        - For an alias, you can't edit the value
      operationId: editVariable
      parameters:
        - $ref: '#/components/parameters/variableId'
      tags:
        - Variable Main Calls
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VariableEditRequest'
      responses:
        '200':
          description: Edited variable value
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VariableResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /variable/import:
    post:
      summary: Import variables
      description: 'Import environment variables in a defined scope, with a defined visibility.'
      operationId: importEnvironmentVariables
      parameters:
        - in: query
          name: service_id
          required: true
          schema:
            type: string
            format: uuid
          description: service id
        - in: query
          name: service_type
          required: true
          schema:
            $ref: '#/components/schemas/ServiceTypeForVariableEnum'
          description: service type
      tags:
        - Variable Main Calls
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VariableImportRequest'
      responses:
        '201':
          description: Import environment variables
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VariableImport'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/cleanFailedJobs':
    parameters:
      - schema:
          type: string
        name: environmentId
        in: path
        required: true
    post:
      summary: Clean failed jobs within an environment
      tags:
        - Environment Actions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  clean_job_ids:
                    type: array
                    x-stoplight:
                      id: wfo0kfbtlr6uu
                    items:
                      x-stoplight:
                        id: 7w5e7cmsx9pol
                      type: string
                      format: uuid
                  clean_kubernetes_jobs:
                    type: array
                    x-stoplight:
                      id: hga9nj7dygmcf
                    items:
                      x-stoplight:
                        id: y2fcpi3zltomf
                      type: string
      operationId: cleanFailedJobs
      x-stoplight:
        id: ivybizdyn78lh
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                job_ids:
                  type: array
                  x-stoplight:
                    id: 9buks2moeeppz
                  items:
                    x-stoplight:
                      id: j5zm35sm6zxp4
                    type: string
                    format: uuid
  '/job/{jobId}/cleanFailedJob':
    parameters:
      - schema:
          type: string
        name: jobId
        in: path
        required: true
    post:
      summary: Clean a failed job
      tags:
        - Job Actions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  clean_kubernetes_jobs:
                    type: array
                    x-stoplight:
                      id: 2mgfos3e33m8v
                    items:
                      x-stoplight:
                        id: r4hfdr509e05z
                      type: string
      operationId: cleanFailedJob
      x-stoplight:
        id: eu77thczavme3
  '/environment/{environmentId}/lifecycleTemplate':
    parameters:
      - schema:
          type: string
        name: environmentId
        in: path
        required: true
    get:
      summary: List available lifecycle template for this environment
      tags:
        - Lifecycle Template Main Calls
      operationId: listEnvironmentLifecycleTemplates
      x-stoplight:
        id: 597v5i445zf0v
      responses:
        '200':
          description: List available lifecyle templates for this environment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LifecycleTemplateListResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/lifecycleTemplate/{lifecycleTemplateId}':
    parameters:
      - schema:
          type: string
        name: environmentId
        in: path
        required: true
      - schema:
          type: string
        name: lifecycleTemplateId
        in: path
        required: true
    get:
      summary: Get specific lifecycle template
      tags:
        - Lifecycle Template Main Calls
      operationId: getEnvironmentLifecycleTemplate
      x-stoplight:
        id: yatyf4hs2kwc0
      responses:
        '200':
          description: Lifecycle template
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LifecycleTemplateResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/containerRegistry/{containerRegistryId}/associatedServices':
    parameters:
      - schema:
          type: string
        name: organizationId
        in: path
        required: true
      - schema:
          type: string
        name: containerRegistryId
        in: path
        required: true
    get:
      summary: Get organization container registry associated services
      tags:
        - Organization Main Calls
      responses:
        '200':
          description: Get organization container registry associated services
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContainerRegistryAssociatedServicesResponseList'
        '401':
          description: Access token is missing or invalid
        '403':
          description: Access forbidden
        '404':
          description: Resource not found
      operationId: getContainerRegistryAssociatedServices
      x-stoplight:
        id: dgh8t73nqaetm
      description: Get organization container registry associated services
  '/organization/{organizationId}/helmRepository/{helmRepositoryId}/associatedServices':
    parameters:
      - schema:
          type: string
        name: organizationId
        in: path
        required: true
      - schema:
          type: string
        name: helmRepositoryId
        in: path
        required: true
    get:
      summary: Get organization helm repository associated services
      tags:
        - Organization Main Calls
      responses:
        '200':
          description: Get organization helm repository associated services
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HelmRepositoryAssociatedServicesResponseList'
        '401':
          description: ' Access token is missing or invalid'
        '403':
          description: AccessForbidden
        '404':
          description: ResourceNot Found
      operationId: getHelmRepositoryAssociatedServices
      x-stoplight:
        id: 5jvrv87m4tk5s
      description: Get organization helm repository associated services
  '/cluster/{clusterId}/token':
    parameters:
      - schema:
          type: string
        name: clusterId
        in: path
        required: true
    get:
      summary: Get cluster token by clusterId
      tags: []
      parameters:
        - schema:
            type: boolean
          in: query
          name: read_only
          description: 'If true, returns a short-lived token for the qovery-readonly ServiceAccount (bound to view ClusterRole) generated by the cluster-agent'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                  - apiVersion
                  - kind
                  - spec
                  - status
                properties:
                  apiVersion:
                    type: string
                    x-stoplight:
                      id: 3v8hnweel0h59
                  kind:
                    type: string
                    x-stoplight:
                      id: j71s6bsnathbc
                  spec:
                    type: object
                    x-stoplight:
                      id: yceokavn3wmmt
                  status:
                    type: object
                    x-stoplight:
                      id: kpc7oees1ex6o
                    required:
                      - token
                      - expirationTimestamp
                    properties:
                      token:
                        type: string
                        x-stoplight:
                          id: l3j67ojfrx07j
                      expirationTimestamp:
                        type: string
                        x-stoplight:
                          id: h0vsj9rkz1y83
                        format: date-time
      operationId: get-cluster-token-by-clusterId
      x-stoplight:
        id: zggx5u9ayalz7
  '/cluster/{clusterId}/environments':
    parameters:
      - schema:
          type: string
        name: clusterId
        in: path
        required: true
    get:
      summary: List environments services by cluster id
      operationId: get-environments-by-cluster-id
      tags:
        - Clusters
      responses:
        '200':
          description: List environments services by cluster id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterEnvironmentResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/helm/{helmId}/listServices':
    parameters:
      - schema:
          type: string
        name: helmId
        in: path
        required: true
    get:
      summary: Get helm kubernetes services
      tags:
        - Helm Main Calls
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/KubernetesServiceResponseList'
        '401':
          description: ' Access token is missing or invalid'
        '403':
          description: Resource not found
        '404':
          description: Not Found
      operationId: getHelmKubernetesServices
      x-stoplight:
        id: 7cl74u6hzmccd
      description: Get helm kubernetes services
  '/environment/{environmentId}/services':
    parameters:
      - schema:
          type: string
        name: environmentId
        in: path
        required: true
    get:
      summary: List Services By EnvironmentId
      tags:
        - Environment Main Calls
      responses:
        '200':
          description: Service List
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    x-stoplight:
                      id: 0t9ccei2ecd8d
                    items:
                      x-stoplight:
                        id: lzycmwmefigki
                      oneOf:
                        - $ref: '#/components/schemas/Application'
                        - $ref: '#/components/schemas/ContainerResponse'
                        - $ref: '#/components/schemas/Database'
                        - $ref: '#/components/schemas/HelmResponse'
                        - $ref: '#/components/schemas/JobResponse'
                        - $ref: '#/components/schemas/TerraformResponse'
                        - $ref: '#/components/schemas/ArgocdAppResponse'
                        - $ref: '#/components/schemas/AgenticWorkflowResponse'
                      discriminator:
                        propertyName: service_type
                        mapping:
                          APPLICATION: '#/components/schemas/Application'
                          CONTAINER: '#/components/schemas/ContainerResponse'
                          DATABASE: '#/components/schemas/Database'
                          HELM: '#/components/schemas/HelmResponse'
                          JOB: '#/components/schemas/JobResponse'
                          TERRAFORM: '#/components/schemas/TerraformResponse'
                          ARGOCD_APP: '#/components/schemas/ArgocdAppResponse'
                          AGENTIC_WORKFLOW: '#/components/schemas/AgenticWorkflowResponse'
      operationId: listServicesByEnvironmentId
      x-stoplight:
        id: 9adquhr5t6qx3
  '/cluster/{clusterId}/lock':
    parameters:
      - schema:
          type: string
        name: clusterId
        in: path
        required: true
    post:
      summary: Lock Cluster
      tags:
        - Clusters
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterLock'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      operationId: lockCluster
      x-stoplight:
        id: kttp2yd6qq7m7
      description: Lock a Cluster
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterLockRequest'
    delete:
      summary: Unlock Cluster
      tags:
        - Clusters
      responses:
        '204':
          description: No Content
        '401':
          description: |-
            Unauthorized responses:
                    '204':
                      $ref: '#/components/responses/204-deletion'
                    '401':
                      $ref: '#/components/responses/401'
                    '403':
                      $ref: '#/components/responses/403'
                    '404':
                      $ref: '#/components/responses/404'
        '403':
          description: Forbidden
        '404':
          description: ''
      operationId: unlock-cluster
      x-stoplight:
        id: vkn00s3mt1vew
      description: Unlock a cluster
  '/cluster/{clusterId}/events':
    get:
      summary: List Cluster Kubernetes Events
      description: List Cluster Kubernetes Events
      operationId: get-cluster-kubernetes-events
      tags:
        - Clusters
      parameters:
        - $ref: '#/components/parameters/clusterId'
        - in: query
          name: from_date_time
          description: |
            The start date time to fetch events from, following ISO-8601 format.  
            The `+` character must be escaped (`%2B`)
          required: true
          example: '2025-03-03T09:00:00+00:00'
          schema:
            type: string
            nullable: false
        - in: query
          name: to_date_time
          description: |
            The end date time to fetch events from, following ISO-8601 format.  
            The `+` character must be escaped (`%2B`)
          required: true
          example: '2025-03-03T03:00:00+00:00'
          schema:
            type: string
            nullable: false
        - schema:
            type: string
          in: query
          name: node_name
          description: The name of the node to fetch event from
        - schema:
            type: string
          in: query
          name: pod_name
          description: The name of the pod to fetch event from
        - schema:
            type: string
          in: query
          name: reporting_component
          description: The name of the reporting component used to filter events.
      responses:
        '200':
          description: List Cluster Kubernetes Events
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        created_at:
                          type: string
                          format: date-time
                          description: The created date following ISO-8601 format
                        kind:
                          type: string
                          description: The source kubernetes object related to the Event
                        namespace:
                          type: string
                          description: The namespace of the kubernetes object related to the Event (optional)
                        name:
                          type: string
                          description: The name of the Event
                        reason:
                          type: string
                          description: The action that triggered the Event
                        message:
                          type: string
                          description: A description of the Event
                        type:
                          type: string
                          description: As of today it can be either Warning or Normal (can evolve in the next releases)
                        reporting_component:
                          type: string
                          x-stoplight:
                            id: j80d7nbe0d7t5
                        count:
                          type: integer
                          x-stoplight:
                            id: dg0q4lb53n9bu
                        first_occurrence:
                          type: string
                          x-stoplight:
                            id: 2gfzxsksepqu1
                          format: date-time
                        last_occurrence:
                          type: string
                          x-stoplight:
                            id: 5pap12d1475w9
                          format: date-time
  '/cluster/{clusterId}/metrics':
    get:
      summary: Fetch cluster metrics
      description: Fetch cluster metrics.
      operationId: get-cluster-metrics
      tags:
        - Clusters
      parameters:
        - $ref: '#/components/parameters/clusterId'
        - in: query
          name: endpoint
          schema:
            type: string
            nullable: false
          required: true
        - in: query
          name: query
          required: true
          schema:
            type: string
            nullable: false
        - schema:
            type: string
          in: query
          name: start
        - schema:
            type: string
          in: query
          name: end
        - schema:
            type: string
          in: query
          name: step
        - schema:
            type: string
          in: query
          name: time
        - schema:
            type: string
          in: query
          name: timeout
        - schema:
            type: string
          in: query
          name: dedup
        - schema:
            type: string
          in: query
          name: partial_response
        - schema:
            type: string
          in: query
          name: max_source_resolution
        - schema:
            type: string
          in: query
          name: engine
        - schema:
            type: string
          in: query
          name: analyze
        - schema:
            type: string
          in: query
          name: board_short_name
        - schema:
            type: string
          in: query
          name: metric_short_name
        - schema:
            type: string
          in: query
          name: trace_id
        - schema:
            type: string
          in: query
          name: range
      responses:
        '200':
          description: Cluster Metrics
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterMetricsResponse'
  '/organization/{organizationId}/lock':
    parameters:
      - schema:
          type: string
        name: organizationId
        in: path
        required: true
    get:
      summary: List locked Cluster by organization
      tags:
        - Organization Cluster Lock
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterLockList'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      operationId: list-cluster-lock
      x-stoplight:
        id: 3n7iq6cr6xx43
  /environment/deploymentStatus:
    get:
      summary: Get Deployment Status By DeploymentRequestId
      tags: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvDeploymentStatus'
      operationId: getDeploymentStatusByDeploymentRequestId
      x-stoplight:
        id: dtvjdlz9teqld
      parameters:
        - schema:
            type: string
            format: uuid
          in: query
          name: deploymentRequestId
          required: true
    parameters: []
  '/organization/{organizationId}/services':
    get:
      summary: List Services By OrganizationId
      tags:
        - Organization Main Calls
      responses:
        '200':
          description: Service List
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    x-stoplight:
                      id: gjtgeehwg4lb9
                    items:
                      $ref: '#/components/schemas/ServiceLightResponse'
      operationId: listServicesByOrganizationId
      x-stoplight:
        id: qvqb4d0bpjy0v
      parameters:
        - schema:
            type: string
            nullable: true
          in: query
          name: project_id
        - schema:
            type: string
            nullable: true
          in: query
          name: environment_id
        - schema:
            type: string
          in: query
          name: cluster_id
    parameters:
      - schema:
          type: string
        name: organizationId
        in: path
        required: true
  '/organization/{organizationId}/environments':
    get:
      summary: List Environments By OrganizationId
      tags:
        - Organization Main Calls
      responses:
        '200':
          description: Environment List
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/OrganizationEnvironmentResponse'
      operationId: listEnvironmentsByOrganizationId
    parameters:
      - schema:
          type: string
        name: organizationId
        in: path
        required: true
  '/organization/{organizationId}/parseTerraformVariablesFromGitRepo':
    post:
      summary: Parse Terraform variables from Git repository
      operationId: parseTerraformVariablesFromGitRepo
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Main Calls
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TerraformVariableParsingRequest'
      responses:
        '200':
          description: List of Terraform variable definitions
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/TerraformVariableDefinition'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/listTfVarsFilesFromGitRepo':
    post:
      summary: List Terraform tfvars files from Git repository
      operationId: listTfVarsFilesFromGitRepo
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Main Calls
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TfVarsListRequest'
      responses:
        '200':
          description: List of Terraform tfvars files with their variables
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/TfVarsFileResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/deploymentQueue':
    parameters:
      - schema:
          type: string
          format: uuid
        name: environmentId
        in: path
        required: true
    get:
      summary: List Deployment Queue Request By EnvironmentId
      tags:
        - Environment Main Calls
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    x-stoplight:
                      id: zbjhuwhtkvxkj
                    items:
                      $ref: '#/components/schemas/QueuedDeploymentRequestWithStages'
      operationId: listDeploymentRequestByEnvironmentId
      x-stoplight:
        id: 0zhr0vfxayg96
  '/service/{serviceId}/deploymentQueue':
    parameters:
      - schema:
          type: string
          format: uuid
        name: serviceId
        in: path
        required: true
    get:
      summary: List Deployment Queue Request By ServiceId
      tags:
        - Environment Main Calls
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/QueuedDeploymentRequestForService'
      operationId: listDeploymentRequestByServiceId
      x-stoplight:
        id: augmimjz30ix3
  '/{serviceType}/{serviceId}/ingressDeploymentStatus':
    parameters:
      - schema:
          type: string
          enum:
            - CONTAINER
            - APPLICATION
            - HELM
        name: serviceType
        in: path
        required: true
      - schema:
          type: string
          format: uuid
        name: serviceId
        in: path
        required: true
    get:
      summary: Get Ingress Deployment Status By Service
      tags:
        - service_status
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IngressDeploymentStatusResponse'
      operationId: getIngressDeploymentStatus
      x-stoplight:
        id: cji3h6qjunupa
  '/organization/{organizationId}/azure/credentials':
    get:
      summary: List Azure credentials
      operationId: listAzureCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Cloud Provider Credentials
      responses:
        '200':
          description: list credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentialsResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create Azure credentials set
      operationId: createAzureCredentials
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Cloud Provider Credentials
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AzureCredentialsRequest'
      responses:
        '201':
          description: Credentials created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentials'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/azure/credentials/{credentialsId}':
    get:
      summary: Get a set of Azure credentials
      operationId: getAzureCredentials
      tags:
        - Cloud Provider Credentials
      responses:
        '200':
          description: Get a set of Azure credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentials'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit a set of Azure credentials
      operationId: editAzureCredentials
      tags:
        - Cloud Provider Credentials
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AzureCredentialsRequest'
      responses:
        '200':
          description: Edit a set of Azure credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterCredentials'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete a set of Azure credentials
      operationId: deleteAzureCredentials
      tags:
        - Cloud Provider Credentials
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    parameters:
      - schema:
          type: string
          format: uuid
        name: organizationId
        in: path
        required: true
      - schema:
          type: string
          format: uuid
        name: credentialsId
        in: path
        required: true
  /azure/region:
    get:
      summary: List Azure regions
      tags:
        - Cloud Provider
      operationId: listAzureRegions
      x-stoplight:
        id: pccuw0fgrkcyf
      responses:
        '200':
          description: list regions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterRegionResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /azure/clusterFeature:
    get:
      summary: List Azure features available
      tags:
        - Cloud Provider
      responses:
        '200':
          description: list features available for Azure cloud provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterFeatureResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      operationId: listAzureFeatures
      x-stoplight:
        id: gjin553b2f7mz
  '/environment/{environmentId}/terraform':
    get:
      summary: List terraforms
      operationId: listTerraforms
      x-stoplight:
        id: 2azyhtuthfuft
      tags:
        - Terraforms
      responses:
        '200':
          description: List terraforms
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TerraformResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    parameters:
      - schema:
          type: string
          format: uuid
        name: environmentId
        in: path
        required: true
    post:
      summary: Create a terraform
      tags:
        - Terraforms
      operationId: createTerraform
      x-stoplight:
        id: qgpat08kc3wir
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TerraformRequest'
      responses:
        '201':
          description: Create terraform
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TerraformResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Terraform name within the environment is already taken
  '/environment/{environmentId}/agenticWorkflow':
    get:
      summary: List agentic workflows
      operationId: listAgenticWorkflows
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Agentic Workflows
      responses:
        '200':
          description: List agentic workflows
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgenticWorkflowResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      summary: Create an agentic workflow
      operationId: createAgenticWorkflow
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Agentic Workflows
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgenticWorkflowRequest'
      responses:
        '201':
          description: Create agentic workflow
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgenticWorkflowResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/environment/{environmentId}/link':
    get:
      summary: List environment services links
      operationId: listEnvironmentServicesLinks
      parameters:
        - $ref: '#/components/parameters/environmentId'
      tags:
        - Environment
      responses:
        '200':
          description: List environment services links
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      x-stoplight:
        id: 94az7c0v1enav
      description: List services links of an environment
  '/terraform/{terraformId}':
    parameters:
      - $ref: '#/components/parameters/terraformId'
    get:
      summary: Get terraform by ID
      tags:
        - Terraform Main Calls
      operationId: getTerraform
      x-stoplight:
        id: s1dctms0dixdl
      responses:
        '200':
          description: Get terrafor by ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TerraformResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit Terraform
      tags:
        - Terraform Main Calls
      operationId: editTerraform
      x-stoplight:
        id: pb6cdzqcvmnkh
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TerraformRequest'
      responses:
        '200':
          description: Edit Terraform
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TerraformResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Terraform name within the environment is already taken
    delete:
      summary: Delete Terraform
      tags:
        - Terraform Main Calls
      operationId: deleteTerraform
      x-stoplight:
        id: 518sjlmziel46
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      parameters:
        - in: query
          name: resources_only
          schema:
            type: boolean
            default: false
          description: 'When true, only resources are deleted and Qovery configuration is kept.'
        - in: query
          name: skipReconcile
          required: false
          schema:
            type: boolean
            default: false
          description: 'When true, skip the pre-destroy apply/reconcile and tear down best-effort, tolerating already-absent resources.'
        - in: query
          name: force_terraform_action
          required: false
          schema:
            $ref: '#/components/schemas/DeleteTerraformAction'
          description: Force a specific action to be executed by Terraform during deletion.
  '/agenticWorkflow/{agenticWorkflowId}':
    get:
      summary: Get an agentic workflow
      operationId: getAgenticWorkflow
      parameters:
        - $ref: '#/components/parameters/agenticWorkflowId'
      tags:
        - Agentic Workflows
      responses:
        '200':
          description: Get agentic workflow
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgenticWorkflowResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Edit an agentic workflow
      operationId: editAgenticWorkflow
      parameters:
        - $ref: '#/components/parameters/agenticWorkflowId'
      tags:
        - Agentic Workflows
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgenticWorkflowRequest'
      responses:
        '200':
          description: Edit agentic workflow
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgenticWorkflowResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      summary: Delete an agentic workflow
      description: >-
        Delete an agentic workflow. This queues a deployment that removes the workflow's Kubernetes
        resources, and the workflow is deleted once that deployment completes. A workflow that was
        never deployed is removed immediately, with no deployment.
      operationId: deleteAgenticWorkflow
      parameters:
        - $ref: '#/components/parameters/agenticWorkflowId'
      tags:
        - Agentic Workflows
      responses:
        '202':
          description: agentic workflow deletion has been queued
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '204':
          description: agentic workflow deleted, no deployment was needed
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: A deployment is already in progress for this environment
  '/agenticWorkflow/{agenticWorkflowId}/cancelDeployment':
    post:
      summary: Cancel agentic workflow deployment
      description: >-
        Cancel the deployment currently running the agentic workflow. An agentic workflow only ever
        runs as part of a deployment of its environment, so this cancels that environment deployment
        and aborts the workflow's running job.
      operationId: cancelAgenticWorkflowDeployment
      parameters:
        - $ref: '#/components/parameters/agenticWorkflowId'
      tags:
        - Agentic Workflows
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                force_cancel:
                  type: boolean
                  default: false
                  description: >-
                    When false, the engine stops the deployment at the next safe point, letting the
                    workflow's job terminate on its own. When true it stops waiting for that job and
                    abandons it immediately.
      responses:
        '202':
          description: agentic workflow deployment cancelling has been requested, no response body
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: The deployment is already cancelled or cannot be cancelled in its current state
  '/terraform/{terraformId}/advancedSettings':
    get:
      summary: Get Advanced settings
      tags:
        - Terraform Configuration
      operationId: getTerraformAdvancedSettings
      x-stoplight:
        id: hth6esl7sqliu
      responses:
        '200':
          description: Advanced settings list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TerraformAdvancedSettings'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    parameters:
      - schema:
          type: string
          format: uuid
        name: terraformId
        in: path
        required: true
    put:
      summary: Edit Advanced settings
      tags:
        - Terraform Configuration
      operationId: editTerraformAdvancedSettings
      x-stoplight:
        id: 0rd396pcy9m0e
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TerraformAdvancedSettings'
      responses:
        '201':
          description: Updated advanced settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TerraformAdvancedSettings'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/terraform/{terraformId}/deploy':
    post:
      summary: Deploy terraform
      description: You must provide a git commit id.
      operationId: deployTerraform
      parameters:
        - $ref: '#/components/parameters/terraformId'
      tags:
        - Terraform Actions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TerraformDeployRequest'
      responses:
        '202':
          description: Deploy terraform
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/terraform/{terraformId}/uninstall':
    post:
      summary: Uninstall terraform
      description: Delete the resources of the terraform but keep Qovery configuration
      operationId: uninstallTerraform
      parameters:
        - $ref: '#/components/parameters/terraformId'
        - in: query
          name: force_terraform_action
          required: false
          schema:
            $ref: '#/components/schemas/DeleteTerraformAction'
          description: Force a specific action to be executed by Terraform during uninstall.
      tags:
        - Terraform Actions
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties: {}
      responses:
        '202':
          description: 'Delete the compute and data of the service, but keep Qovery configuration'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '204':
          description: No deployment has been triggered
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
      x-stoplight:
        id: awjvr4y02cr23
    parameters:
      - schema:
          type: string
        name: terraformId
        in: path
        required: true
  /defaultTerraformAdvancedSettings:
    get:
      summary: List default terraform advanced settings
      tags:
        - Terraforms
      responses:
        '200':
          description: Default terraform advanced settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TerraformAdvancedSettings'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
      operationId: getDefaultTerraformAdvancedSettings
      x-stoplight:
        id: 5qcyy764ewhk3
  /terraform/availableVersion:
    get:
      summary: List available Terraform versions
      tags:
        - Terraform Main Calls
      operationId: listTerraformVersions
      responses:
        '200':
          description: List available Terraform versions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TerraformVersionResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/terraform/{terraformId}/clone':
    post:
      summary: Clone terraform
      description: This will create a new terraform with the same configuration on the targeted environment Id.
      operationId: cloneTerraform
      parameters:
        - $ref: '#/components/parameters/terraformId'
      tags:
        - Terraforms
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloneServiceRequest'
      responses:
        '202':
          description: Terraform clone has been requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TerraformResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Operation is in progress
  '/terraform/{terraformId}/deploymentHistoryV2':
    parameters:
      - schema:
          type: string
          format: uuid
        name: terraformId
        in: path
        required: true
    get:
      summary: List terraform deployments
      description: Returns the 20 last terraform deployments
      parameters:
        - in: query
          name: pageSize
          description: The number of deployments to return in the current page
          schema:
            type: number
            nullable: true
            default: 20
      tags:
        - Terraform Deployment History
      responses:
        '200':
          description: List deployment history
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeploymentHistoryServicePaginatedResponseListV2'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      operationId: listTerraformDeploymentHistoryV2
      x-stoplight:
        id: qxm14ubc0l5dq
  '/terraform/{terraformId}/commit':
    get:
      summary: List last commits
      description: Returns list of the last 100 commits made on the repository linked to the terraform service
      operationId: listTerraformCommit
      parameters:
        - $ref: '#/components/parameters/terraformId'
      tags:
        - Terraform Main Calls
      responses:
        '200':
          description: List commits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommitResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/terraform/{terraformId}/deploymentRestriction':
    parameters:
      - schema:
          type: string
        name: terraformId
        in: path
        required: true
    get:
      summary: Get terraform deployment restrictions
      description: Get terraform deployment restrictions
      tags:
        - Terraform Deployment Restriction
      responses:
        '200':
          description: Get terraform deployment restrictions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TerraformDeploymentRestrictionResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      operationId: getTerraformDeploymentRestrictions
      x-stoplight:
        id: q3y44x1wdigcd
    post:
      summary: Create a terraform deployment restriction
      description: Create a terraform deployment restriction
      tags:
        - Terraform Deployment Restriction
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TerraformDeploymentRestrictionRequest'
      responses:
        '201':
          description: Added an terraform deployment restriction
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TerraformDeploymentRestrictionResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '409':
          description: A terraform deployment restriction with same properties already exists for this terraform
      operationId: createTerraformDeploymentRestriction
      x-stoplight:
        id: l6192gxde3sbv
  '/terraform/{terraformId}/deploymentRestriction/{deploymentRestrictionId}':
    parameters:
      - schema:
          type: string
          format: uuid
        name: terraformId
        in: path
        required: true
      - schema:
          type: string
          format: uuid
        name: deploymentRestrictionId
        in: path
        required: true
    put:
      summary: Edit a terraform deployment restriction
      description: Edit a terraform deployment restriction
      tags:
        - Terraform Deployment Restriction
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TerraformDeploymentRestrictionRequest'
      responses:
        '200':
          description: Edit a terraform deployment restriction
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TerraformDeploymentRestrictionResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      operationId: editTerraformDeploymentRestriction
      x-stoplight:
        id: w3jp2xci6bogt
    delete:
      summary: Delete a terraform deployment restriction
      description: Delete a terraform deployment restriction
      tags:
        - Terraform Deployment Restriction
      responses:
        '204':
          $ref: '#/components/responses/204-deletion'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      operationId: deleteTerraformDeploymentRestriction
      x-stoplight:
        id: d896flm9ibi54
  '/terraform/{terraformId}/terraformResources':
    parameters:
      - $ref: '#/components/parameters/terraformId'
    get:
      summary: Get terraform resources from latest deployment
      description: Returns the list of Terraform resources from the most recent deployment execution
      tags:
        - Terraform Resources
      operationId: getTerraformResources
      x-stoplight:
        id: terraform-resources-get
      responses:
        '200':
          description: List of terraform resources from latest deployment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TerraformResourcesResponse'
        '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'
  '/argocdApp/{argocdAppId}/manifest':
    get:
      summary: Get ArgoCD app manifest enrichment
      operationId: getArgoCdAppManifest
      parameters:
        - $ref: '#/components/parameters/argocdAppId'
      tags:
        - ArgoCD
      responses:
        '200':
          description: Manifest enrichment for the ArgoCD app, including managed Kubernetes resources
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArgocdAppManifestResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/cluster/{clusterId}/argocdApps/associatedServices':
    get:
      summary: Get ArgoCD associated services for a cluster
      description: List the ArgoCD discovered apps for a cluster, mapped to their project, environment, and service context. Requires VIEWER role.
      operationId: getArgoCdAssociatedServices
      parameters:
        - $ref: '#/components/parameters/clusterId'
      tags:
        - ArgoCD
      responses:
        '200':
          description: ArgoCD associated services for the cluster
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArgocdAssociatedServicesResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/credentials':
    parameters:
      - schema:
          type: string
        name: organizationId
        in: path
        required: true
    get:
      summary: List credentials of an organization and their associated clusters
      tags:
        - Organization Main Calls
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationCrendentialsResponseList'
        '400':
          description: Bad Request
      operationId: listOrganizationCredentials
      x-stoplight:
        id: 2jm9tyqfhw4xf
      description: List credentials of an organization and their associated clusters
  '/cluster/{clusterId}/logs':
    parameters:
      - schema:
          type: string
        name: clusterId
        in: path
        required: true
    get:
      summary: Fetch cluster logs
      responses:
        '200':
          description: Cluster Logs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterLogsResponse'
      operationId: get-cluster-logs
      tags:
        - Clusters
      x-stoplight:
        id: eodcl3enjp2ax
      description: Fetch cluster logs
      parameters:
        - schema:
            type: string
          in: query
          name: endpoint
          required: true
        - schema:
            type: string
          in: query
          name: query
          required: true
        - schema:
            type: string
          in: query
          name: start
        - schema:
            type: string
          in: query
          name: end
        - schema:
            type: string
          in: query
          name: limit
        - schema:
            type: string
          in: query
          name: since
        - schema:
            type: string
          in: query
          name: step
        - schema:
            type: string
          in: query
          name: interval
        - schema:
            type: string
          in: query
          name: direction
        - schema:
            type: string
          in: query
          name: time
  '/organization/{organizationId}/enterpriseconnection':
    get:
      summary: List enterprise connections
      operationId: listOrganizationEnterpriseConnections
      parameters:
        - $ref: '#/components/parameters/organizationId'
      tags:
        - Organization Enterprise Connection
      responses:
        '200':
          description: List enterprise connections
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnterpriseConnectionResponseList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  '/organization/{organizationId}/alert-receivers':
    get:
      summary: List alert receivers
      tags:
        - Alert Receivers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlertReceiverList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      operationId: getAlertReceivers
      x-stoplight:
        id: 3cqb2xpmir9n8
      description: Retrieve all alert receivers for a specific organization
    parameters:
      - name: organizationId
        in: path
        description: Organization ID
        required: true
        schema:
          type: string
          format: uuid
  '/organization/{organizationId}/enterpriseconnection/{connectionName}':
    get:
      summary: Get enterprise connection
      operationId: getOrganizationEnterpriseConnection
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/connectionName'
      tags:
        - Organization Enterprise Connection
      responses:
        '200':
          description: Get enterprise connection
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnterpriseConnectionDto'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    put:
      summary: Update enterprise connection
      operationId: updateOrganizationEnterpriseConnection
      parameters:
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/connectionName'
      tags:
        - Organization Enterprise Connection
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnterpriseConnectionDto'
      responses:
        '200':
          description: Update enterprise connection
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnterpriseConnectionDto'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /alert-receivers:
    post:
      summary: Create alert receiver
      tags:
        - Alert Receivers
      responses:
        '201':
          description: ' Alert receiver successfully created'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlertReceiverResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
      operationId: createAlertReceiver
      x-stoplight:
        id: 56wdp3pyd4jfy
      description: Create a new alert receiver
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AlertReceiverCreationRequest'
  '/alert-receivers/{alertReceiverId}':
    parameters:
      - $ref: '#/components/parameters/alertReceiverId'
    get:
      summary: Get alert receiver
      tags:
        - Alert Receivers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlertReceiverResponse'
        '400':
          $ref: '#/components/responses/400'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      operationId: getAlertReceiver
      x-stoplight:
        id: z0qs6btegz9c3
      description: Retrieve a specific alert receiver by its ID
    put:
      summary: Update alert receiver
      tags:
        - Alert Receivers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlertReceiverResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      operationId: editAlertReceiver
      x-stoplight:
        id: lcy99zdslr1cb
      description: Update an existing alert receiver
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AlertReceiverEditRequest'
    delete:
      summary: Delete alert receiver
      tags:
        - Alert Receivers
      responses:
        '204':
          description: Alert receiver successfully deleted
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      operationId: deleteAlertReceiver
      x-stoplight:
        id: vwt0mube2wcb6
      description: Delete an alert receiver
  /alert-rules:
    post:
      summary: Create alert rule
      tags:
        - Alert Rules
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlertRuleResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
      operationId: createAlertRule
      x-stoplight:
        id: htbtqo7s45dzg
      description: Create a new alert rule with PromQL expression
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AlertRuleCreationRequest'
  '/alert-rules/{alertRuleId}':
    parameters:
      - $ref: '#/components/parameters/alertRuleId'
    get:
      summary: Get alert rule
      tags:
        - Alert Rules
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlertRuleResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      operationId: getAlertRule
      x-stoplight:
        id: qfitd78wejspk
      description: Retrieve a specific alert rule by its ID
    put:
      summary: Update alert rule
      tags:
        - Alert Rules
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlertRuleResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      operationId: editAlertRule
      x-stoplight:
        id: cj5a3t08qw1aj
      description: Update an existing alert rule
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AlertRuleEditRequest'
    delete:
      summary: Delete alert rule
      tags:
        - Alert Rules
      responses:
        '204':
          description: Alert rule successfully deleted
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      operationId: deleteAlertRule
      x-stoplight:
        id: 812453spx2l0f
      description: Delete an alert rule
  '/organization/{organizationId}/alert-rules':
    parameters:
      - $ref: '#/components/parameters/organizationId'
    get:
      summary: List alert rules
      tags:
        - Alert Rules
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlertRuleList'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      operationId: getAlertRules
      x-stoplight:
        id: xkza3tt52gwse
      description: Retrieve all alert rules for a specific organization
  '/alert-receivers/{alertReceiverId}/validate':
    parameters:
      - $ref: '#/components/parameters/alertReceiverId'
    post:
      summary: Validate Existing Alert Receiver
      tags:
        - Alert Receivers
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      operationId: validateExistingAlertReceiver
      x-stoplight:
        id: uz8sv9wwxy3ib
      description: Validate an existing alert receiver by sending a test message for example.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AlertReceiverValidationRequest'
  /alert-receivers/validate:
    post:
      summary: Validate New Alert Receiver
      tags:
        - Alert Receivers
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      operationId: validateNewAlertReceiver
      x-stoplight:
        id: jqejmmiehaxlm
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AlertReceiverCreationValidationRequest'
      description: Validate a future alert receiver by sending a test message.
  /organization/{organizationId}/blueprint/catalog:
    get:
      summary: Get the blueprint service catalog
      operationId: getBlueprintCatalog
      tags:
        - Blueprint Main Calls
      description: Retrieves the Qovery service catalog from the public GitHub repository (Qovery/service-catalog). The catalog lists all available blueprints that can be deployed.
      parameters:
        - $ref: '#/components/parameters/organizationId'
      responses:
        '200':
          description: Blueprint catalog
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlueprintCatalogResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '502':
          description: Failed to fetch catalog from GitHub
  /environment/{environmentId}/blueprint:
    post:
      summary: Create a blueprint service in an environment
      operationId: createBlueprint
      tags:
        - Blueprint Main Calls
      description: Instantiates a blueprint from the service catalog into the given environment. Pass `deploy=true` to trigger an immediate deployment after creation.
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - name: deploy
          in: query
          description: Trigger a deployment immediately after creation
          required: false
          schema:
            type: boolean
            default: false
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BlueprintCreateRequest'
      responses:
        '201':
          description: Blueprint created (deploy=false)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlueprintResponse'
        '202':
          description: Blueprint created and deployment triggered (deploy=true)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlueprintResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: A service with this name already exists in the environment
        '422':
          description: Malformed blueprint tag
        '502':
          description: Failed to fetch blueprint manifest from GitHub
  /blueprint/{blueprintId}/update:
    get:
      summary: Check if a blueprint service has an available update
      operationId: checkBlueprintUpdate
      tags:
        - Blueprint Main Calls
      description: >-
        Returns the update availability for a deployed blueprint service, including
        the latest tag, and a diff of variables that are new, changed, or removed.
      parameters:
        - $ref: '#/components/parameters/blueprintId'
      responses:
        '200':
          description: Blueprint update availability
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlueprintUpdateResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          description: Malformed blueprint tag
        '502':
          description: Failed to fetch blueprint manifest from GitHub
  /blueprint/{blueprintId}/update/preview:
    post:
      summary: Preview a blueprint update
      operationId: previewBlueprintUpdate
      tags:
        - Blueprint Main Calls
      description: >-
        Dry-runs a blueprint update without persisting any changes. Returns a
        preview ID and the resolved service type. Both `variables` and
        `spec_overrides` follow RFC 7396 patch semantics.
      parameters:
        - $ref: '#/components/parameters/blueprintId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BlueprintUpdateRequest'
      responses:
        '202':
          description: Preview accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlueprintUpdatePreviewResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '502':
          description: Failed to fetch blueprint manifest from GitHub
  /blueprint/{blueprintId}/deploy:
    post:
      summary: Deploy (apply) the current blueprint spec
      operationId: deployBlueprint
      tags:
        - Blueprint Main Calls
      description: >-
        Deploys the blueprint's currently saved settings to its service. Call this
        after saving changes with PATCH /blueprint/{blueprintId} (and, optionally,
        previewing them) to roll them out. No request body: it deploys whatever is
        currently saved on the blueprint.
      parameters:
        - $ref: '#/components/parameters/blueprintId'
      responses:
        '202':
          description: Deployment accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlueprintDeploymentAckResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          description: Blueprint deployment failed to dispatch
  /blueprint/{blueprintId}:
    patch:
      summary: Update a blueprint service
      operationId: updateBlueprint
      tags:
        - Blueprint Main Calls
      description: >-
        Persists new values for a deployed blueprint service. Intended to be
        called after reviewing the diff returned by GET
        /blueprint/{blueprintId}/update.

        `variables` and `spec_overrides` follow JSON Merge Patch (RFC 7396)
        semantics: non-null value on a key upserts it, null value removes it,
        absent keys are left untouched, and passing null for the whole field
        leaves all existing values unchanged.

        **Note:** `name`, `tag`, and `icon` are required on every call.
      parameters:
        - $ref: '#/components/parameters/blueprintId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BlueprintUpdateRequest'
      responses:
        '200':
          description: Blueprint updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlueprintResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
components:
  parameters:
    blueprintId:
      name: blueprintId
      in: path
      description: Blueprint ID
      required: true
      schema:
        type: string
        format: uuid
    alertReceiverId:
      name: alertReceiverId
      in: path
      description: Alert Receiver ID
      required: true
      schema:
        type: string
        format: uuid
    alertRuleId:
      name: alertRuleId
      in: path
      description: Alert Rule ID
      required: true
      schema:
        type: string
        format: uuid
    applicationId:
      name: applicationId
      in: path
      description: Application ID
      required: true
      schema:
        type: string
        format: uuid
    analysisId:
      name: analysisId
      in: path
      description: Cluster analysis ID
      required: true
      schema:
        type: string
        format: uuid
    backupId:
      name: backupId
      in: path
      description: Database Backup ID
      required: true
      schema:
        type: string
        format: uuid
    clusterId:
      name: clusterId
      in: path
      description: Cluster ID
      required: true
      schema:
        type: string
        format: uuid
    containerId:
      name: containerId
      in: path
      description: Container ID
      required: true
      schema:
        type: string
        format: uuid
    containerRegistryId:
      name: containerRegistryId
      in: path
      description: Container Registry ID
      required: true
      schema:
        type: string
        format: uuid
    deploymentRequestId:
      name: deploymentRequestId
      in: path
      description: Deployment Request ID
      required: true
      schema:
        type: string
        format: uuid
    imageName:
      name: imageName
      in: query
      required: false
      description: container image name
      schema:
        type: string
    searchImageName:
      name: search
      in: query
      required: false
      description: partial container image name to search
      schema:
        type: string
    credentialsId:
      name: credentialsId
      in: path
      description: Credentials ID
      required: true
      schema:
        type: string
        format: uuid
    creditCardId:
      name: creditCardId
      in: path
      description: Credit Card ID
      required: true
      schema:
        type: string
        format: uuid
    customDomainId:
      name: customDomainId
      in: path
      description: Custom Domain ID
      required: true
      schema:
        type: string
        format: uuid
    customRoleId:
      name: customRoleId
      in: path
      description: Custom Role ID
      required: true
      schema:
        type: string
        format: uuid
    databaseId:
      name: databaseId
      in: path
      description: Database ID
      required: true
      schema:
        type: string
        format: uuid
    databaseType:
      name: databaseType
      in: path
      description: Database type
      required: true
      schema:
        type: string
        example: MYSQL
    deploymentStageId:
      name: deploymentStageId
      in: path
      description: Deployment Stage ID
      required: true
      schema:
        type: string
        format: uuid
    stageId:
      name: stageId
      in: path
      description: Deployment Stage ID
      required: true
      schema:
        type: string
        format: uuid
    deploymentRestrictionId:
      name: deploymentRestrictionId
      in: path
      description: Deployment Restriction ID
      required: true
      schema:
        type: string
        format: uuid
    deploymentRuleId:
      name: deploymentRuleId
      in: path
      description: Deployment Rule ID
      required: true
      schema:
        type: string
        format: uuid
    environmentId:
      name: environmentId
      in: path
      description: Environment ID
      required: true
      schema:
        type: string
        format: uuid
    environmentVariableId:
      name: environmentVariableId
      in: path
      description: Environment Variable ID
      required: true
      schema:
        type: string
        format: uuid
    inviteId:
      name: inviteId
      in: path
      description: Invite ID
      required: true
      schema:
        type: string
        format: uuid
    annotationsGroupId:
      name: annotationsGroupId
      in: path
      description: Organization annotations group ID
      required: true
      schema:
        type: string
        format: uuid
    labelsGroupId:
      name: labelsGroupId
      in: path
      description: Organization labels group ID
      required: true
      schema:
        type: string
        format: uuid
    region:
      name: region
      in: path
      description: region name
      required: true
      schema:
        type: string
        example: us-east-2
    jobId:
      name: jobId
      in: path
      description: Job ID
      required: true
      schema:
        type: string
        format: uuid
    gitCommitId:
      name: gitCommitId
      in: query
      description: Git Commit ID
      schema:
        type: string
        format: uuid
    gitTokenId:
      name: gitTokenId
      in: path
      description: Git Token ID
      required: true
      schema:
        type: string
        format: uuid
    invoiceId:
      name: invoiceId
      in: path
      description: Invoice ID
      required: true
      schema:
        type: string
        format: uuid
    organizationId:
      name: organizationId
      in: path
      description: Organization ID
      required: true
      schema:
        type: string
        format: uuid
    projectId:
      name: projectId
      in: path
      description: Project ID
      required: true
      schema:
        type: string
        format: uuid
    secretId:
      name: secretId
      in: path
      description: Secret ID
      required: true
      schema:
        type: string
        format: uuid
    startId:
      name: startId
      in: query
      description: Starting point after which to return results
      required: false
      schema:
        type: string
        format: uuid
    targetApplicationId:
      name: targetApplicationId
      in: path
      description: Target application ID
      required: true
      schema:
        type: string
        format: uuid
    serviceId:
      name: serviceId
      in: path
      description: Service ID of an application/job/container/database
      required: true
      schema:
        type: string
        format: uuid
    webhookId:
      name: webhookId
      in: path
      description: Webhook ID
      required: true
      schema:
        type: string
        format: uuid
    variableId:
      name: variableId
      in: path
      description: Variable ID
      required: true
      schema:
        type: string
        format: uuid
    argocdAppId:
      name: argocdAppId
      in: path
      description: ArgoCD App ID
      required: true
      schema:
        type: string
        format: uuid
    helmId:
      name: helmId
      in: path
      description: Helm ID
      required: true
      schema:
        type: string
        format: uuid
    helmRepositoryId:
      name: helmRepositoryId
      in: path
      description: Helm chart repository ID
      required: true
      schema:
        type: string
        format: uuid
    chartName:
      name: chartName
      in: query
      description: Helm chart name to filter the result on
      schema:
        type: string
    helmOf:
      name: of
      in: query
      description: Source of git commit. Can be 'chart' or 'values'
      schema:
        type: string
        default: chart
    terraformId:
      name: terraformId
      in: path
      required: true
      schema:
        type: string
        format: uuid
      description: Terraform ID
    connectionName:
      name: connectionName
      in: path
      required: true
      description: The name of the Organization's Enterprise Connection
      schema:
        type: string
    triggerAuthenticationId:
      name: triggerAuthenticationId
      in: path
      required: true
      schema:
        type: string
      description: KEDA triggerAuthentication ID
    secretManagerAccessId:
      name: secretManagerAccessId
      in: path
      description: Secret Manager Access ID
      required: true
      schema:
        type: string
        format: uuid
    agenticWorkflowId:
      name: agenticWorkflowId
      in: path
      required: true
      schema:
        type: string
        format: uuid
  schemas:
    QoveryIpsResponse:
      type: object
      required:
        - ips
      properties:
        ips:
          type: array
          description: IP addresses used by Qovery's NAT gateways for outbound traffic.
          items:
            type: string
          example:
            - 13.59.73.12
            - 18.224.119.19
            - 3.143.66.53
    PlatformTemplateCatalogResponse:
      type: object
      required:
        - results
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/PlatformTemplateSummaryResponse'
    PlatformTemplateSummaryResponse:
      type: object
      required:
        - key
        - version
        - status
        - layers
      properties:
        key:
          type: string
        version:
          type: string
        status:
          $ref: '#/components/schemas/PlatformTemplateReleaseStatus'
        description:
          type: string
          nullable: true
        layers:
          type: array
          items:
            $ref: '#/components/schemas/PlatformTemplateLayerResponse'
    PlatformTemplateReleaseStatus:
      type: string
      enum:
        - DRAFT
        - PUBLISHED
        - DEPRECATED
    PlatformTemplateLayerResponse:
      type: object
      required:
        - key
        - mandatory
        - enabledByDefault
        - modes
        - componentKeys
        - components
      properties:
        key:
          type: string
        mandatory:
          type: boolean
        enabledByDefault:
          type: boolean
        modes:
          type: array
          items:
            $ref: '#/components/schemas/PlatformClusterMode'
        providers:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/PlatformCloudVendor'
        componentKeys:
          type: array
          items:
            type: string
        components:
          type: array
          items:
            $ref: '#/components/schemas/PlatformTemplateComponentResponse'
        description:
          type: string
          nullable: true
    PlatformClusterMode:
      type: string
      enum:
        - QOVERY_MANAGED
        - CUSTOMER_MANAGED
    PlatformCloudVendor:
      type: string
      enum:
        - AWS
        - SCW
        - GCP
        - DO
        - AZURE
        - OVH
        - CIVO
        - HETZNER
        - ORACLE
        - IBM
        - UNKNOWN
    PlatformTemplateComponentResponse:
      type: object
      required:
        - key
        - kind
        - fields
      properties:
        key:
          type: string
        kind:
          $ref: '#/components/schemas/PlatformTemplateComponentKind'
        description:
          type: string
          nullable: true
        fields:
          type: array
          items:
            $ref: '#/components/schemas/FieldSchemaResponse'
    PlatformTemplateComponentKind:
      type: string
      enum:
        - HELM
        - TERRAFORM
    FieldSchemaResponse:
      type: object
      description: >-
        Canonical platform catalog field descriptor. Mirrors the q-core `FieldSchemaResponse` DTO.
      required:
        - key
        - type
        - required
        - label
        - sensitive
        - constraints
      properties:
        key:
          type: string
        type:
          type: string
          description: Field type understood by the Console, such as string, number, or bool
        required:
          type: boolean
        defaultValue:
          type: string
          nullable: true
        label:
          type: string
        description:
          type: string
          nullable: true
        sensitive:
          type: boolean
        constraints:
          $ref: '#/components/schemas/FieldSchemaConstraintsResponse'
    FieldSchemaConstraintsResponse:
      type: object
      description: Validation constraints attached to a catalog field descriptor.
      properties:
        allowedValues:
          type: array
          nullable: true
          items:
            type: string
        min:
          type: integer
          format: int64
          nullable: true
        max:
          type: integer
          format: int64
          nullable: true
        minLength:
          type: integer
          format: int64
          nullable: true
        maxLength:
          type: integer
          format: int64
          nullable: true
        pattern:
          type: string
          nullable: true
    ClusterPlatformBindingRequest:
      type: object
      required:
        - templateKey
        - templateVersion
      properties:
        templateKey:
          type: string
        templateVersion:
          type: string
        layerSelections:
          $ref: '#/components/schemas/PlatformLayerSelections'
        managedConfig:
          $ref: '#/components/schemas/PlatformComponentConfigurationMap'
        customerProvidedInputs:
          $ref: '#/components/schemas/PlatformComponentStringValuesMap'
    ClusterPlatformBindingResponse:
      type: object
      required:
        - clusterId
        - organizationId
        - templateKey
        - templateVersion
        - layerSelections
        - managedConfig
        - customerProvidedInputs
        - layers
      properties:
        clusterId:
          type: string
          format: uuid
        organizationId:
          type: string
          format: uuid
        templateKey:
          type: string
        templateVersion:
          type: string
        layerSelections:
          $ref: '#/components/schemas/PlatformLayerSelections'
        managedConfig:
          $ref: '#/components/schemas/PlatformComponentConfigurationMap'
        customerProvidedInputs:
          $ref: '#/components/schemas/PlatformComponentStringValuesMap'
        layers:
          type: array
          items:
            $ref: '#/components/schemas/ClusterPlatformBindingLayerResponse'
    PlatformLayerSelections:
      type: object
      additionalProperties:
        type: boolean
    PlatformConfigurationValues:
      type: object
      description: Configuration values keyed by their catalog field name
      additionalProperties: {}
    PlatformComponentConfigurationMap:
      type: object
      description: Component configuration values keyed by component key
      additionalProperties:
        $ref: '#/components/schemas/PlatformConfigurationValues'
    PlatformComponentStringValuesMap:
      type: object
      description: String values keyed first by component key and then by input key
      additionalProperties:
        type: object
        additionalProperties:
          type: string
    ClusterPlatformBindingLayerResponse:
      type: object
      required:
        - key
        - status
        - reason
        - componentKeys
      properties:
        key:
          type: string
        status:
          $ref: '#/components/schemas/PlatformLayerResolutionStatus'
        reason:
          type: string
        componentKeys:
          type: array
          items:
            type: string
    PlatformLayerResolutionStatus:
      type: string
      enum:
        - ENABLED
        - DISABLED
        - SKIPPED
    PlatformComponentConfigurationPreviewRequest:
      type: object
      properties:
        profileConfig:
          $ref: '#/components/schemas/PlatformConfigurationValues'
        clusterInputs:
          type: object
          additionalProperties:
            type: string
        componentOutputs:
          $ref: '#/components/schemas/PlatformComponentStringValuesMap'
    PlatformComponentConfigurationPreviewResponse:
      type: object
      required:
        - clusterId
        - componentKey
        - fields
        - requirements
        - componentBindings
        - violations
      properties:
        clusterId:
          type: string
          format: uuid
        componentKey:
          type: string
        fields:
          type: array
          items:
            $ref: '#/components/schemas/FieldSchemaResponse'
        requirements:
          type: array
          items:
            $ref: '#/components/schemas/PlatformComponentInputRequirementResponse'
        componentBindings:
          type: array
          items:
            $ref: '#/components/schemas/PlatformComponentOutputBindingResponse'
        violations:
          type: array
          items:
            $ref: '#/components/schemas/PlatformComponentConfigurationViolationResponse'
    PlatformComponentConfigurationResolutionResponse:
      type: object
      description: >-
        Component configuration resolved from an explicit template and cluster context before an
        actual cluster exists.
      required:
        - componentKey
        - fields
        - requirements
        - componentBindings
        - violations
      properties:
        componentKey:
          type: string
        fields:
          type: array
          items:
            $ref: '#/components/schemas/FieldSchemaResponse'
        requirements:
          type: array
          items:
            $ref: '#/components/schemas/PlatformComponentInputRequirementResponse'
        componentBindings:
          type: array
          items:
            $ref: '#/components/schemas/PlatformComponentOutputBindingResponse'
        violations:
          type: array
          items:
            $ref: '#/components/schemas/PlatformComponentConfigurationViolationResponse'
    PlatformComponentInputRequirementResponse:
      description: >-
        A catalog field the cluster must provide for the selected configuration:
        the shared field descriptor extended with its resolution scope and readiness.
      allOf:
        - $ref: '#/components/schemas/FieldSchemaResponse'
        - type: object
          required:
            - scope
            - status
          properties:
            scope:
              $ref: '#/components/schemas/PlatformComponentConfigurationInputScope'
            status:
              $ref: '#/components/schemas/PlatformComponentConfigurationRequirementStatus'
    PlatformComponentConfigurationInputScope:
      type: string
      enum:
        - PLATFORM_PROFILE
        - CLUSTER
    PlatformComponentConfigurationRequirementStatus:
      type: string
      enum:
        - MISSING
        - READY
    PlatformComponentOutputBindingResponse:
      type: object
      required:
        - input
        - fromComponent
        - output
      properties:
        input:
          type: string
        fromComponent:
          type: string
        output:
          type: string
    PlatformComponentConfigurationViolationResponse:
      type: object
      required:
        - code
        - fieldPath
        - message
      properties:
        code:
          type: string
          description: Stable machine-readable violation code.
        fieldPath:
          type: string
          description: >-
            Path of the offending field. Convention: profile configuration fields use the
            bare field key (e.g. `storage`); cluster-provided inputs are prefixed with
            `clusterInputs.` (e.g. `clusterInputs.s3BucketName`). Consumers match violations
            to form fields using these exact paths.
        message:
          type: string
          description: Customer-facing message describing how to fix the violation.
    BlueprintCatalogResponse:
      type: object
      required:
        - version
        - generatedAt
        - blueprints
      properties:
        version:
          type: string
          example: '1'
        generatedAt:
          type: string
          format: date-time
        blueprints:
          type: array
          items:
            $ref: '#/components/schemas/BlueprintItem'
    BlueprintItem:
      type: object
      required:
        - name
        - kind
        - description
        - icon
        - categories
        - provider
        - serviceFamily
        - majorVersions
      properties:
        name:
          type: string
          example: aws-rds-postgresql
        kind:
          type: string
          example: ServiceBlueprint
        description:
          type: string
        icon:
          type: string
          format: uri
          example: 'https://cdn.qovery.com/icons/postgresql.svg'
        categories:
          type: array
          items:
            type: string
        provider:
          type: string
          example: aws
        serviceFamily:
          type: string
          example: postgres
        majorVersions:
          type: array
          items:
            $ref: '#/components/schemas/BlueprintMajorVersion'
    BlueprintMajorVersion:
      type: object
      required:
        - serviceVersion
        - latestTag
      properties:
        serviceVersion:
          type: string
          example: '17'
        latestTag:
          type: string
          example: aws/postgres/17/1.0.1
    BlueprintCreateRequest:
      type: object
      required:
        - name
        - tag
        - icon
      properties:
        name:
          type: string
          description: Display name for the service
          example: my-postgres
        tag:
          type: string
          description: Catalog tag identifying the blueprint version
          example: aws/postgres/17/1.0.1
        icon:
          type: string
          format: uri
          description: Icon URL for the service
          example: 'https://cdn.qovery.com/icons/postgresql.svg'
        variables:
          type: array
          description: Variable overrides for the blueprint
          items:
            $ref: '#/components/schemas/BlueprintVariableRequest'
          default: []
        spec_overrides:
          $ref: '#/components/schemas/BlueprintSpecOverrides'
          nullable: true
    BlueprintSpecOverrides:
      type: object
      description: >-
        Engine-level overrides applied on top of the blueprint manifest.
        Only fields whose corresponding manifest field is `overridable: true`
        are accepted; submitting a non-overridable field returns 422.

        **Terraform / OpenTofu blueprints**

        `engine_version` is **required** on create. The value must be one of the
        versions listed in `spec.engine.terraform.allowedValues` (or
        `opentofu.allowedValues`) in the manifest.

        **Helm blueprints**

        `engine_version`, `credentials`, and `backend` are ignored. Only
        `timeout` and the resource fields apply.
      properties:
        engine_version:
          type: string
          description: >-
            Terraform or OpenTofu version to use for the apply job.
            Required when the blueprint engine type is `terraform` or `opentofu`.
            Must be one of the versions in the manifest's `allowedValues` list.
          example: '1.13.3'
        credentials:
          type: string
          enum: [cluster, env]
          description: >-
            How the apply job authenticates against the cloud provider.
            `cluster` reuses the cluster's cloud credentials (default).
            `env` expects the user to supply provider credentials as environment
            variables on the service.
          example: cluster
        backend:
          type: string
          enum: [qovery, user_provided]
          description: >-
            Where the Terraform state is stored.
            `qovery` stores state in a Kubernetes secret managed by Qovery (default).
            `user_provided` delegates to a user-controlled remote backend declared
            in the manifest's `backend.user_provided` block.
          example: qovery
        timeout:
          type: integer
          description: >-
            Maximum duration in seconds for a single apply job before it is
            marked as timed out. Overrides the manifest's `spec.engine.timeout`.
          example: 3600
        cpu:
          type: string
          description: >-
            CPU request/limit for the apply job pod (Kubernetes-style, e.g. `500m`).
            Overrides `spec.engine.resources.cpu` in the manifest.
          example: '500m'
        ram:
          type: string
          description: >-
            Memory request/limit for the apply job pod (e.g. `512Mi`, `1Gi`).
            Overrides `spec.engine.resources.ram` in the manifest.
          example: '512Mi'
        storage:
          type: string
          description: >-
            Ephemeral storage for the apply job pod — used for state files and
            provider plugins (e.g. `1Gi`).
            Overrides `spec.engine.resources.storage` in the manifest.
          example: '1Gi'
      example:
        engine_version: '1.13.3'
        credentials: cluster
        backend: qovery
    BlueprintVariableRequest:
      type: object
      required:
        - name
        - value
      properties:
        name:
          type: string
        value:
          type: string
        is_secret:
          type: boolean
          default: false
    BlueprintUpdateVariableValue:
      type: object
      description: >-
        Value object for a variable in a patch map.
        Set the map value to null to remove the variable.
      required:
        - value
      properties:
        value:
          type: string
        is_secret:
          type: boolean
          default: false
    BlueprintResponse:
      type: object
      required:
        - id
        - catalog_url
        - tag
        - environment_id
      properties:
        id:
          type: string
          format: uuid
        catalog_url:
          type: string
          format: uri
          description: URL to the blueprint catalog entry
        tag:
          type: string
          example: aws/postgres/17/1.0.1
        environment_id:
          type: string
          format: uuid
    BlueprintManifestResponse:
      type: object
      required:
        - results
      properties:
        results:
          type: array
          description: Form fields the console renders for the user (variables + auto-sourced context variables).
          items:
            oneOf:
              - $ref: '#/components/schemas/BlueprintManifestVariableField'
              - $ref: '#/components/schemas/BlueprintManifestContextVariableField'
            discriminator:
              propertyName: kind
              mapping:
                variable: '#/components/schemas/BlueprintManifestVariableField'
                contextVariable: '#/components/schemas/BlueprintManifestContextVariableField'
        engine:
          $ref: '#/components/schemas/BlueprintManifestEngineSpec'
    BlueprintManifestEngineSpec:
      description: Engine spec discriminated by `type`. Catalog-declared execution config + per-knob default/allowedValues/overridable metadata for the console to render.
      oneOf:
        - $ref: '#/components/schemas/BlueprintManifestEngineTerraform'
        - $ref: '#/components/schemas/BlueprintManifestEngineOpenTofu'
        - $ref: '#/components/schemas/BlueprintManifestEngineHelm'
      discriminator:
        propertyName: type
        mapping:
          terraform: '#/components/schemas/BlueprintManifestEngineTerraform'
          opentofu: '#/components/schemas/BlueprintManifestEngineOpenTofu'
          helm: '#/components/schemas/BlueprintManifestEngineHelm'
    BlueprintManifestEngineTerraform:
      type: object
      required:
        - type
        - provider
        - terraform
      properties:
        type:
          type: string
          enum:
            - terraform
        provider:
          $ref: '#/components/schemas/CloudVendorEnum'
        terraform:
          $ref: '#/components/schemas/BlueprintManifestVersionBlock'
        credentials:
          $ref: '#/components/schemas/BlueprintManifestCredentialsConfig'
        backend:
          $ref: '#/components/schemas/BlueprintManifestBackendConfig'
        timeout:
          type: integer
          format: int64
          nullable: true
          description: Default execution timeout in seconds.
        resources:
          $ref: '#/components/schemas/BlueprintManifestResourcesConfig'
    BlueprintManifestEngineOpenTofu:
      type: object
      required:
        - type
        - provider
        - opentofu
      properties:
        type:
          type: string
          enum:
            - opentofu
        provider:
          $ref: '#/components/schemas/CloudVendorEnum'
        opentofu:
          $ref: '#/components/schemas/BlueprintManifestVersionBlock'
        credentials:
          $ref: '#/components/schemas/BlueprintManifestCredentialsConfig'
        backend:
          $ref: '#/components/schemas/BlueprintManifestBackendConfig'
        timeout:
          type: integer
          format: int64
          nullable: true
        resources:
          $ref: '#/components/schemas/BlueprintManifestResourcesConfig'
    BlueprintManifestEngineHelm:
      type: object
      required:
        - type
        - chart
      properties:
        type:
          type: string
          enum:
            - helm
        chart:
          $ref: '#/components/schemas/BlueprintManifestChartConfig'
        timeout:
          type: integer
          format: int64
          nullable: true
        resources:
          $ref: '#/components/schemas/BlueprintManifestResourcesConfig'
    BlueprintManifestVersionBlock:
      type: object
      required:
        - version
      properties:
        version:
          type: string
          description: Catalog-declared default version for this engine.
          example: '1.9.7'
        allowed_values:
          type: array
          nullable: true
          description: Versions the user may choose from. Null = unrestricted.
          items:
            type: string
    BlueprintManifestCredentialsConfig:
      type: object
      description: Credentials override metadata. Catalog default + which values are allowed and whether the user can override at all.
      properties:
        default:
          type: string
          nullable: true
          example: cluster
        allowed_values:
          type: array
          nullable: true
          items:
            type: string
        overridable:
          type: boolean
          default: true
    BlueprintManifestBackendConfig:
      type: object
      description: Backend override metadata. Catalog default + which values are allowed, plus the user-provided backend block when the catalog ships one.
      properties:
        default:
          type: string
          nullable: true
          example: qovery
        allowed_values:
          type: array
          nullable: true
          items:
            type: string
        overridable:
          type: boolean
          default: true
        user_provided:
          $ref: '#/components/schemas/BlueprintManifestUserProvidedBackend'
    BlueprintManifestUserProvidedBackend:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          description: 'Terraform backend type (e.g. "s3", "gcs", "azurerm").'
        config:
          type: object
          description: Static backend config (bucket, region, etc.).
          additionalProperties:
            type: string
          default: {}
    BlueprintManifestResourcesConfig:
      type: object
      description: Catalog-declared default compute resources for the execution job.
      properties:
        cpu:
          type: string
          nullable: true
          example: '500m'
        ram:
          type: string
          nullable: true
          example: '512Mi'
        storage:
          type: string
          nullable: true
    BlueprintManifestChartConfig:
      type: object
      required:
        - repository
        - name
        - version
      properties:
        repository:
          type: string
          format: uri
        name:
          type: string
        version:
          type: string
    BlueprintManifestVariableField:
      type: object
      description: 'An editable form input the user fills in (from spec.variables).'
      required:
        - kind
        - name
        - type
        - required
        - is_secret
      properties:
        kind:
          type: string
          enum:
            - variable
        name:
          type: string
          example: db_password
        type:
          $ref: '#/components/schemas/BlueprintManifestFieldType'
        required:
          type: boolean
        is_secret:
          type: boolean
        description:
          type: string
          nullable: true
        allowed_values:
          type: array
          nullable: true
          items:
            type: string
        default_value:
          type: string
          nullable: true
    BlueprintManifestContextVariableField:
      type: object
      description: 'An auto-sourced, read-only value (from spec.contextVariables); not user-editable.'
      required:
        - kind
        - name
      properties:
        kind:
          type: string
          enum:
            - contextVariable
        name:
          type: string
          example: region
        source:
          type: string
          nullable: true
          description: 'Origin of the auto-sourced value (e.g. cluster.region)'
        value:
          type: string
          nullable: true
          description: 'Resolved value of the context variable at the time of the request'
    BlueprintManifestFieldType:
      type: object
      description: 'Field type with its type-specific validation conditions, discriminated by "type".'
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - string
            - bool
            - number
        pattern:
          type: string
          nullable: true
          description: 'Regex pattern, only present for string fields'
        min_length:
          type: integer
          format: int64
          nullable: true
          description: 'Minimum length, only present for string fields'
        max_length:
          type: integer
          format: int64
          nullable: true
          description: 'Maximum length, only present for string fields'
        min:
          type: integer
          format: int64
          nullable: true
          description: 'Lower bound, only present for number fields'
        max:
          type: integer
          format: int64
          nullable: true
          description: 'Upper bound, only present for number fields'
    BlueprintReadmeResponse:
      type: object
      required:
        - content
        - repository_url
      properties:
        content:
          type: string
          description: README content in Markdown format
        repository_url:
          type: string
          format: uri
          description: URL of the GitHub repository hosting the blueprint
    BlueprintUpdateResponse:
      type: object
      required:
        - is_up_to_date
        - current_tag
        - latest_tag
        - new_required_values
        - new_optional_values
        - now_required_values
        - updated_values
        - removed_values
        - engine_diff
        - new_major_versions
      properties:
        is_up_to_date:
          type: boolean
        current_tag:
          type: string
          example: aws/postgres/17/1.0.0
        latest_tag:
          type: string
          example: aws/postgres/17/1.1.0
        new_required_values:
          type: array
          description: Variables added in the latest version that are required with no default
          items:
            $ref: '#/components/schemas/BlueprintUpdateNewRequiredValue'
        new_optional_values:
          type: array
          description: Variables added in the latest version that have a default value
          items:
            $ref: '#/components/schemas/BlueprintUpdateNewOptionalValue'
        now_required_values:
          type: array
          description: Variables that were optional but are now required in the latest version
          items:
            $ref: '#/components/schemas/BlueprintUpdateNewRequiredValue'
        updated_values:
          type: array
          description: Variables whose default value changed between the current and latest versions
          items:
            $ref: '#/components/schemas/BlueprintUpdateUpdatedValue'
        removed_values:
          type: array
          description: Variables that no longer exist in the latest version
          items:
            $ref: '#/components/schemas/BlueprintUpdateRemovedValue'
        engine_diff:
          $ref: '#/components/schemas/BlueprintUpdateEngineDiff'
        new_major_versions:
          type: array
          description: >-
            Major versions of the same blueprint newer than the service's current
            one (e.g. service on aws/postgres/16 while 17 and 18 exist). Empty when
            already on the latest major or when the current version is non-numeric.
          items:
            $ref: '#/components/schemas/BlueprintUpdateNewMajorVersion'
    BlueprintUpdateEngineDiff:
      type: object
      description: >-
        Catalog engine-block deltas between the current and latest blueprint tag.
      required:
        - updated_values
      properties:
        updated_values:
          type: array
          items:
            $ref: '#/components/schemas/BlueprintUpdateEngineFieldChange'
    BlueprintUpdateNewRequiredValue:
      type: object
      required:
        - name
        - type
        - is_secret
      properties:
        name:
          type: string
        type:
          $ref: '#/components/schemas/BlueprintManifestFieldType'
        allowed_values:
          type: array
          nullable: true
          description: Values the user may choose from. Null = unrestricted.
          items:
            type: string
        is_secret:
          type: boolean
    BlueprintUpdateNewOptionalValue:
      type: object
      required:
        - name
        - type
        - is_secret
      properties:
        name:
          type: string
        default_value:
          type: string
          nullable: true
        type:
          $ref: '#/components/schemas/BlueprintManifestFieldType'
        allowed_values:
          type: array
          nullable: true
          description: Values the user may choose from. Null = unrestricted.
          items:
            type: string
        is_secret:
          type: boolean
    BlueprintUpdateUpdatedValue:
      type: object
      required:
        - name
        - type
        - is_secret
      properties:
        name:
          type: string
        current_default_value:
          type: string
          nullable: true
        new_default_value:
          type: string
          nullable: true
        current_value:
          type: string
          nullable: true
        type:
          $ref: '#/components/schemas/BlueprintManifestFieldType'
        allowed_values:
          type: array
          nullable: true
          description: Values the user may choose from. Null = unrestricted.
          items:
            type: string
        is_secret:
          type: boolean
    BlueprintUpdateEngineFieldChange:
      type: object
      description: >-
        A single engine-block field delta (e.g. version, cpu, ram). Not a
        manifest variable, so it carries no field type or constraints.
      required:
        - name
      properties:
        name:
          type: string
        current_default_value:
          type: string
          nullable: true
        new_default_value:
          type: string
          nullable: true
        current_value:
          type: string
          nullable: true
    BlueprintUpdateRemovedValue:
      type: object
      required:
        - name
      properties:
        name:
          type: string
    BlueprintUpdateNewMajorVersion:
      type: object
      description: A newer major version of the blueprint available for a major upgrade.
      required:
        - service_version
        - latest_tag
      properties:
        service_version:
          type: string
          description: The engine major version (e.g. "17").
          example: "17"
        latest_tag:
          type: string
          description: Latest catalog tag for that major version.
          example: aws/postgres/17/1.0.1
    BlueprintUpdatePreviewResponse:
      type: object
      required:
        - preview_id
        - service_type
      properties:
        preview_id:
          type: string
          description: Identifier of the preview execution
          example: exec-abc-123
        service_type:
          type: string
          enum:
            - HELM
            - TERRAFORM
          description: Type of the underlying service backing this blueprint
    BlueprintDeploymentAckResponse:
      type: object
      required:
        - deployment_id
        - execution_id
      properties:
        deployment_id:
          type: string
          format: uuid
          description: Identifier of the blueprint deployment, used to track its status
        execution_id:
          type: string
          description: Engine execution identifier for this deployment
          example: exec-abc-123
    BlueprintUpdateRequest:
      type: object
      required:
        - name
        - tag
        - icon
      properties:
        name:
          type: string
          description: Display name for the service
          example: my-postgres
        tag:
          type: string
          description: Catalog tag identifying the target blueprint version
          example: aws/postgres/17/1.1.0
        icon:
          type: string
          format: uri
          description: Icon URL for the service
          example: 'https://cdn.qovery.com/icons/postgresql.svg'
        variables:
          type: object
          description: >-
            RFC 7396 patch map keyed by variable name. Non-null value upserts
            the variable; null value removes it. Absent keys are left untouched.
            Omitting the field entirely is equivalent to an empty map — no
            variables are modified.
          additionalProperties:
            $ref: '#/components/schemas/BlueprintUpdateVariableValue'
            nullable: true
        spec_overrides:
          allOf:
            - $ref: '#/components/schemas/BlueprintSpecOverrides'
          nullable: true
          description: >-
            JSON Merge Patch (RFC 7396) applied to the stored spec_overrides
            (see `BlueprintSpecOverrides` for the list of valid fields).
            A non-null field value upserts the override; a null value removes it.
            Pass null or omit the field entirely to leave all existing overrides
            unchanged.
    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
    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
    ArgoCdConnectionStatusEnum:
      type: string
      description: Connection status of an ArgoCD instance
      enum:
        - connected
        - error
      example: connected
    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
    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
    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
    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
    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
    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'
    ArgoCdInstanceMappingResponseList:
      type: object
      required:
        - results
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ArgoCdInstanceMappingResponse'
    TerraformBackend:
      oneOf:
        - type: object
          required:
            - kubernetes
          properties:
            kubernetes:
              $ref: '#/components/schemas/TerraformBackendKubernetes'
        - type: object
          required:
            - user_provided
          properties:
            user_provided:
              $ref: '#/components/schemas/TerraformBackendUserProvided'
        - type: object
          required:
            - blueprint
          properties:
            blueprint:
              $ref: '#/components/schemas/TerraformBackendBlueprint'
      description: Configuration for Terraform backend - exactly one backend type must be specified
    TerraformBackendKubernetes:
      type: object
      description: Kubernetes-specific backend configuration
    TerraformBackendUserProvided:
      type: object
      description: User-provided backend configuration
    TerraformBackendBlueprint:
      type: object
      description: Blueprint-managed backend configuration. The user provides the backend type and config at blueprint creation time. The platform generates and injects backend.tf for the created service.
      required:
        - type
      properties:
        type:
          type: string
          description: 'Terraform backend type (e.g. s3, gcs, azurerm)'
        config:
          type: object
          additionalProperties:
            type: string
          description: 'Static backend configuration (bucket, region, etc.). Credentials should be provided via environment variables, not here.'
    DeleteTerraformAction:
      type: string
      description: Action to force a specific Terraform behavior during deletion/uninstall.
      enum:
        - SKIP_DESTROY
    AccountInfo:
      type: object
      properties:
        id:
          type: string
          format: uuid
        created_at:
          type: string
          format: date-time
        nickname:
          type: string
        first_name:
          type: string
        last_name:
          type: string
        profile_picture_url:
          type: string
        communication_email:
          type: string
    AccountInfoEditRequest:
      type: object
      properties:
        communication_email:
          type: string
          nullable: false
          description: The email to be used for official Qovery communications
    SecretAlias:
      type: object
      required:
        - id
        - key
        - mount_path
        - scope
        - variable_type
      properties:
        id:
          type: string
          format: uuid
        key:
          type: string
          example: QOVERY_DATABASE_PSQL_NAME
        mount_path:
          type: string
        scope:
          $ref: '#/components/schemas/APIVariableScopeEnum'
        variable_type:
          $ref: '#/components/schemas/APIVariableTypeEnum'
        description:
          type: string
          x-stoplight:
            id: 14nham449j6uk
          maxLength: 255
          description: optional variable description (255 characters maximum)
          nullable: true
        enable_interpolation_in_file:
          type: boolean
          x-stoplight:
            id: bm88z8ltgrcc6
          nullable: true
    ApplicationAdvancedSettings:
      type: object
      properties:
        deployment.custom_domain_check_enabled:
          type: boolean
          description: disable custom domain check when deploying an application
        deployment.termination_grace_period_seconds:
          type: integer
          description: define how long in seconds an application is supposed to be stopped gracefully
        deployment.affinity.node.required:
          type: object
          description: Set pod placement on specific Kubernetes nodes labels
          additionalProperties:
            type: string
        deployment.antiaffinity.pod:
          type: string
          enum:
            - Preferred
            - Requirred
          description: |
            Define how you want pods affinity to behave:
            * `Preferred` allows, but does not require, pods of a given service are not co-located (or co-hosted) on a single node
            * `Requirred` ensures that the pods of a given service are not co-located (or co-hosted) on a single node (safer in term of availability but can be expensive depending on the number of replicas)
        deployment.topology_spread.zone:
          type: string
          enum:
            - Disabled
            - ScheduleAnyway
            - DoNotSchedule
          description: |
            Define how you want pods to be spread across availability zones:
            * `Disabled` no topology spread constraints are applied
            * `ScheduleAnyway` pods are spread across zones on a best-effort basis (soft constraint)
            * `DoNotSchedule` pods must be evenly spread across zones with a maxSkew of 1 (hard constraint)
        deployment.lifecycle.post_start_exec_command:
          type: array
          x-stoplight:
            id: ucpjmpaclq1wl
          description: Allows you to run a command after the application is started. The command should be a shell command or script.
          items:
            x-stoplight:
              id: 8zq97yrgn1iom
            type: string
        deployment.lifecycle.pre_stop_exec_command:
          type: array
          x-stoplight:
            id: skk1wo5xhz5mc
          description: Allows you to run a command before the application is stopped. The command should be a shell command or script. Qovery requires the sh shell by default and sets a sleep of 15 seconds to let Nginx update its config. Avoiding error codes returned during a rolling update.
          items:
            x-stoplight:
              id: oomiyuna5h91g
            type: string
        deployment.update_strategy.type:
          type: string
          enum:
            - RollingUpdate
            - Recreate
          description: |
            * `RollingUpdate` gracefully rollout new versions, and automatically rollback if the new version fails to start
            * `Recreate` stop all current versions and create new ones once all old ones have been shutdown
        deployment.update_strategy.rolling_update.max_unavailable_percent:
          type: integer
          description: Define the percentage of a maximum number of pods that can be unavailable during the update process
        deployment.update_strategy.rolling_update.max_surge_percent:
          type: integer
          description: Define the percentage of the maximum number of pods that can be created over the desired number of pods
        build.timeout_max_sec:
          type: integer
        build.cpu_max_in_milli:
          type: integer
          description: define the max cpu resources (in milli)
        build.ram_max_in_gib:
          type: integer
          description: define the max ram resources (in gib)
        build.disable_buildkit_cache:
          type: boolean
          description: disable buildkit registry cache during build
        build.skip_git_submodules:
          type: boolean
          description: skip git submodules update when cloning the repository
        network.ingress.proxy_body_size_mb:
          type: integer
        network.ingress.force_ssl_redirect:
          type: boolean
          x-stoplight:
            id: am7oh5tdono3z
          description: 'When using SSL offloading outside of cluster, you can enforce a redirect to HTTPS even when there is no TLS certificate available'
        network.ingress.enable_cors:
          type: boolean
        network.ingress.cors_allow_origin:
          type: string
        network.ingress.cors_allow_methods:
          type: string
        network.ingress.cors_allow_headers:
          type: string
        network.ingress.proxy_buffer_size_kb:
          type: integer
          description: header buffer size used while reading response header from upstream
        network.ingress.keepalive_time_seconds:
          type: integer
          description: Limits the maximum time (in seconds) during which requests can be processed through one keepalive connection
        network.ingress.keepalive_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) during which an idle keepalive connection to an upstream server will stay open.
        network.ingress.send_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for transmitting a response to the client
        network.ingress.proxy_connect_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for establishing a connection to a proxied server
        network.ingress.proxy_send_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for transmitting a request to the proxied server
        network.ingress.proxy_read_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for reading a response from the proxied server
        network.ingress.proxy_buffering:
          type: string
          description: Allows to enable or disable nginx `proxy-request-buffering`
        network.ingress.whitelist_source_range:
          type: string
          description: |
            list of source ranges to allow access to ingress proxy. 
            This property can be used to whitelist source IP ranges for ingress proxy.
            The value is a comma separated list of CIDRs, e.g. 10.0.0.0/24,172.10.0.1
            To allow all source ranges, set 0.0.0.0/0.
        network.ingress.denylist_source_range:
          type: string
          description: |
            list of source ranges to deny access to ingress proxy. 
            This property can be used to blacklist source IP ranges for ingress proxy.
            The value is a comma separated list of CIDRs, e.g. 10.0.0.0/24,172.10.0.1
        network.ingress.basic_auth_env_var:
          type: string
          description: |
            Set the name of an environment variable to use as a basic authentication (`login:crypted_password`) from `htpasswd` command.
        network.ingress.enable_sticky_session:
          type: boolean
          description: |
            Enable the load balancer to bind a user's session to a specific target.
            This ensures that all requests from the user during the session are sent to the same target
        network.ingress.grpc_send_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for transmitting a request to the grpc server
        network.ingress.grpc_read_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for transmitting a request to the grpc server
        network.ingress.extra_headers:
          type: string
          description: Allows to define response headers
          example: '{"X-Frame-Options":"DENY ","X-Content-Type-Options":"nosniff"}'
        network.gateway_api.http_request_timeout_seconds:
          type: integer
          nullable: true
          minimum: 0
          description: Sets a timeout (in seconds) for requests proxied through the Gateway API route.
        network.gateway_api.http_connection_idle_timeout_seconds:
          type: integer
          nullable: true
          minimum: 0
          description: Sets the idle timeout (in seconds) for HTTP connections proxied through the Gateway API route.
        network.gateway_api.retry.num_retries:
          type: integer
          nullable: true
          minimum: 0
          description: Sets the number of retry attempts for requests proxied through the Gateway API route.
        network.gateway_api.retry.retry_on:
          type: string
          nullable: true
          description: Comma-separated retry triggers (for example connect-failure,reset,refused-stream,retriable-status-codes) for requests proxied through the Gateway API route.
        network.gateway_api.retry.http_status_codes:
          type: string
          nullable: true
          description: Comma-separated HTTP status codes (100..599) retried when retry_on includes retriable-status-codes.
        network.gateway_api.retry.per_try_timeout_seconds:
          type: integer
          nullable: true
          minimum: 1
          description: Sets the timeout (in seconds) applied to each retry attempt for requests proxied through the Gateway API route.
        hpa.cpu.average_utilization_percent:
          type: integer
          description: Percentage value of cpu usage at which point pods should scale up.
        hpa.memory.average_utilization_percent:
          type: integer
          nullable: true
          description: Percentage value of memory usage at which point pods should scale up.
        security.service_account_name:
          type: string
          description: |
            Allows you to set an existing Kubernetes service account name
        security.automount_service_account_token:
          type: boolean
          description: |
            Automount Kubernetes service account token to have access to Kubernetes API from pods
        security.read_only_root_filesystem:
          type: boolean
          description: |
            Mounts the container's root filesystem as read-only
    Application:
      allOf:
        - $ref: '#/components/schemas/Base'
        - $ref: '#/components/schemas/ServiceStorage'
        - type: object
          required:
            - environment
            - name
            - healthchecks
            - icon_uri
            - service_type
          properties:
            environment:
              $ref: '#/components/schemas/ReferenceObject'
            git_repository:
              $ref: '#/components/schemas/ApplicationGitRepository'
            maximum_cpu:
              type: integer
              description: Maximum cpu that can be allocated to the application based on organization cluster configuration. unit is millicores (m). 1000m = 1 cpu
              example: 16000
            maximum_memory:
              type: integer
              description: Maximum memory that can be allocated to the application based on organization cluster configuration. unit is MB. 1024 MB = 1GB
              example: 16384
            maximun_gpu:
              type: integer
              x-stoplight:
                id: ho7l9maiyqe52
              default: 0
              minimum: 0
            name:
              type: string
              description: name is case insensitive
            description:
              type: string
              description: give a description to this application
            build_mode:
              $ref: '#/components/schemas/BuildModeEnum'
            dockerfile_path:
              type: string
              description: The path of the associated Dockerfile. Only if you are using build_mode = DOCKER
              nullable: true
            cpu:
              type: integer
              description: unit is millicores (m). 1000m = 1 cpu
              example: 1250
            memory:
              type: integer
              description: unit is MB. 1024 MB = 1GB
              example: 1024
            gpu:
              type: integer
              x-stoplight:
                id: 3n3pebmhkah3k
              default: 0
              minimum: 0
            ephemeral_storage_in_gib:
              type: integer
              description: Ephemeral storage of the service in GiB. When omitted, the platform default is used.
              minimum: 0
              example: 10
            cpu_architecture:
              description: CPU architecture this service runs on. If null, the cluster default architecture is used.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CpuArchitectureEnum'
            min_running_instances:
              type: integer
              minimum: 0
              description: |
                Minimum number of instances running. This resource auto-scale based on the CPU and Memory consumption.
                Note: 0 means that there is no application running.
              default: 1
            max_running_instances:
              type: integer
              description: |
                Maximum number of instances running. This resource auto-scale based on the CPU and Memory consumption.
                Note: -1 means that there is no limit.
              default: 1
            healthchecks:
              $ref: '#/components/schemas/Healthcheck'
            auto_preview:
              type: boolean
              description: |
                Specify if the environment preview option is activated or not for this application.  
                If activated, a preview environment will be automatically cloned at each pull request.  
                If not specified, it takes the value of the `auto_preview` property from the associated environment.
              default: true
            ports:
              $ref: '#/components/schemas/ServicePortResponseList'
            arguments:
              type: array
              items:
                type: string
            entrypoint:
              type: string
              description: optional entrypoint when launching container
            auto_deploy:
              type: boolean
              description: Specify if the application will be automatically updated after receiving a new commit.
            annotations_groups:
              $ref: '#/components/schemas/OrganizationAnnotationsGroupResponseList'
            labels_groups:
              $ref: '#/components/schemas/OrganizationLabelsGroupResponseList'
            icon_uri:
              type: string
              format: uri
              description: Icon URI representing the application.
              x-stoplight:
                id: b8karc43pdxpu
            service_type:
              $ref: '#/components/schemas/ServiceTypeEnum'
            docker_target_build_stage:
              type: string
              x-stoplight:
                id: tdxdfoyowutcx
              description: The target build stage in the Dockerfile to build
              nullable: true
            autoscaling:
              $ref: '#/components/schemas/AutoscalingPolicyResponse'
    ApplicationDeploymentRestriction:
      allOf:
        - $ref: '#/components/schemas/Base'
        - $ref: '#/components/schemas/ApplicationDeploymentRestrictionRequest'
    ApplicationDeploymentRestrictionRequest:
      type: object
      required:
        - mode
        - type
        - value
      properties:
        mode:
          $ref: '#/components/schemas/DeploymentRestrictionModeEnum'
        type:
          $ref: '#/components/schemas/DeploymentRestrictionTypeEnum'
        value:
          type: string
          description: 'For `PATH` restrictions, the value must not start with `/`'
          example: application1/src/
    ApplicationDeploymentRestrictionResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationDeploymentRestriction'
    ApplicationEditRequest:
      allOf:
        - $ref: '#/components/schemas/ServiceStorageRequest'
        - type: object
          required:
            - healthchecks
          properties:
            name:
              type: string
              description: name is case insensitive
            description:
              type: string
              description: give a description to this application
            git_repository:
              $ref: '#/components/schemas/ApplicationGitRepositoryRequest'
            build_mode:
              $ref: '#/components/schemas/BuildModeEnum'
            dockerfile_path:
              type: string
              description: The path of the associated Dockerfile
              nullable: true
            cpu:
              type: integer
              description: unit is millicores (m). 1000m = 1 cpu
              default: 500
              example: 1250
            memory:
              type: integer
              description: unit is MB. 1024 MB = 1GB
              default: 512
              example: 1024
            gpu:
              type: integer
              x-stoplight:
                id: tkd7it621esyj
              minimum: 0
              default: 0
              example: 1
            ephemeral_storage_in_gib:
              type: integer
              description: Ephemeral storage of the service in GiB. When omitted, the platform default is used.
              minimum: 0
              example: 10
            min_running_instances:
              type: integer
              minimum: 0
              description: |
                Minimum number of instances running. This resource auto-scale based on the CPU and Memory consumption.
                Note: 0 means that there is no application running.
              default: 1
            max_running_instances:
              type: integer
              description: |
                Maximum number of instances running. This resource auto-scale based on the CPU and Memory consumption.
                Note: -1 means that there is no limit.
              default: 1
            healthchecks:
              $ref: '#/components/schemas/Healthcheck'
            auto_preview:
              type: boolean
              description: |
                Specify if the environment preview option is activated or not for this application.  
                If activated, a preview environment will be automatically cloned at each pull request.  
                If not specified, it takes the value of the `auto_preview` property from the associated environment.
              default: true
            ports:
              $ref: '#/components/schemas/ServicePortResponseList'
            arguments:
              type: array
              items:
                type: string
            entrypoint:
              type: string
              description: optional entrypoint when launching container
            auto_deploy:
              type: boolean
              description: Specify if the application will be automatically updated after receiving a new commit.
              nullable: true
            annotations_groups:
              $ref: '#/components/schemas/ServiceAnnotationsRequestList'
            labels_groups:
              $ref: '#/components/schemas/ServiceLabelsRequestList'
            icon_uri:
              type: string
              format: uri
              description: Icon URI representing the application.
            docker_target_build_stage:
              type: string
              description: The target build stage in the Dockerfile to build
              nullable: true
            cpu_architecture:
              description: CPU architecture to run this service on. If null, the cluster default architecture is used.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CpuArchitectureEnum'
            autoscaling:
              $ref: '#/components/schemas/AutoscalingPolicyRequest'
    ApplicationGitRepository:
      type: object
      required:
        - provider
        - owner
        - name
        - url
      properties:
        has_access:
          type: boolean
        provider:
          $ref: '#/components/schemas/GitProviderEnum'
        owner:
          type: string
          example: John Doe
        url:
          type: string
          format: uri
        name:
          type: string
          description: repository name
          example: simple-node-app
        branch:
          type: string
        root_path:
          type: string
        deployed_commit_id:
          type: string
          description: Git commit ID corresponding to the deployed version of the app
        deployed_commit_date:
          type: string
          readOnly: true
          format: date-time
          description: Git commit date corresponding to the deployed version of the app
        deployed_commit_contributor:
          type: string
          description: Git commit user corresponding to the deployed version of the app
        deployed_commit_tag:
          type: string
          example: v1.0.1
        git_token_id:
          type: string
          nullable: true
        git_token_name:
          type: string
          nullable: true
      title: ''
    ApplicationGitRepositoryRequest:
      type: object
      required:
        - url
        - owner
        - name
        - provider
      properties:
        url:
          type: string
          description: application git repository URL
          example: 'https://github.com/Qovery/simple-node-app'
        branch:
          type: string
          description: |
            Name of the branch to use. This is optional
            If not specified, then the branch used is the `main` or `master` one
          example: feat/text_xxx
        root_path:
          type: string
          default: /
          description: indicates the root path of the application.
        git_token_id:
          type: string
          format: uuid
          description: The git token id on Qovery side
          nullable: true
        provider:
          $ref: '#/components/schemas/GitProviderEnum'
    ApplicationNetwork:
      type: object
      properties:
        sticky_session:
          type: boolean
          description: |
            Specify if the sticky session option (also called persistant session) is activated or not for this application.
            If activated, user will be redirected by the load balancer to the same instance each time he access to the application.
          default: false
    ApplicationNetworkRequest:
      type: object
      properties:
        sticky_session:
          type: boolean
          description: |
            Specify if the sticky session option (also called persistant session) is activated or not for this application.
            If activated, user will be redirected by the load balancer to the same instance each time he access to the application.
          default: false
    ServicePort:
      type: object
      required:
        - id
        - internal_port
        - publicly_accessible
        - protocol
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        internal_port:
          type: integer
          example: 8080
          description: The listening port of your service.
        external_port:
          type: integer
          example: 8080
          description: The exposed port for your service. This is optional. If not set a default port will be used.
        publicly_accessible:
          type: boolean
          description: Expose the port to the world
        is_default:
          type: boolean
          description: is the default port to use for domain
        protocol:
          $ref: '#/components/schemas/PortProtocolEnum'
        public_path:
          type: string
          description: |-
            Indicate the path or regex that must match for traffic to be accepted on your service
            i.e: /api/ will only accept http calls that start with /api/ 
            Only valid for publicly_accessible HTTP or GRPC ports.
        public_path_rewrite:
          type: string
          description: |-
            Indicate the new path that will be used to reach your service after replacement
            i.e: public_path -> /(.*)  public_path_rewrite -> /api/$1 will append /api/ on all externaly requested url when reaching the service 
            external/use url -> example.com/foobar  -> url seen by the service -> example.com/api/foobar
            Only valid for publicly_accessible HTTP or GRPC ports.
    ServicePortResponseList:
      type: array
      items:
        $ref: '#/components/schemas/ServicePort'
    ServicePortRequest:
      type: object
      properties:
        ports:
          type: array
          items:
            type: object
            required:
              - internal_port
              - publicly_accessible
            properties:
              id:
                type: string
                format: uuid
              name:
                type: string
              internal_port:
                type: integer
                example: 8080
                description: The listening port of your service.
              external_port:
                type: integer
                example: 8080
                description: The exposed port for your service. This is optional. If not set a default port will be used.
              publicly_accessible:
                type: boolean
                description: Expose the port to the world
              is_default:
                type: boolean
                description: is the default port to use for domain
              protocol:
                $ref: '#/components/schemas/PortProtocolEnum'
              public_path:
                type: string
                description: |-
                  Indicate the path or regex that must match for traffic to be accepted on your service
                  i.e: /api/ will only accept http calls that start with /api/ 
                  Only valid for publicly_accessible HTTP or GRPC ports.
              public_path_rewrite:
                type: string
                description: |-
                  Indicate the new path that will be used to reach your service after replacement
                  i.e: public_path -> /(.*)  public_path_rewrite -> /api/$1 will append /api/ on all externaly requested url when reaching the service 
                  external/use url -> example.com/foobar  -> url seen by the service -> example.com/api/foobar
                  Only valid for publicly_accessible HTTP or GRPC ports.
    ServiceAnnotationsRequestList:
      type: array
      items:
        $ref: '#/components/schemas/ServiceAnnotationRequest'
    ServiceAnnotationRequest:
      type: object
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
    ServiceLabelsRequestList:
      type: array
      items:
        $ref: '#/components/schemas/ServiceLabelRequest'
    ServiceLabelRequest:
      type: object
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
    ApplicationRequest:
      allOf:
        - $ref: '#/components/schemas/ServiceStorageRequest'
        - $ref: '#/components/schemas/ServicePortRequest'
        - type: object
          required:
            - name
            - git_repository
            - healthchecks
          properties:
            name:
              type: string
              description: name is case insensitive
            description:
              type: string
              description: give a description to this application
              nullable: true
            git_repository:
              $ref: '#/components/schemas/ApplicationGitRepositoryRequest'
            build_mode:
              $ref: '#/components/schemas/BuildModeEnum'
            dockerfile_path:
              type: string
              description: The path of the associated Dockerfile. Only if you are using build_mode = DOCKER
              nullable: true
            cpu:
              type: integer
              description: unit is millicores (m). 1000m = 1 cpu
              default: 500
              example: 1250
            memory:
              type: integer
              description: unit is MB. 1024 MB = 1GB
              default: 512
              example: 1024
            gpu:
              type: integer
              x-stoplight:
                id: 1jq9ic2dbgx3l
              default: 0
              minimum: 0
              example: 1
            ephemeral_storage_in_gib:
              type: integer
              description: Ephemeral storage of the service in GiB. When omitted, the platform default is used.
              minimum: 0
              example: 10
            min_running_instances:
              type: integer
              minimum: 0
              description: |
                Minimum number of instances running. This resource auto-scale based on the CPU and Memory consumption.
                Note: 0 means that there is no application running.
              default: 1
            max_running_instances:
              type: integer
              description: |
                Maximum number of instances running. This resource auto-scale based on the CPU and Memory consumption.
                Note: -1 means that there is no limit.
              default: 1
            healthchecks:
              $ref: '#/components/schemas/Healthcheck'
            auto_preview:
              type: boolean
              description: |
                Specify if the environment preview option is activated or not for this application.  
                If activated, a preview environment will be automatically cloned at each pull request.  
                If not specified, it takes the value of the `auto_preview` property from the associated environment.
              default: true
            arguments:
              type: array
              items:
                type: string
            entrypoint:
              type: string
              description: optional entrypoint when launching container
            auto_deploy:
              type: boolean
              description: Specify if the application will be automatically updated after receiving a new commit.
              nullable: true
            annotations_groups:
              $ref: '#/components/schemas/ServiceAnnotationsRequestList'
            labels_groups:
              $ref: '#/components/schemas/ServiceLabelsRequestList'
            icon_uri:
              type: string
              format: uri
              description: Icon URI representing the application.
              x-stoplight:
                id: om4lw1ulknsrg
            docker_target_build_stage:
              type: string
              x-stoplight:
                id: xg9q0urac8kdq
              description: The target build stage in the Dockerfile to build
              nullable: true
            cpu_architecture:
              description: CPU architecture to run this service on. If null, the cluster default architecture is used.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CpuArchitectureEnum'
            autoscaling:
              $ref: '#/components/schemas/AutoscalingPolicyRequest'
    ApplicationResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Application'
    ServiceStorage:
      type: object
      properties:
        storage:
          type: array
          items:
            type: object
            required:
              - id
              - type
              - size
              - mount_point
            properties:
              id:
                type: string
                format: uuid
              type:
                $ref: '#/components/schemas/StorageTypeEnum'
              size:
                type: integer
                description: unit is GB
                example: 16
              mount_point:
                type: string
                example: /mnt/images
    ServiceStorageRequest:
      type: object
      properties:
        storage:
          type: array
          items:
            type: object
            required:
              - type
              - size
              - mount_point
            properties:
              id:
                type: string
                format: uuid
              type:
                $ref: '#/components/schemas/StorageTypeEnum'
              size:
                type: integer
                description: |
                  unit is GB
                  Minimum size is 4 GB
                example: 16
              mount_point:
                type: string
                example: /mnt/images
    AvailableContainerRegistryResponse:
      type: object
      required:
        - kind
        - required_config
        - is_mandatory
      properties:
        kind:
          $ref: '#/components/schemas/ContainerRegistryKindEnum'
        required_config:
          type: object
          additionalProperties: true
        is_mandatory:
          type: boolean
    AvailableContainerRegistryResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/AvailableContainerRegistryResponse'
    AvailableHelmRepositoryResponse:
      type: object
      required:
        - kind
        - required_config
        - is_mandatory
      properties:
        kind:
          $ref: '#/components/schemas/HelmRepositoryKindEnum'
        required_config:
          type: object
          additionalProperties: true
        is_mandatory:
          type: boolean
    AvailableHelmRepositoryResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/AvailableHelmRepositoryResponse'
    AwsCredentialsRequest:
      oneOf:
        - $ref: '#/components/schemas/AwsRoleCredentialsRequest'
        - $ref: '#/components/schemas/AwsStaticCredentialsRequest'
        - $ref: '#/components/schemas/EksAnywhereVsphereRoleCredentialsRequest'
        - $ref: '#/components/schemas/EksAnywhereVsphereStaticCredentialsRequest'
      discriminator:
        propertyName: type
        mapping:
          AWS_ROLE: '#/components/schemas/AwsRoleCredentialsRequest'
          AWS_STATIC: '#/components/schemas/AwsStaticCredentialsRequest'
          EKS_ANYWHERE_VSPHERE_ROLE: '#/components/schemas/EksAnywhereVsphereRoleCredentialsRequest'
          EKS_ANYWHERE_VSPHERE_STATIC: '#/components/schemas/EksAnywhereVsphereStaticCredentialsRequest'
    AwsStaticCredentialsRequest:
      required:
        - type
        - name
        - access_key_id
        - secret_access_key
      properties:
        type:
          type: string
          enum:
            - AWS_STATIC
        name:
          type: string
        access_key_id:
          type: string
        secret_access_key:
          type: string
      x-stoplight:
        id: l0s0fv735914p
      type: object
    AwsRoleCredentialsRequest:
      x-stoplight:
        id: jn74pfty2eq7c
      type: object
      required:
        - type
        - name
        - role_arn
      properties:
        type:
          type: string
          enum:
            - AWS_ROLE
        name:
          type: string
        role_arn:
          type: string
          x-stoplight:
            id: my3ry04bqibxp
    EksAnywhereVsphereStaticCredentialsRequest:
      type: object
      required:
        - type
        - name
        - vsphere_user
        - vsphere_password
        - access_key_id
        - secret_access_key
      properties:
        type:
          type: string
          enum:
            - EKS_ANYWHERE_VSPHERE_STATIC
        name:
          type: string
        vsphere_user:
          type: string
        vsphere_password:
          type: string
        access_key_id:
          type: string
        secret_access_key:
          type: string
    EksAnywhereVsphereRoleCredentialsRequest:
      type: object
      required:
        - type
        - name
        - vsphere_user
        - vsphere_password
        - role_arn
      properties:
        type:
          type: string
          enum:
            - EKS_ANYWHERE_VSPHERE_ROLE
        name:
          type: string
        vsphere_user:
          type: string
        vsphere_password:
          type: string
        role_arn:
          type: string
    OnPremiseCredentialsRequest:
      type: object
      required:
        - name
      properties:
        name:
          type: string
    Backup:
      allOf:
        - $ref: '#/components/schemas/Base'
        - $ref: '#/components/schemas/BackupRequest'
        - type: object
          properties:
            status:
              $ref: '#/components/schemas/Status'
    BackupPaginatedResponseList:
      allOf:
        - $ref: '#/components/schemas/PaginationData'
        - $ref: '#/components/schemas/BackupResponseList'
    BackupRequest:
      type: object
      required:
        - name
        - message
      properties:
        name:
          type: string
        message:
          type: string
    BackupResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Backup'
    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
    BillingInfo:
      type: object
      properties:
        first_name:
          type: string
          example: Forrest
          nullable: true
        last_name:
          type: string
          example: Gump
          nullable: true
        email:
          type: string
          format: email
          example: forrest@gump.com
          description: 'email used for billing, and to receive all invoices by email'
          nullable: true
        address:
          type: string
          example: 21 Jenny Street
          nullable: true
        city:
          type: string
          example: Greenbow
          nullable: true
        zip:
          type: string
          example: '36744'
          nullable: true
        state:
          type: string
          example: Alabama
          description: only for US
          nullable: true
        country_code:
          type: string
          description: ISO code of the country
          example: US
          nullable: true
        company:
          type: string
          description: name of the company to bill
          nullable: true
        vat_number:
          type: string
          nullable: true
    BillingInfoRequest:
      type: object
      required:
        - first_name
        - last_name
        - email
        - address
        - zip
        - country_code
        - city
      properties:
        first_name:
          type: string
          example: Forrest
        last_name:
          type: string
          example: Gump
        email:
          type: string
          format: email
          example: forrest@gump.com
          description: 'email used for billing, and to receive all invoices by email'
        address:
          type: string
          example: 21 Jenny Street
        city:
          type: string
          example: Greenbow
        zip:
          type: string
          example: '36744'
        state:
          type: string
          example: Alabama
          description: only for US
        country_code:
          type: string
          description: ISO code of the country
          example: US
        company:
          type: string
          description: name of the company to bill
        vat_number:
          type: string
    BillingStatus:
      type: object
      properties:
        is_valid:
          type: boolean
        message:
          type: string
    BillingExternalId:
      type: object
      properties:
        id:
          type: string
    Budget:
      type: object
      properties:
        total_in_cents:
          type: integer
          example: 30000
        total:
          type: number
          example: 300
        currency_code:
          type: string
          example: USD
    BuildModeEnum:
      type: string
      enum:
        - DOCKER
      description: |
        `DOCKER` requires `dockerfile_path`
      default: DOCKER
    CloneEnvironmentRequest:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: name is case insensitive
        cluster_id:
          type: string
          format: uuid
        mode:
          $ref: '#/components/schemas/EnvironmentModeEnum'
        apply_deployment_rule:
          type: boolean
          default: false
        project_id:
          type: string
          format: uuid
    CloneServiceRequest:
      type: object
      required:
        - name
        - environment_id
      properties:
        name:
          type: string
        environment_id:
          type: string
          format: uuid
    CloudProvider:
      type: object
      properties:
        short_name:
          type: string
        name:
          type: string
        logo_url:
          type: string
        regions:
          type: array
          items:
            $ref: '#/components/schemas/ClusterRegion'
    CloudProviderEnum:
      type: string
      enum:
        - AWS
        - SCW
        - GCP
        - ON_PREMISE
        - AZURE
    CloudProviderResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/CloudProvider'
    CloudVendorEnum:
      type: string
      enum:
        - AWS
        - SCW
        - GCP
        - DO
        - AZURE
        - OVH
        - CIVO
        - HETZNER
        - ORACLE
        - IBM
        - ON_PREMISE
    Cluster:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - organization
            - name
            - region
            - cloud_provider
          properties:
            organization:
              $ref: '#/components/schemas/ReferenceObject'
            name:
              type: string
              description: name is case-insensitive
            description:
              type: string
            region:
              type: string
            cloud_provider:
              $ref: '#/components/schemas/CloudVendorEnum'
            min_running_nodes:
              type: integer
              default: 1
            max_running_nodes:
              type: integer
              default: 1
            disk_size:
              type: integer
              example: 50
              default: 20
              description: Unit is in GB. The disk size to be used for the node configuration
            disk_iops:
              type: integer
              example: 7800
              minimum: 3000
              maximum: 16000
              description: Unit is operation/seconds. The disk IOPS to be used for the node configuration
            disk_throughput:
              type: integer
              example: 255
              minimum: 125
              maximum: 1000
              description: Unit is in MB/s. The disk thoughput to be used for the node configuration
            instance_type:
              type: string
              example: T3A_LARGE
              description: 'the instance type to be used for this cluster. The list of values can be retrieved via the endpoint /{CloudProvider}/instanceType'
            kubernetes:
              $ref: '#/components/schemas/KubernetesEnum'
            cpu:
              type: integer
              example: 10000
              description: unit is millicores (m). 1000m = 1 cpu
            memory:
              type: integer
              example: 4096
              description: unit is MB. 1024 MB = 1GB
            estimated_cloud_provider_cost:
              type: integer
              description: 'This is an estimation of the cost this cluster will represent on your cloud proider bill, based on your current configuration'
            status:
              $ref: '#/components/schemas/ClusterStateEnum'
            has_access:
              type: boolean
            version:
              type: string
            is_default:
              type: boolean
            is_demo:
              type: boolean
              description: specific flag to indicate that this cluster is a demo one
            production:
              type: boolean
              description: specific flag to indicate that this cluster is a production one
            ssh_keys:
              description: Indicate your public ssh_key to remotely connect to your EC2 instance.
              type: array
              items:
                type: string
            features:
              type: array
              items:
                $ref: '#/components/schemas/ClusterFeatureResponse'
            deployment_status:
              $ref: '#/components/schemas/ClusterDeploymentStatusEnum'
            metrics_parameters:
              $ref: '#/components/schemas/MetricsParameters'
            infrastructure_outputs:
              $ref: '#/components/schemas/InfrastructureOutputs'
            infrastructure_charts_parameters:
              $ref: '#/components/schemas/ClusterInfrastructureChartsParameters'
            keda:
              $ref: '#/components/schemas/ClusterKeda'
            labels_groups:
              $ref: '#/components/schemas/ClusterLabelsGroupList'
            secret_manager_accesses:
              $ref: '#/components/schemas/SecretManagerAccessList'
    ClusterDeleteMode:
      type: string
      description: |
        Indicates the mode to apply on cluster deletion  
        **"hard delete"** means that we delete directly from our database, this is different from a **"trigger delete"** that cleans the resource
        - `DEFAULT`: this is the normal way, trigger delete the cluster only if no environment linked to this cluster remains
        - `DELETE_CLUSTER_AND_QOVERY_CONFIG`: hard delete environments linked to this cluster then trigger delete the cluster
        - `DELETE_QOVERY_CONFIG`: ⚠️ ⚠️ ⚠️ hard delete environments linked to this cluster then hard delete the cluster - whole cluster ressources **are not deleted** on our side and must be deleted on your side
      enum:
        - DEFAULT
        - DELETE_CLUSTER_AND_QOVERY_CONFIG
        - DELETE_QOVERY_CONFIG
      example: DEFAULT
      default: DEFAULT
    ClusterLogs:
      type: object
      properties:
        type:
          type: string
          description: log level
          example: info
        timestamp:
          type: string
          description: log date creation
          format: date-time
          example: '2022-06-22T14:20:17.733084815Z'
        step:
          description: log step
          example: Create
          type: string
          enum:
            - LoadConfiguration
            - Create
            - Created
            - CreateError
            - Pause
            - Paused
            - PauseError
            - Delete
            - Deleted
            - DeleteError
            - RetrieveClusterConfig
            - RetrieveClusterResources
            - ValidateSystemRequirements
            - UnderMigration
            - Unknown
        message:
          type: object
          properties:
            safe_message:
              type: string
              description: log global message
              example: Preparing to delete EKS cluster.
        error:
          type: object
          description: Present only for `error` log
          properties:
            tag:
              type: string
              description: log error tag
              example: CANNOT_UNINSTALL_HELM_CHART
            user_log_message:
              type: string
              description: log details about the error
              example: Wasn't able to delete all objects type Cert-Manager
            link:
              type: string
              description: link to our documentation
            hint_message:
              type: string
              description: hint the user can follow
            event_details:
              type: object
              properties:
                provider_kind:
                  type: string
                  description: cloud provider used
                  example: aws
                region:
                  type: string
                  example: eu-west-3
                transmitter:
                  type: object
                  properties:
                    type:
                      type: string
                      example: kubernetes
                    id:
                      type: string
                      example: za6ecdf3f
                    name:
                      type: string
                      example: cluster-name
            underlying_error:
              type: object
              properties:
                message:
                  type: string
                  description: technical details about the error
        details:
          type: object
          description: 'Present only for `info`, `warning` and `debug` logs'
          properties:
            provider_kind:
              type: string
              description: cloud provider used
              example: aws
            region:
              type: string
              example: eu-west-3
            transmitter:
              type: object
              properties:
                type:
                  type: string
                  example: kubernetes
                id:
                  type: string
                  example: za6ecdf3f
                name:
                  type: string
                  example: cluster-name
    ClusterCloudProviderInfo:
      type: object
      properties:
        cloud_provider:
          $ref: '#/components/schemas/CloudProviderEnum'
        credentials:
          type: object
          properties:
            id:
              type: string
              format: uuid
            name:
              type: string
        region:
          type: string
    ClusterCloudProviderInfoRequest:
      type: object
      properties:
        cloud_provider:
          $ref: '#/components/schemas/CloudProviderEnum'
        credentials:
          type: object
          properties:
            id:
              type: string
              format: uuid
            name:
              type: string
        region:
          type: string
    ClusterDnsProviderRequest:
      type: object
      required:
        - dns_provider
      properties:
        dns_provider:
          $ref: '#/components/schemas/ClusterDnsProviderRequestProvider'
    ClusterDnsProviderResponse:
      type: object
      required:
        - dns_provider
      properties:
        dns_provider:
          $ref: '#/components/schemas/ClusterDnsProviderResponseProvider'
    ClusterDnsProviderRequestProvider:
      oneOf:
        - $ref: '#/components/schemas/QoveryDnsProviderRequest'
        - $ref: '#/components/schemas/CloudflareDnsProviderRequest'
        - $ref: '#/components/schemas/Route53DnsProviderRequest'
      discriminator:
        propertyName: provider
        mapping:
          QOVERY: '#/components/schemas/QoveryDnsProviderRequest'
          CLOUDFLARE: '#/components/schemas/CloudflareDnsProviderRequest'
          ROUTE53: '#/components/schemas/Route53DnsProviderRequest'
    ClusterDnsProviderResponseProvider:
      oneOf:
        - $ref: '#/components/schemas/QoveryDnsProviderResponse'
        - $ref: '#/components/schemas/CloudflareDnsProviderResponse'
        - $ref: '#/components/schemas/Route53DnsProviderResponse'
      discriminator:
        propertyName: provider
        mapping:
          QOVERY: '#/components/schemas/QoveryDnsProviderResponse'
          CLOUDFLARE: '#/components/schemas/CloudflareDnsProviderResponse'
          ROUTE53: '#/components/schemas/Route53DnsProviderResponse'
    QoveryDnsProviderRequest:
      type: object
      required:
        - provider
        - domain
      properties:
        provider:
          type: string
          enum:
            - QOVERY
        domain:
          type: string
          example: example.com
    CloudflareDnsProviderRequest:
      type: object
      required:
        - provider
        - domain
        - email
        - api_token
      properties:
        provider:
          type: string
          enum:
            - CLOUDFLARE
        domain:
          type: string
          example: example.com
        email:
          type: string
          format: email
          example: admin@example.com
        api_token:
          type: string
          minLength: 1
          writeOnly: true
          description: Cloudflare API token. Must be provided when editing Cloudflare DNS provider.
        proxied:
          type: boolean
          default: false
    Route53DnsProviderRequest:
      type: object
      required:
        - provider
        - domain
        - credentials
        - aws_region
      properties:
        provider:
          type: string
          enum:
            - ROUTE53
        domain:
          type: string
          example: example.com
        credentials:
          $ref: '#/components/schemas/Route53DnsProviderRequestCredentials'
        aws_region:
          type: string
          example: eu-west-3
        hosted_zone_id:
          type: string
          nullable: true
          example: Z0965488LE74BWDEVQDB
    Route53DnsProviderRequestCredentials:
      oneOf:
        - $ref: '#/components/schemas/Route53StaticCredentialsRequest'
      discriminator:
        propertyName: type
        mapping:
          STATIC: '#/components/schemas/Route53StaticCredentialsRequest'
    Route53StaticCredentialsRequest:
      type: object
      required:
        - type
        - aws_access_key_id
        - aws_secret_access_key
      properties:
        type:
          type: string
          enum:
            - STATIC
        aws_access_key_id:
          type: string
          minLength: 1
          description: AWS access key identifier. It is returned by the GET endpoint and must be sent back when editing Route53.
        aws_secret_access_key:
          type: string
          minLength: 1
          writeOnly: true
          description: AWS secret access key. Must be provided when editing Route53 DNS provider.
    QoveryDnsProviderResponse:
      type: object
      required:
        - provider
        - domain
      properties:
        provider:
          type: string
          enum:
            - QOVERY
        domain:
          type: string
          example: example.com
    CloudflareDnsProviderResponse:
      type: object
      required:
        - provider
        - domain
        - email
        - proxied
      properties:
        provider:
          type: string
          enum:
            - CLOUDFLARE
        domain:
          type: string
          example: example.com
        email:
          type: string
          format: email
          example: admin@example.com
        proxied:
          type: boolean
    Route53DnsProviderResponse:
      type: object
      required:
        - provider
        - domain
        - credentials
        - aws_region
      properties:
        provider:
          type: string
          enum:
            - ROUTE53
        domain:
          type: string
          example: example.com
        credentials:
          $ref: '#/components/schemas/Route53DnsProviderResponseCredentials'
        aws_region:
          type: string
          example: eu-west-3
        hosted_zone_id:
          type: string
          nullable: true
          example: Z0965488LE74BWDEVQDB
    Route53DnsProviderResponseCredentials:
      oneOf:
        - $ref: '#/components/schemas/Route53StaticCredentialsResponse'
      discriminator:
        propertyName: type
        mapping:
          STATIC: '#/components/schemas/Route53StaticCredentialsResponse'
    Route53StaticCredentialsResponse:
      type: object
      required:
        - type
        - aws_access_key_id
      properties:
        type:
          type: string
          enum:
            - STATIC
        aws_access_key_id:
          type: string
          description: AWS access key identifier.

    ClusterKarpenterPrivateSubnetIdsPutRequest:
      type: object
      properties:
        eks_karpenter_fargate_subnets_zone_a_ids:
          type: array
          items:
            type: string
        eks_karpenter_fargate_subnets_zone_b_ids:
          type: array
          items:
            type: string
        eks_karpenter_fargate_subnets_zone_c_ids:
          type: array
          items:
            type: string
    ClusterCredentials:
      oneOf:
        - $ref: '#/components/schemas/AwsStaticClusterCredentials'
        - $ref: '#/components/schemas/ScalewayClusterCredentials'
        - $ref: '#/components/schemas/GenericClusterCredentials'
        - $ref: '#/components/schemas/AwsRoleClusterCredentials'
        - $ref: '#/components/schemas/EksAnywhereVsphereClusterCredentials'
        - $ref: '#/components/schemas/AzureStaticClusterCredentials'
        - $ref: '#/components/schemas/GcpStaticClusterCredentials'
        - $ref: '#/components/schemas/GcpWorkloadIdentityFederationClusterCredentials'
      discriminator:
        propertyName: object_type
        mapping:
          AWS: '#/components/schemas/AwsStaticClusterCredentials'
          AWS_ROLE: '#/components/schemas/AwsRoleClusterCredentials'
          EKS_ANYWHERE_VSPHERE: '#/components/schemas/EksAnywhereVsphereClusterCredentials'
          SCW: '#/components/schemas/ScalewayClusterCredentials'
          OTHER: '#/components/schemas/GenericClusterCredentials'
          AZURE: '#/components/schemas/AzureStaticClusterCredentials'
          GCP: '#/components/schemas/GcpStaticClusterCredentials'
          GCP_WORKLOAD_IDENTITY_FEDERATION: '#/components/schemas/GcpWorkloadIdentityFederationClusterCredentials'
    AwsStaticClusterCredentials:
      x-stoplight:
        id: s0aosg7la96hp
      title: AwsStaticClusterCredentials
      type: object
      required:
        - id
        - name
        - access_key_id
        - object_type
      properties:
        id:
          type: string
          x-stoplight:
            id: en79y0yc76xhp
          format: uuid
        name:
          type: string
          x-stoplight:
            id: mx0mwek4ubieo
        access_key_id:
          type: string
          x-stoplight:
            id: 6g20j0ggu8nqc
        object_type:
          x-stoplight:
            id: ravczabg8e2sp
          enum:
            - AWS
    AwsRoleClusterCredentials:
      title: AwsRoleClusterCredentials
      x-stoplight:
        id: f5c1iewg51zam
      type: object
      required:
        - id
        - name
        - role_arn
        - object_type
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        role_arn:
          type: string
          x-stoplight:
            id: 8l5tuxflg76d2
        object_type:
          enum:
            - AWS_ROLE
    EksAnywhereVsphereClusterCredentials:
      title: EksAnywhereVsphereClusterCredentials
      type: object
      required:
        - id
        - name
        - vsphere_user
        - object_type
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        vsphere_user:
          type: string
        access_key_id:
          type: string
          nullable: true
        role_arn:
          type: string
          nullable: true
        object_type:
          enum:
            - EKS_ANYWHERE_VSPHERE
    ScalewayClusterCredentials:
      title: ScalewayClusterCredentials
      x-stoplight:
        id: j3ep46eyah9p5
      type: object
      required:
        - id
        - name
        - scaleway_access_key
        - object_type
        - scaleway_project_id
        - scaleway_organization_id
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        scaleway_access_key:
          type: string
          x-stoplight:
            id: 4db3031sq6tea
        object_type:
          enum:
            - SCW
        scaleway_project_id:
          type: string
          x-stoplight:
            id: 0630fqc615vg4
        scaleway_organization_id:
          type: string
          x-stoplight:
            id: 5ui02pola5ndr
    GenericClusterCredentials:
      title: GenericClusterCredentials
      x-stoplight:
        id: gtibx4nzrvxm9
      type: object
      required:
        - id
        - name
        - object_type
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        object_type:
          enum:
            - OTHER
    ClusterCredentialsResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ClusterCredentials'
    ClusterFeatureResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        title:
          type: string
          nullable: false
        description:
          type: string
          nullable: true
        cost_per_month_in_cents:
          type: integer
          example: 9900
          deprecated: true
          nullable: true
        cost_per_month:
          type: number
          example: 99
          deprecated: true
          nullable: true
        currency_code:
          type: string
          example: USD
          deprecated: true
          nullable: true
        is_cloud_provider_paying_feature:
          type: boolean
          nullable: false
          example: true
        cloud_provider_feature_documentation:
          type: string
          example: 'https://cloud.provider.doc/feature'
          nullable: true
        is_qovery_paying_feature:
          type: boolean
          nullable: false
          example: true
        qovery_feature_documentation:
          type: string
          example: 'https://qovery.doc/feature'
          nullable: true
        value_type:
          type: string
          nullable: false
          enum:
            - BOOLEAN
        value_object:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ClusterFeatureStringResponse'
            - $ref: '#/components/schemas/ClusterFeatureBooleanResponse'
            - $ref: '#/components/schemas/ClusterFeatureAwsExistingVpcResponse'
            - $ref: '#/components/schemas/ClusterFeatureGcpExistingVpcResponse'
            - $ref: '#/components/schemas/ClusterFeatureKarpenterParametersResponse'
            - $ref: '#/components/schemas/ClusterFeatureNatGatewayParametersResponse'
          discriminator:
            propertyName: type
            mapping:
              STRING: '#/components/schemas/ClusterFeatureStringResponse'
              BOOLEAN: '#/components/schemas/ClusterFeatureBooleanResponse'
              AWS_USER_PROVIDED_NETWORK: '#/components/schemas/ClusterFeatureAwsExistingVpcResponse'
              GCP_USER_PROVIDED_NETWORK: '#/components/schemas/ClusterFeatureGcpExistingVpcResponse'
              KARPENTER: '#/components/schemas/ClusterFeatureKarpenterParametersResponse'
              NAT_GATEWAY: '#/components/schemas/ClusterFeatureNatGatewayParametersResponse'
        is_value_updatable:
          type: boolean
          default: false
        accepted_values:
          type: array
          items:
            oneOf:
              - type: string
              - type: boolean
    ClusterFeatureResponseTypeEnum:
      type: string
      enum:
        - STRING
        - BOOLEAN
        - AWS_USER_PROVIDED_NETWORK
        - GCP_USER_PROVIDED_NETWORK
        - KARPENTER
        - NAT_GATEWAY
    ClusterFeatureStringResponse:
      type: object
      required:
        - type
        - value
      properties:
        type:
          $ref: '#/components/schemas/ClusterFeatureResponseTypeEnum'
        value:
          type: string
    ClusterFeatureBooleanResponse:
      type: object
      required:
        - type
        - value
      properties:
        type:
          $ref: '#/components/schemas/ClusterFeatureResponseTypeEnum'
        value:
          type: boolean
    ClusterFeatureAwsExistingVpcResponse:
      type: object
      required:
        - type
        - value
      properties:
        type:
          $ref: '#/components/schemas/ClusterFeatureResponseTypeEnum'
        value:
          $ref: '#/components/schemas/ClusterFeatureAwsExistingVpc'
    ClusterFeatureGcpExistingVpcResponse:
      type: object
      required:
        - type
        - value
      properties:
        type:
          $ref: '#/components/schemas/ClusterFeatureResponseTypeEnum'
        value:
          $ref: '#/components/schemas/ClusterFeatureGcpExistingVpc'
    ClusterFeatureNatGatewayParametersResponse:
      type: object
      required:
        - type
        - value
      properties:
        type:
          $ref: '#/components/schemas/ClusterFeatureResponseTypeEnum'
        value:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/ClusterFeatureNatGatewayParameters'
    ClusterFeatureAwsExistingVpc:
      type: object
      required:
        - aws_vpc_eks_id
        - eks_subnets_zone_a_ids
        - eks_subnets_zone_b_ids
        - eks_subnets_zone_c_ids
      properties:
        aws_vpc_eks_id:
          type: string
        eks_subnets_zone_a_ids:
          type: array
          items:
            type: string
        eks_subnets_zone_b_ids:
          type: array
          items:
            type: string
        eks_subnets_zone_c_ids:
          type: array
          items:
            type: string
        documentdb_subnets_zone_a_ids:
          type: array
          nullable: true
          items:
            type: string
        documentdb_subnets_zone_b_ids:
          type: array
          nullable: true
          items:
            type: string
        documentdb_subnets_zone_c_ids:
          type: array
          nullable: true
          items:
            type: string
        elasticache_subnets_zone_a_ids:
          type: array
          nullable: true
          items:
            type: string
        elasticache_subnets_zone_b_ids:
          type: array
          nullable: true
          items:
            type: string
        elasticache_subnets_zone_c_ids:
          type: array
          nullable: true
          items:
            type: string
        rds_subnets_zone_a_ids:
          type: array
          nullable: true
          items:
            type: string
        rds_subnets_zone_b_ids:
          type: array
          nullable: true
          items:
            type: string
        rds_subnets_zone_c_ids:
          type: array
          nullable: true
          items:
            type: string
        eks_karpenter_fargate_subnets_zone_a_ids:
          type: array
          x-stoplight:
            id: 8rttrya00wmkr
          nullable: true
          items:
            x-stoplight:
              id: rtxx96v011irr
            type: string
        eks_karpenter_fargate_subnets_zone_b_ids:
          type: array
          x-stoplight:
            id: xnbtr8676culs
          nullable: true
          items:
            x-stoplight:
              id: 1w592qk4spodn
            type: string
        eks_karpenter_fargate_subnets_zone_c_ids:
          type: array
          x-stoplight:
            id: st5domzqqkcoh
          nullable: true
          items:
            x-stoplight:
              id: xyjjh50ckrzee
            type: string
        eks_create_nodes_in_private_subnet:
          type: boolean
          default: true
    ClusterFeatureGcpExistingVpc:
      type: object
      required:
        - vpc_name
      properties:
        vpc_name:
          type: string
        vpc_project_id:
          type: string
          nullable: true
        subnetwork_name:
          type: string
          nullable: true
        ip_range_services_name:
          type: string
          nullable: true
        ip_range_pods_name:
          type: string
          nullable: true
        additional_ip_range_pods_names:
          type: array
          items:
            type: string
        private_nodes:
          type: boolean
          default: false
    ClusterFeatureNatGatewayParameters:
      type: object
      properties:
        nat_gateway_type:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ClusterFeatureNatGatewayTypeScaleway'
            - $ref: '#/components/schemas/ClusterFeatureNatGatewayTypeGcp'
          discriminator:
            propertyName: provider
            mapping:
              scaleway: '#/components/schemas/ClusterFeatureNatGatewayTypeScaleway'
              gcp: '#/components/schemas/ClusterFeatureNatGatewayTypeGcp'
    ClusterFeatureNatGatewayTypeScaleway:
      type: object
      required:
        - provider
        - type
      properties:
        provider:
          type: string
          enum:
            - scaleway
        type:
          type: string
          enum:
            - VPC-GW-S
            - VPC-GW-M
            - VPC-GW-L
            - VPC-GW-XL
    ClusterFeatureNatGatewayTypeGcp:
      type: object
      required:
        - provider
        - static_ips_enabled
        - static_ips_count
      properties:
        provider:
          type: string
          enum:
            - gcp
        static_ips_enabled:
          type: boolean
        static_ips_count:
          type: integer
          minimum: 1
          description: Number of static IPs to allocate. Must be >= 1 when static_ips_enabled is true.
    ClusterFeatureResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ClusterFeatureResponse'
    ClusterInstanceTypeResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            type: object
            required:
              - type
              - name
              - cpu
              - ram_in_gb
              - bandwidth_in_gbps
              - bandwidth_guarantee
            properties:
              type:
                type: string
                example: T3A_XLARGE
              name:
                type: string
                example: t3a.xlarge
              cpu:
                type: integer
                example: 2
              ram_in_gb:
                type: integer
                example: 8
              bandwidth_in_gbps:
                type: string
                example: '5.2'
              bandwidth_guarantee:
                type: string
                example: UpTo
              architecture:
                type: string
                example: ARM64
              gpu_info:
                $ref: '#/components/schemas/ClusterInstanceGpuInfo'
              attributes:
                $ref: '#/components/schemas/ClusterInstanceAttributes'
    ClusterReadinessStatus:
      type: object
      properties:
        is_ready:
          type: boolean
    ClusterRegion:
      type: object
      required:
        - name
        - country_code
        - country
        - city
      properties:
        name:
          type: string
        country_code:
          type: string
        country:
          type: string
        city:
          type: string
        arm_supported:
          type: boolean
          description: Whether ARM instance types are available in this region
        zones:
          type: array
          description: List of availability zones supported by this region
          items:
            type: string
          example:
            - "1"
            - "2"
            - "3"
    ClusterRegionResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ClusterRegion'
    ClusterRequest:
      type: object
      required:
        - name
        - region
        - cloud_provider
      properties:
        name:
          type: string
          description: name is case-insensitive
        description:
          type: string
        region:
          type: string
        cloud_provider:
          $ref: '#/components/schemas/CloudVendorEnum'
        cloud_provider_credentials:
          $ref: '#/components/schemas/ClusterCloudProviderInfoRequest'
        min_running_nodes:
          type: integer
          default: 1
        max_running_nodes:
          type: integer
          default: 1
        disk_size:
          type: integer
          example: 50
          default: 40
          description: Unit is in GB. The disk size to be used for the node configuration
        disk_iops:
          type: integer
          example: 7800
          minimum: 3000
          maximum: 16000
          description: Unit is operation/seconds. The disk IOPS to be used for the node configuration
        disk_throughput:
          type: integer
          example: 255
          minimum: 125
          maximum: 1000
          description: Unit is in MB/s. The disk thoughput to be used for the node configuration
        instance_type:
          type: string
          example: T3A_LARGE
          description: 'the instance type to be used for this cluster. The list of values can be retrieved via the endpoint /{CloudProvider}/instanceType'
        kubernetes:
          $ref: '#/components/schemas/KubernetesEnum'
        production:
          type: boolean
          description: specific flag to indicate that this cluster is a production one
        ssh_keys:
          description: Indicate your public ssh_key to remotely connect to your EC2 instance.
          type: array
          items:
            type: string
        features:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                nullable: false
              value:
                nullable: true
                oneOf:
                  - type: string
                  - type: boolean
                  - $ref: '#/components/schemas/ClusterFeatureAwsExistingVpc'
                  - $ref: '#/components/schemas/ClusterFeatureGcpExistingVpc'
                  - $ref: '#/components/schemas/ClusterFeatureKarpenterParameters'
                  - $ref: '#/components/schemas/ClusterFeatureNatGatewayParameters'
        metrics_parameters:
          $ref: '#/components/schemas/MetricsParameters'
        infrastructure_charts_parameters:
          $ref: '#/components/schemas/ClusterInfrastructureChartsParameters'
        keda:
          $ref: '#/components/schemas/ClusterKeda'
        labels_groups:
          $ref: '#/components/schemas/ClusterLabelsGroupList'
        secret_manager_accesses:
          $ref: '#/components/schemas/SecretManagerAccessRequestList'
    ClusterResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Cluster'
    ClusterAnalysisKind:
      type: string
      enum:
        - COST_RECOMMENDATION
        - DEPRECATED_API_CHECK
    ClusterAnalysisOutputFormat:
      type: string
      enum:
        - TABLE
        - JSON
        - CSV
    ClusterAnalysisStatus:
      type: string
      enum:
        - PENDING
        - RUNNING
        - SUCCEEDED
        - FAILED
        - TERMINATED
    ClusterAnalysisRequest:
      type: object
      required:
        - kind
        - output_format
      properties:
        kind:
          $ref: '#/components/schemas/ClusterAnalysisKind'
        output_format:
          $ref: '#/components/schemas/ClusterAnalysisOutputFormat'
        prometheus_url:
          type: string
          nullable: true
          description: Optional Prometheus URL for COST_RECOMMENDATION analysis. When omitted, the engine resolves the default Qovery OBS endpoint.
        cmd_args:
          type: array
          description: Optional allowlisted KRR arguments for COST_RECOMMENDATION analysis. The engine validates and rejects unsupported or unsafe KRR flags.
          items:
            type: string
          example:
            - --history_duration
            - '336'
            - --timeframe_duration
            - '2.5'
            - --cpu-request
            - '99'
            - --cpu-limit
            - '99'
            - --memory-buffer-percentage
            - '15'
            - --use-oomkill-data
            - --oom-memory-buffer-percentage
            - '25'
            - -n
            - default
        target_kubernetes_version:
          type: string
          nullable: true
          description: Optional target Kubernetes version for DEPRECATED_API_CHECK analysis.
          example: '1.32'
    ClusterAnalysisResponse:
      type: object
      required:
        - id
        - cluster_id
        - organization_id
        - kind
        - status
        - output_format
        - created_at
        - updated_at
        - triggered_by
      properties:
        id:
          type: string
          format: uuid
        cluster_id:
          type: string
          format: uuid
        organization_id:
          type: string
          format: uuid
        kind:
          $ref: '#/components/schemas/ClusterAnalysisKind'
        status:
          $ref: '#/components/schemas/ClusterAnalysisStatus'
        output_format:
          $ref: '#/components/schemas/ClusterAnalysisOutputFormat'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        triggered_by:
          type: string
        error_message:
          type: string
          nullable: true
    ClusterAnalysisResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAnalysisResponse'
    ClusterAnalysisLogResponse:
      type: object
      required:
        - timestamp
        - level
        - message
        - line_order
      properties:
        timestamp:
          type: string
          format: date-time
        level:
          type: string
        message:
          type: string
        line_order:
          type: integer
    ClusterAnalysisLogResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAnalysisLogResponse'
    ClusterLogsResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ClusterLogs'
    ClusterRoutingTable:
      type: object
      properties:
        results:
          type: array
          items:
            type: object
            required:
              - destination
              - target
              - description
            properties:
              destination:
                type: string
              target:
                type: string
              description:
                type: string
    ClusterRoutingTableRequest:
      type: object
      required:
        - routes
      properties:
        routes:
          type: array
          items:
            type: object
            required:
              - destination
              - target
              - description
            properties:
              destination:
                type: string
              target:
                type: string
              description:
                type: string
    ClusterStatus:
      type: object
      required:
        - cluster_id
        - status
        - is_deployed
        - reason
      properties:
        cluster_id:
          type: string
          format: uuid
        status:
          $ref: '#/components/schemas/ClusterStateEnum'
        is_deployed:
          type: boolean
        next_k8s_available_version:
          type: string
          nullable: true
          example: '1.28'
        last_execution_id:
          type: string
          nullable: true
          example: f73e3833-922a-48a5-9dbd-6163f43f9143-1656410242
        cluster_lock:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/ClusterLock'
        last_deployment_date:
          type: string
          format: date-time
          nullable: true
          example: '2022-06-22T14:20:17.733084815Z'
        reason:
          $ref: '#/components/schemas/DeploymentInfraReason'
    DeploymentInfraReason:
      type: string
      enum:
        - UNSPECIFIED
        - MAINTENANCE
    ClusterStatusResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ClusterStatus'
    ClusterAdvancedSettings:
      type: object
      properties:
        aws.cloudwatch.eks_logs_retention_days:
          type: integer
          description: Set the number of retention days for EKS Cloudwatch logs
        aws.vpc.enable_s3_flow_logs:
          type: boolean
          description: Enable flow logs for on the VPC and store them in an S3 bucket
        aws.vpc.flow_logs_retention_days:
          type: integer
          description: Set the number of retention days for flow logs. Disable with value "0"
        aws.vpc.enable_nat_gateway_secondary_eip:
          type: boolean
          description: Enable a secondary Elastic IP per NAT Gateway, increasing the number of outbound public IPs. Useful for services with IP-based rate limits.
        loki.log_retention_in_week:
          type: integer
          description: For how long in week loki is going to keep logs of your applications
        loki.deployment_mode:
          type: string
          description: 'Loki deployment topology. "single_binary" runs Loki as one pod; "simple_scalable" splits it into separate write, read, and backend components for larger clusters.'
          enum:
            - single_binary
            - simple_scalable
        loki.single_binary.cpu_request_m:
          type: integer
          description: CPU request (in milli-CPU) for the Loki pod when running in single_binary mode.
        loki.single_binary.cpu_limit_m:
          type: integer
          description: CPU limit (in milli-CPU) for the Loki pod when running in single_binary mode.
        loki.single_binary.memory_request_mib:
          type: integer
          description: Memory request (in MiB) for the Loki pod when running in single_binary mode.
        loki.single_binary.memory_limit_mib:
          type: integer
          description: Memory limit (in MiB) for the Loki pod when running in single_binary mode.
        loki.write.cpu_request_m:
          type: integer
          description: CPU request (in milli-CPU) for the Loki write component when running in simple_scalable mode.
        loki.write.cpu_limit_m:
          type: integer
          description: CPU limit (in milli-CPU) for the Loki write component when running in simple_scalable mode.
        loki.write.memory_request_mib:
          type: integer
          description: Memory request (in MiB) for the Loki write component when running in simple_scalable mode.
        loki.write.memory_limit_mib:
          type: integer
          description: Memory limit (in MiB) for the Loki write component when running in simple_scalable mode.
        loki.read.cpu_request_m:
          type: integer
          description: CPU request (in milli-CPU) for the Loki read component when running in simple_scalable mode.
        loki.read.cpu_limit_m:
          type: integer
          description: CPU limit (in milli-CPU) for the Loki read component when running in simple_scalable mode.
        loki.read.memory_request_mib:
          type: integer
          description: Memory request (in MiB) for the Loki read component when running in simple_scalable mode.
        loki.read.memory_limit_mib:
          type: integer
          description: Memory limit (in MiB) for the Loki read component when running in simple_scalable mode.
        loki.backend.cpu_request_m:
          type: integer
          description: CPU request (in milli-CPU) for the Loki backend component when running in simple_scalable mode.
        loki.backend.cpu_limit_m:
          type: integer
          description: CPU limit (in milli-CPU) for the Loki backend component when running in simple_scalable mode.
        loki.backend.memory_request_mib:
          type: integer
          description: Memory request (in MiB) for the Loki backend component when running in simple_scalable mode.
        loki.backend.memory_limit_mib:
          type: integer
          description: Memory limit (in MiB) for the Loki backend component when running in simple_scalable mode.
        registry.image_retention_time:
          type: integer
          description: Configure the number of seconds before cleaning images in the registry
        cloud_provider.container_registry.tags:
          type: object
          description: Add additional tags on the cluster dedicated registry
          additionalProperties:
            type: string
        aws.eks.enable_alb_controller:
          type: boolean
          x-stoplight:
            id: m2nc6klof8mvh
          default: true
          description: |-
            Enable the AWS ALB controller to manage the load balancer for the cluster.
            Note: Changing this feature will create a 10 min max downtime on your application's public access (time to delete, replace and propagate DNS of the new load balancer) and will requiere to update all services with TCP/UDP open ports.
        aws.eks.enable_efs_addon:
          type: boolean
          description: Enable the AWS EFS CSI driver EKS add-on to provision EFS-backed persistent volumes on the cluster.
          default: false
        aws.eks.efs.throughput_mode:
          type: string
          description: 'EFS throughput mode. "elastic" scales automatically (pay-per-use), "bursting" uses burst credits based on file system size, "provisioned" requires a fixed throughput value.'
          default: elastic
          enum:
            - bursting
            - elastic
            - provisioned
        aws.eks.efs.performance_mode:
          type: string
          description: 'EFS performance mode. "generalPurpose" offers lowest latency (recommended). "maxIO" provides higher aggregate throughput for highly parallelized workloads. Cannot be changed after creation.'
          default: generalPurpose
          enum:
            - generalPurpose
            - maxIO
        aws.eks.efs.transition_to_ia:
          type: string
          description: 'Lifecycle policy to transition files to Infrequent Access (IA) storage after the specified period. IA storage costs less but has a per-read charge. Empty string disables the policy.'
          default: AFTER_30_DAYS
          enum:
            - AFTER_1_DAY
            - AFTER_7_DAYS
            - AFTER_14_DAYS
            - AFTER_30_DAYS
            - AFTER_60_DAYS
            - AFTER_90_DAYS
            - ''
        load_balancer.size:
          type: string
          description: Select the size of the main load_balancer (only effective for Scaleway)
        database.postgresql.deny_any_access:
          type: boolean
          description: Deny public access to any PostgreSQL database
          x-stoplight:
            id: zltwd7w7mxld8
        database.postgresql.allowed_cidrs:
          type: array
          description: List of CIDRs allowed to access the PostgreSQL database
          items:
            type: string
        database.mysql.deny_any_access:
          type: boolean
          description: Deny public access to any MySql database
          x-stoplight:
            id: kst5exbae6ory
        database.mysql.allowed_cidrs:
          type: array
          description: List of CIDRs allowed to access the MySql database
          items:
            type: string
        database.mongodb.deny_any_access:
          type: boolean
          description: Deny public access to any MongoDB/DocumentDB database
          x-stoplight:
            id: nc66h7gqz809g
        database.mongodb.allowed_cidrs:
          type: array
          description: List of CIDRs allowed to access the MongoDB/DocumentDB database
          items:
            type: string
        database.redis.deny_any_access:
          type: boolean
          description: Deny public access to any Redis database
          x-stoplight:
            id: djo0khm8r7gdy
        database.redis.allowed_cidrs:
          type: array
          description: List of CIDRs allowed to access the Redis database
          items:
            type: string
        aws.iam.admin_group:
          type: string
          description: AWS IAM group name with cluster access
        aws.eks.ec2.metadata_imds:
          type: string
          enum:
            - optional
            - required
          description: |
            Specify the [IMDS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) version you want to use:
              * `required`: IMDS V2 only
              * `optional`: IMDS V1 + V2
        aws.eks.ec2.ami:
          type: string
          default: AmazonLinux2023
          description: |
            Select the AMI to use for EKS worker nodes (Karpenter only):
              * `AmazonLinux2`: Amazon Linux 2
              * `AmazonLinux2023`: Amazon Linux 2023 (default)
              * `Bottlerocket`: Bottlerocket OS
              * `ami-xxx` or `my-custom-ami-*`: A custom AMI ID or name pattern (assumes AL2023-based)
              * `al2:ami-xxx`: A custom AMI based on Amazon Linux 2
              * `al2023:ami-xxx`: A custom AMI based on Amazon Linux 2023
              * `bottlerocket:ami-xxx`: A custom AMI based on Bottlerocket
        pleco.resources_ttl:
          type: integer
          deprecated: true
        registry.mirroring_mode:
          $ref: '#/components/schemas/RegistryMirroringModeEnum'
        nginx.vcpu.request_in_milli_cpu:
          type: integer
          description: vcpu request in millicores
        nginx.vcpu.limit_in_milli_cpu:
          type: integer
          description: vcpu limit in millicores
        nginx.memory.request_in_mib:
          type: integer
          description: memory request in MiB
        nginx.memory.limit_in_mib:
          type: integer
          description: memory limit in MiB
        envoy.gateway_api.http_request_timeout_seconds:
          type: integer
          nullable: true
          minimum: 0
          description: Sets the default request timeout (in seconds) applied to Gateway API routes when the service does not override it.
        envoy.gateway_api.http_connection_idle_timeout_seconds:
          type: integer
          nullable: true
          minimum: 0
          description: Sets the default idle connection timeout (in seconds) applied to Gateway API routes when the service does not override it.
        envoy.gateway_api.retry.num_retries:
          type: integer
          nullable: true
          minimum: 0
          description: Sets the default number of retry attempts applied to Gateway API routes when the service does not override it.
        envoy.gateway_api.retry.retry_on:
          type: string
          nullable: true
          description: Default comma-separated retry triggers applied to Gateway API routes when the service does not override them.
        envoy.gateway_api.retry.http_status_codes:
          type: string
          nullable: true
          description: Default comma-separated HTTP status codes (100..599) retried when retry_on includes retriable-status-codes.
        envoy.gateway_api.retry.per_try_timeout_seconds:
          type: integer
          nullable: true
          minimum: 1
          description: Sets the default timeout (in seconds) applied to each retry attempt when the service does not override it.
        nginx.hpa.cpu_utilization_percentage_threshold:
          type: integer
          description: hpa cpu threshold in percentage
        nginx.hpa.min_number_instances:
          type: integer
          description: hpa minimum number of instances
        nginx.hpa.max_number_instances:
          type: integer
          description: hpa maximum number of instances
        storageclass.fast_ssd:
          type: string
          description: storage class name to use to provision pvc
        qovery.static_ip_mode:
          type: boolean
          x-stoplight:
            id: i7u9vjd0o89g8
          description: |-
            To limit public access from the internet to your Kubernetes cluster endpoint.
            You can define whitelisted CIDR in k8s.api.allowed_public_access_cidrs.
        k8s.api.allowed_public_access_cidrs:
          type: array
          x-stoplight:
            id: w7d7zyd1de9n6
          description: |-
            Set custom sources to public access endpoint.
            Use CIDR notation to specify an IP address range 
            (for example, ['203.0.113.5/32','203.0.100/32'])
          items:
            x-stoplight:
              id: v8r1f6alk5abp
            type: string
    Commit:
      type: object
      nullable: true
      required:
        - git_commit_id
        - created_at
        - author_name
        - message
        - tag
      properties:
        created_at:
          type: string
          format: date-time
        git_commit_id:
          type: string
        tag:
          type: string
          example: v2.1.1
        message:
          type: string
        author_name:
          type: string
        author_avatar_url:
          type: string
        commit_page_url:
          type: string
    CommitResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Commit'
    EksAnywhereCommitRequest:
      type: object
      required:
        - commit_id
      properties:
        commit_id:
          type: string
    EksAnywhereCommitResponse:
      type: object
      required:
        - commit_id
      properties:
        commit_id:
          type: string
    EksAnywhereClusterJwtResponse:
      type: object
      required:
        - jwt
      properties:
        jwt:
          type: string
    CompanySizeEnum:
      type: string
      enum:
        - 1-10
        - 11-50
        - 51-200
        - 201-500
        - 500+
    ContainerAdvancedSettings:
      type: object
      properties:
        deployment.custom_domain_check_enabled:
          type: boolean
          description: disable custom domain check when deploying an application
        deployment.termination_grace_period_seconds:
          type: integer
          description: define how long in seconds an application is supposed to be stopped gracefully
        deployment.affinity.node.required:
          type: object
          description: Set pod placement on specific Kubernetes nodes labels
          additionalProperties:
            type: string
        deployment.antiaffinity.pod:
          type: string
          enum:
            - Preferred
            - Requirred
          description: |
            Define how you want pods affinity to behave:
            * `Preferred` allows, but does not require, pods of a given service are not co-located (or co-hosted) on a single node
            * `Requirred` ensures that the pods of a given service are not co-located (or co-hosted) on a single node (safer in term of availability but can be expensive depending on the number of replicas)
        deployment.topology_spread.zone:
          type: string
          enum:
            - Disabled
            - ScheduleAnyway
            - DoNotSchedule
          description: |
            Define how you want pods to be spread across availability zones:
            * `Disabled` no topology spread constraints are applied
            * `ScheduleAnyway` pods are spread across zones on a best-effort basis (soft constraint)
            * `DoNotSchedule` pods must be evenly spread across zones with a maxSkew of 1 (hard constraint)
        deployment.update_strategy.type:
          type: string
          enum:
            - RollingUpdate
            - Recreate
          description: |
            * `RollingUpdate` gracefully rollout new versions, and automatically rollback if the new version fails to start
            * `Recreate` stop all current versions and create new ones once all old ones have been shutdown
        deployment.update_strategy.rolling_update.max_unavailable_percent:
          type: integer
          description: Define the percentage of a maximum number of pods that can be unavailable during the update process
        deployment.update_strategy.rolling_update.max_surge_percent:
          type: integer
          description: Define the percentage of the maximum number of pods that can be created over the desired number of pods
        network.ingress.proxy_body_size_mb:
          type: integer
        network.ingress.force_ssl_redirect:
          type: boolean
          x-stoplight:
            id: xrdjy3znm8mpg
          description: 'When using SSL offloading outside of cluster, you can enforce a redirect to HTTPS even when there is no TLS certificate available'
        network.ingress.enable_cors:
          type: boolean
        network.ingress.cors_allow_origin:
          type: string
        network.ingress.cors_allow_methods:
          type: string
        network.ingress.cors_allow_headers:
          type: string
        network.ingress.proxy_buffer_size_kb:
          type: integer
          description: header buffer size used while reading response header from upstream
        network.ingress.keepalive_time_seconds:
          type: integer
          description: Limits the maximum time (in seconds) during which requests can be processed through one keepalive connection
        network.ingress.keepalive_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) during which an idle keepalive connection to an upstream server will stay open.
        network.ingress.send_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for transmitting a response to the client
        network.ingress.proxy_connect_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for establishing a connection to a proxied server
        network.ingress.proxy_send_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for transmitting a request to the proxied server
        network.ingress.proxy_read_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for reading a response from the proxied server
        network.ingress.proxy_buffering:
          type: string
          description: Allows to enable or disable nginx `proxy-buffering`
        network.ingress.proxy_request_buffering:
          type: string
          description: Allows to enable or disable nginx `proxy-request-buffering`
        network.ingress.grpc_send_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for transmitting a request to the grpc server
        network.ingress.grpc_read_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for transmitting a request to the grpc server
        network.ingress.whitelist_source_range:
          type: string
          description: |
            list of source ranges to allow access to ingress proxy. 
            This property can be used to whitelist source IP ranges for ingress proxy.
            The value is a comma separated list of CIDRs, e.g. 10.0.0.0/24,172.10.0.1
            To allow all source ranges, set 0.0.0.0/0.
        network.ingress.denylist_source_range:
          type: string
          description: |
            list of source ranges to deny access to ingress proxy. 
            This property can be used to blacklist source IP ranges for ingress proxy.
            The value is a comma separated list of CIDRs, e.g. 10.0.0.0/24,172.10.0.1
        network.ingress.extra_headers:
          type: string
          description: Allows to define response headers
          example: '{"X-Frame-Options":"DENY ","X-Content-Type-Options":"nosniff"}'
        network.gateway_api.http_request_timeout_seconds:
          type: integer
          nullable: true
          minimum: 0
          description: Sets a timeout (in seconds) for requests proxied through the Gateway API route.
        network.gateway_api.http_connection_idle_timeout_seconds:
          type: integer
          nullable: true
          minimum: 0
          description: Sets the idle timeout (in seconds) for HTTP connections proxied through the Gateway API route.
        network.gateway_api.retry.num_retries:
          type: integer
          nullable: true
          minimum: 0
          description: Sets the number of retry attempts for requests proxied through the Gateway API route.
        network.gateway_api.retry.retry_on:
          type: string
          nullable: true
          description: Comma-separated retry triggers (for example connect-failure,reset,refused-stream,retriable-status-codes) for requests proxied through the Gateway API route.
        network.gateway_api.retry.http_status_codes:
          type: string
          nullable: true
          description: Comma-separated HTTP status codes (100..599) retried when retry_on includes retriable-status-codes.
        network.gateway_api.retry.per_try_timeout_seconds:
          type: integer
          nullable: true
          minimum: 1
          description: Sets the timeout (in seconds) applied to each retry attempt for requests proxied through the Gateway API route.
        network.ingress.basic_auth_env_var:
          type: string
          description: |
            Set the name of an environment variable to use as a basic authentication (`login:crypted_password`) from `htpasswd` command. You can add multiples comma separated values.
        network.ingress.enable_sticky_session:
          type: boolean
          description: |
            Enable the load balancer to bind a user's session to a specific target.
            This ensures that all requests from the user during the session are sent to the same target
        security.service_account_name:
          type: string
          description: |
            Allows you to set an existing Kubernetes service account name
        hpa.cpu.average_utilization_percent:
          type: integer
          description: Percentage value of cpu usage at which point pods should scale up.
        hpa.memory.average_utilization_percent:
          type: integer
          nullable: true
          description: Percentage value of memory usage at which point pods should scale up.
        security.automount_service_account_token:
          type: boolean
          description: |
            Automount Kubernetes service account token to have access to Kubernetes API from pods
        security.read_only_root_filesystem:
          type: boolean
          description: |
            Mounts the container's root filesystem as read-only
    ContainerNetwork:
      type: object
      properties:
        sticky_session:
          type: boolean
          description: |
            Specify if the sticky session option (also called persistant session) is activated or not for this container.
            If activated, user will be redirected by the load balancer to the same instance each time he access to the container.
          default: false
    ContainerNetworkRequest:
      type: object
      properties:
        sticky_session:
          type: boolean
          description: |
            Specify if the sticky session option (also called persistant session) is activated or not for this container.
            If activated, user will be redirected by the load balancer to the same instance each time he access to the container.
          default: false
    ContainerDeployRequest:
      type: object
      required:
        - image_tag
      properties:
        image_tag:
          type: string
          description: Image tag to deploy
    ContainerRegistryKindEnum:
      type: string
      enum:
        - ECR
        - SCALEWAY_CR
        - DOCKER_HUB
        - GITHUB_CR
        - GITHUB_ENTERPRISE_CR
        - GITLAB_CR
        - PUBLIC_ECR
        - DOCR
        - GENERIC_CR
        - GCP_ARTIFACT_REGISTRY
        - AZURE_CR
      description: The type of your container registry
    HelmRepositoryKindEnum:
      type: string
      enum:
        - HTTPS
        - OCI_ECR
        - OCI_SCALEWAY_CR
        - OCI_DOCKER_HUB
        - OCI_PUBLIC_ECR
        - OCI_GENERIC_CR
        - OCI_GITHUB_CR
        - OCI_GITLAB_CR
      description: The type of your helm repository
    ContainerRegistryRequest:
      type: object
      required:
        - name
        - kind
        - config
      properties:
        name:
          type: string
        kind:
          $ref: '#/components/schemas/ContainerRegistryKindEnum'
        description:
          type: string
        url:
          type: string
          format: uri
          description: |
            URL of the container registry:
            * For `DOCKER_HUB`: it must be `https://docker.io` (default with 'https://docker.io' if no url provided for `DOCKER_HUB`)
            * For `GITHUB_CR`: it must be `https://ghcr.io` (default with 'https://ghcr.io' if no url provided for `GITHUB_CR`)
            * For `GITLAB_CR`: it must be `https://registry.gitlab.com` (default with 'https://registry.gitlab.com' if no url provided for `GITLAB_CR`)
            * For others: it's required and must start by `https://`
        config:
          type: object
          description: |
            This field is dependent of the container registry kind:
            * `ECR` needs in the config: region, access_key_id, secret_access_key
            * `SCALEWAY_CR` needs in the config: region, scaleway_access_key, scaleway_secret_key
            * `GCP_ARTIFACT_REGISTRY` needs in the config: region, json_credentials
            * `DOCKER_HUB` needs in the config (optional): username, password
            * `GITHUB_CR` needs in the config (optional): username, password
            * `GITLAB_CR` needs in the config (optional): username, password
            * `PUBLIC_ECR` doesn't need credentials info
            * `GENERIC_CR` needs in the config (optional): username, password
            * `DOCR` is not supported anymore
          properties:
            access_key_id:
              type: string
              description: Required if kind is `ECR` or `PUBLIC_ECR`
            secret_access_key:
              type: string
              description: Required if kind is `ECR` or `PUBLIC_ECR`
            region:
              type: string
              description: Required if kind is `ECR` or `SCALEWAY_CR`
            scaleway_access_key:
              type: string
              description: Required if kind is `SCALEWAY_CR`
            scaleway_secret_key:
              type: string
              description: Required if kind is `SCALEWAY_CR`
            scaleway_project_id:
              type: string
              x-stoplight:
                id: eomu5mjvhi6uu
              description: Required if kind is `SCALEWAY_CR`
            json_credentials:
              type: string
              description: Required if kind is `GCP_ARTIFACT_REGISTRY`. For GCP Artifact Registry, you can either set a service account JSON key with json_credentials or use Workload Identity Federation with gcp_credentials_type.
            gcp_credentials_type:
              type: string
              description: For GCP Artifact Registry, you can either set a service account JSON key with json_credentials or use Workload Identity Federation with gcp_credentials_type.
              enum:
                - workload_identity_federation
            project_id:
              type: string
              description: Required if kind is `GCP_ARTIFACT_REGISTRY` and gcp_credentials_type is `workload_identity_federation`
            service_account_email:
              type: string
              description: Required if kind is `GCP_ARTIFACT_REGISTRY` and gcp_credentials_type is `workload_identity_federation`
            workload_identity_provider_resource:
              type: string
              description: Required if kind is `GCP_ARTIFACT_REGISTRY` and gcp_credentials_type is `workload_identity_federation`
              example: projects/123456789/locations/global/workloadIdentityPools/qovery-pool/providers/qovery-aws
            token_lifetime_seconds:
              type: integer
              format: int32
              description: Optional if kind is `GCP_ARTIFACT_REGISTRY` and gcp_credentials_type is `workload_identity_federation`
              example: 14400
            username:
              type: string
              description: |
                optional, for kind `DOCKER_HUB`  
                We encourage you to set credentials for Docker Hub due to the limits on the pull rate
            password:
              type: string
              description: |
                optional, for kind `DOCKER_HUB`  
                We encourage you to set credentials for Docker Hub due to the limits on the pull rate
            role_arn:
              type: string
              x-stoplight:
                id: mzi9w1zsswj47
              description: 'For ECR, you can either set a static access_key or use a role arn that we are going to assume'
            azure_tenant_id:
              type: string
              x-stoplight:
                id: zjybtgippp0k2
              description: Required if kind is `AZURE_CR`.
            azure_subscription_id:
              type: string
              x-stoplight:
                id: eaqm4swmqt9ty
              description: Required if kind is `AZURE_CR`.
    ContainerRegistryResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          properties:
            name:
              type: string
            kind:
              $ref: '#/components/schemas/ContainerRegistryKindEnum'
            description:
              type: string
            url:
              type: string
              description: URL of the container registry
            cluster:
              type: object
              required:
                - id
                - name
              properties:
                id:
                  type: string
                  x-stoplight:
                    id: y0l22s5yhh4ez
                  format: uuid
                name:
                  type: string
                  x-stoplight:
                    id: 5jak2m85ljxaa
            associated_services_count:
              type: integer
              x-stoplight:
                id: 02mqr04rogfem
              description: The number of services using this container registry
            config:
              type: object
              x-stoplight:
                id: s9rg5wox9j00z
              properties:
                username:
                  type: string
                  x-stoplight:
                    id: 9g2hk57o11s8k
                region:
                  type: string
                  x-stoplight:
                    id: fo0nnlsnrdn0k
                scaleway_access_key:
                  type: string
                  x-stoplight:
                    id: fdb55y4vnpndk
                scaleway_project_id:
                  type: string
                  x-stoplight:
                    id: ra9oc489c2wyt
                access_key_id:
                  type: string
                  x-stoplight:
                    id: s5elye0gv4lks
                role_arn:
                  type: string
                  x-stoplight:
                    id: iusxfgcmg72tl
                gcp_credentials_type:
                  type: string
                  enum:
                    - workload_identity_federation
                project_id:
                  type: string
                service_account_email:
                  type: string
                workload_identity_provider_resource:
                  type: string
                token_lifetime_seconds:
                  type: integer
                  format: int32
                  example: 14400
                azure_tenant_id:
                  type: string
                  x-stoplight:
                    id: obk7v9hlx3jv4
                azure_subscription_id:
                  type: string
                  x-stoplight:
                    id: nrvn3j8xq81da
                azure_application_id:
                  type: string
                  x-stoplight:
                    id: t4jvfihz1ml04
                azure_application_object_id:
                  type: string
                  x-stoplight:
                    id: 2soynl0stz0lh
    ContainerRegistryProviderDetailsResponse:
      type: object
      required:
        - id
        - name
        - url
        - kind
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        url:
          type: string
          description: URL of the container registry
        kind:
          $ref: '#/components/schemas/ContainerRegistryKindEnum'
    ContainerRegistryResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ContainerRegistryResponse'
    ContainerVersionResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ContainerVersionResponse'
    HelmRepositoryResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - name
          properties:
            name:
              type: string
            kind:
              $ref: '#/components/schemas/HelmRepositoryKindEnum'
            description:
              type: string
            url:
              type: string
              description: URL of the helm repository
            skip_tls_verification:
              type: boolean
              description: Bypass tls certificate verification when connecting to repository
            associated_services_count:
              type: integer
              x-stoplight:
                id: 287g4iunwmf2d
              description: The number of services using this helm repository
            config:
              type: object
              x-stoplight:
                id: 224az7um9x51z
              properties:
                username:
                  type: string
                  x-stoplight:
                    id: 6xxbs3971acz5
                region:
                  type: string
                  x-stoplight:
                    id: pvi5oq9omlae8
                access_key_id:
                  type: string
                  x-stoplight:
                    id: 9tdfunoniwzed
                role_arn:
                  type: string
                scaleway_access_key:
                  type: string
                  x-stoplight:
                    id: pyfdpz1vk4qq1
                scaleway_project_id:
                  type: string
                  x-stoplight:
                    id: kbrcr9377ly0q
                azure_tenant_id:
                  type: string
                  x-stoplight:
                    id: yd92ly1zmep1u
                azure_subscription_id:
                  type: string
                  x-stoplight:
                    id: rs3gk07qe1oy1
    ContainerVersionResponse:
      type: object
      properties:
        image_name:
          type: string
        versions:
          type: array
          items:
            type: string
    HelmRepositoryRequest:
      type: object
      required:
        - name
        - kind
        - skip_tls_verification
        - config
      properties:
        name:
          type: string
        kind:
          $ref: '#/components/schemas/HelmRepositoryKindEnum'
        description:
          type: string
        url:
          type: string
          format: uri
          description: |
            URL of the helm chart repository:
            * For `OCI`: it must start by oci://
            * For `HTTPS`: it must be start by https://
        skip_tls_verification:
          type: boolean
          description: Bypass tls certificate verification when connecting to repository
        config:
          type: object
          properties:
            username:
              type: string
              description: Required if the repository is private
            password:
              type: string
              description: Required if the repository is private
            access_key_id:
              type: string
              description: Required if kind is `ECR` or `PUBLIC_ECR`
            secret_access_key:
              type: string
              description: Required if kind is `ECR` or `PUBLIC_ECR`
            region:
              type: string
              description: Required if kind is `ECR` or `SCALEWAY_CR`
            scaleway_access_key:
              type: string
              description: Required if kind is `SCALEWAY_CR`
            scaleway_secret_key:
              type: string
              description: Required if kind is `SCALEWAY_CR`
            scaleway_project_id:
              type: string
              x-stoplight:
                id: 9dw16j7cex4i6
              description: Required if kind is `SCALEWAY_CR`
            azure_tenant_id:
              type: string
              x-stoplight:
                id: dxxkwv9xyo1zq
              description: Required if kind is `AZURE_CR`.
            azure_subscription_id:
              type: string
              x-stoplight:
                id: rboo4bgsvgfco
              description: Required if kind is `AZURE_CR`.
            role_arn:
              type: string
              description: 'For ECR, you can either set a static access_key or use a role arn that we are going to assume'
    HelmVersionResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/HelmVersionResponse'
    HelmVersionResponse:
      type: object
      properties:
        chart_name:
          type: string
        versions:
          type: array
          items:
            type: string
    HelmRepositoryResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/HelmRepositoryResponse'
    ContainerRequest:
      allOf:
        - $ref: '#/components/schemas/ServiceStorageRequest'
        - $ref: '#/components/schemas/ServicePortRequest'
        - type: object
          required:
            - name
            - registry_id
            - image_name
            - tag
            - healthchecks
          properties:
            name:
              type: string
              description: name is case insensitive
            description:
              type: string
              description: give a description to this container
            registry_id:
              type: string
              description: id of the linked registry
            image_name:
              type: string
              description: |
                The image name pattern differs according to chosen container registry provider:  
                * `ECR`: `repository`
                * `SCALEWAY_CR`: `namespace/image`
                * `DOCKER_HUB`: `image` or `repository/image`
                * `PUBLIC_ECR`: `registry_alias/repository`
            tag:
              type: string
              description: tag of the image container
            arguments:
              type: array
              items:
                type: string
            entrypoint:
              type: string
              description: optional entrypoint when launching container
            cpu:
              type: integer
              description: unit is millicores (m). 1000m = 1 cpu
              default: 500
              example: 1250
            memory:
              type: integer
              description: unit is MB. 1024 MB = 1GB
              default: 512
              example: 1024
            gpu:
              type: integer
              x-stoplight:
                id: j1i1u2mlnlgfm
              minimum: 0
              default: 0
              example: 1
            ephemeral_storage_in_gib:
              type: integer
              description: Ephemeral storage of the service in GiB. When omitted, the platform default is used.
              minimum: 0
              example: 10
            cpu_architecture:
              description: CPU architecture to run this service on. If null, the cluster default architecture is used.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CpuArchitectureEnum'
            min_running_instances:
              type: integer
              minimum: 0
              description: |
                Minimum number of instances running. This resource auto-scale based on the CPU and Memory consumption.
                Note: 0 means that there is no container running.
              default: 1
            max_running_instances:
              type: integer
              description: |
                Maximum number of instances running. This resource auto-scale based on the CPU and Memory consumption.
                Note: -1 means that there is no limit.
              default: 1
            healthchecks:
              $ref: '#/components/schemas/Healthcheck'
            auto_preview:
              type: boolean
              description: |
                Indicates if the 'environment preview option' is enabled for this container.  
                If enabled, a preview environment will be automatically cloned when `/preview` endpoint is called.  
                If not specified, it takes the value of the `auto_preview` property from the associated environment.
            auto_deploy:
              type: boolean
              description: |
                Specify if the container will be automatically updated after receiving a new image tag. 
                The new image tag shall be communicated via the "Auto Deploy container" endpoint https://api-doc.qovery.com/#tag/Containers/operation/autoDeployContainerEnvironments
              nullable: true
            annotations_groups:
              $ref: '#/components/schemas/ServiceAnnotationsRequestList'
            labels_groups:
              $ref: '#/components/schemas/ServiceLabelsRequestList'
            icon_uri:
              type: string
              format: uri
              description: Icon URI representing the container.
              x-stoplight:
                id: jiypvl6nd63dm
            autoscaling:
              $ref: '#/components/schemas/AutoscalingPolicyRequest'
    ContainerResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - $ref: '#/components/schemas/ServiceStorage'
        - $ref: '#/components/schemas/ContainerSource'
        - type: object
          required:
            - environment
            - maximum_cpu
            - maximum_memory
            - maximum_gpu
            - name
            - cpu
            - memory
            - gpu
            - min_running_instances
            - max_running_instances
            - healthchecks
            - auto_preview
            - icon_uri
            - service_type
          properties:
            environment:
              $ref: '#/components/schemas/ReferenceObject'
            maximum_cpu:
              type: integer
              description: Maximum cpu that can be allocated to the container based on organization cluster configuration. unit is millicores (m). 1000m = 1 cpu
              example: 16000
            maximum_memory:
              type: integer
              description: Maximum memory that can be allocated to the container based on organization cluster configuration. unit is MB. 1024 MB = 1GB
              example: 16384
            maximum_gpu:
              type: integer
              description: Maximum memory that can be allocated to the container based on organization cluster configuration. unit is MB. 1024 MB = 1GB
              x-stoplight:
                id: zdw9ry7s5s0e8
              minimum: 0
              default: 0
              example: 2
            name:
              type: string
              description: name is case insensitive
            description:
              type: string
              description: give a description to this container
            arguments:
              type: array
              items:
                type: string
            entrypoint:
              type: string
              description: optional entrypoint when launching container
            cpu:
              type: integer
              description: unit is millicores (m). 1000m = 1 cpu
              example: 1250
            memory:
              type: integer
              description: unit is MB. 1024 MB = 1GB
              example: 1024
            gpu:
              type: integer
              x-stoplight:
                id: qthonnmak3re3
              default: 0
              minimum: 0
              example: 1
            ephemeral_storage_in_gib:
              type: integer
              description: Ephemeral storage of the service in GiB. When omitted, the platform default is used.
              minimum: 0
              example: 10
            cpu_architecture:
              description: CPU architecture this service runs on. If null, the cluster default architecture is used.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CpuArchitectureEnum'
            min_running_instances:
              type: integer
              minimum: 0
              description: |
                Minimum number of instances running. This resource auto-scale based on the CPU and Memory consumption.
                Note: 0 means that there is no container running.
              default: 1
            max_running_instances:
              type: integer
              description: |
                Maximum number of instances running. This resource auto-scale based on the CPU and Memory consumption.
                Note: -1 means that there is no limit.
              default: 1
            healthchecks:
              $ref: '#/components/schemas/Healthcheck'
            auto_preview:
              type: boolean
              description: |
                Indicates if the 'environment preview option' is enabled for this container.  
                If enabled, a preview environment will be automatically cloned when `/preview` endpoint is called.  
                If not specified, it takes the value of the `auto_preview` property from the associated environment.
            ports:
              $ref: '#/components/schemas/ServicePortResponseList'
            auto_deploy:
              type: boolean
              description: |
                Specify if the container will be automatically updated after receiving a new image tag. 
                The new image tag shall be communicated via the "Auto Deploy container" endpoint https://api-doc.qovery.com/#tag/Containers/operation/autoDeployContainerEnvironments
            annotations_groups:
              $ref: '#/components/schemas/OrganizationAnnotationsGroupResponseList'
            labels_groups:
              $ref: '#/components/schemas/OrganizationLabelsGroupResponseList'
            icon_uri:
              type: string
              format: uri
              description: Icon URI representing the container.
              x-stoplight:
                id: o2bdci7ak3bmz
            service_type:
              $ref: '#/components/schemas/ServiceTypeEnum'
            autoscaling:
              $ref: '#/components/schemas/AutoscalingPolicyResponse'
    ContainerResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ContainerResponse'
    ContainerSource:
      type: object
      required:
        - image_name
        - tag
        - registry
      properties:
        image_name:
          type: string
          description: |
            The image name pattern differs according to chosen container registry provider:
            * `ECR`: `repository`
            * `SCALEWAY_CR`: `namespace/image`
            * `DOCKER_HUB`: `image` or `repository/image`
            * `PUBLIC_ECR`: `registry_alias/repository`
        tag:
          type: string
          description: tag of the image container
        registry_id:
          type: string
          description: tag of the image container
        registry:
          $ref: '#/components/schemas/ContainerRegistryProviderDetailsResponse'
    Cost:
      type: object
      required:
        - total_in_cents
        - total
        - currency_code
      properties:
        total_in_cents:
          type: integer
          example: 30000
        total:
          type: number
          example: 300
        currency_code:
          type: string
          example: USD
    CostRange:
      type: object
      required:
        - total_in_cents
        - total
        - currency_code
      properties:
        min_cost_in_cents:
          type: integer
          example: 15000
        min_cost:
          type: number
          example: 150
        max_cost_in_cents:
          type: integer
          example: 30000
        max_cost:
          type: number
          example: 300
        currency_code:
          type: string
          example: USD
    Credentials:
      type: object
      required:
        - host
        - port
        - login
        - password
      properties:
        host:
          type: string
        port:
          type: integer
        login:
          type: string
        password:
          type: string
    CredentialsRequest:
      type: object
      required:
        - login
        - password
      properties:
        login:
          type: string
        password:
          type: string
    CreditCard:
      type: object
      required:
        - id
        - created_at
        - expiry_month
        - expiry_year
        - last_digit
        - is_expired
        - brand
      properties:
        id:
          type: string
          format: uuid
        created_at:
          type: string
          format: date-time
        expiry_month:
          type: integer
          example: 6
        expiry_year:
          type: integer
          example: 2025
        last_digit:
          type: string
          example: '7890'
        is_expired:
          type: boolean
        brand:
          type: string
    CreditCardRequest:
      type: object
      required:
        - number
        - cvv
        - expiry_month
        - expiry_year
      properties:
        number:
          type: string
        cvv:
          type: string
        expiry_month:
          type: integer
          example: 6
        expiry_year:
          type: integer
          example: 2025
        token:
          type: string
          description: Token generated by payment solution platform.
          nullable: true
    CreditCardResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/CreditCard'
    CurrentCost:
      type: object
      properties:
        plan:
          $ref: '#/components/schemas/PlanEnum'
        remaining_trial_day:
          type: integer
          description: number of days remaining before the end of the trial period
        renewal_at:
          type: string
          description: date when the current plan will be renewed
          readOnly: true
          nullable: true
          format: date-time
        cost:
          $ref: '#/components/schemas/Cost'
    CustomDomain:
      allOf:
        - $ref: '#/components/schemas/Base'
        - $ref: '#/components/schemas/CustomDomainRequest'
        - type: object
          properties:
            validation_domain:
              type: string
              description: URL provided by Qovery. You must create a CNAME on your DNS provider using that URL
            status:
              $ref: '#/components/schemas/CustomDomainStatusEnum'
            generate_certificate:
              type: boolean
              description: to control if a certificate has to be generated for this custom domain by Qovery. The default value is `true`. This flag should be set to `false` if a CDN or other entities are managing the certificate for the specified domain and the traffic is proxied by the CDN to Qovery.
            use_cdn:
              type: boolean
              description: |
                Indicates if the custom domain is behind a CDN (i.e Cloudflare).
                This will condition the way we are checking CNAME before & during a deployment:
                * If `true` then we only check the domain points to an IP
                * If `false` then we check that the domain resolves to the correct service Load Balancer
    CustomDomainRequest:
      type: object
      required:
        - domain
        - generate_certificate
      properties:
        domain:
          type: string
          description: your custom domain
          example: my.domain.tld
        generate_certificate:
          type: boolean
          description: to control if a certificate has to be generated for this custom domain by Qovery. The default value is `true`. This flag should be set to `false` if a CDN or other entities are managing the certificate for the specified domain and the traffic is proxied by the CDN to Qovery.
        use_cdn:
          type: boolean
          description: |
            Indicates if the custom domain is behind a CDN (i.e Cloudflare).
            This will condition the way we are checking CNAME before & during a deployment:
            * If `true` then we only check the domain points to an IP
            * If `false` then we check that the domain resolves to the correct service Load Balancer
    CustomDomainResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/CustomDomain'
    CustomDomainStatusEnum:
      type: string
      enum:
        - VALIDATION_PENDING
      example: VALIDATION_PENDING
    Database:
      allOf:
        - $ref: '#/components/schemas/Base'
        - $ref: '#/components/schemas/DatabaseRequest'
        - type: object
          required:
            - environment
            - icon_uri
            - service_type
          properties:
            environment:
              $ref: '#/components/schemas/ReferenceObject'
            host:
              type: string
            port:
              type: integer
              example: 5432
            maximum_cpu:
              type: integer
              description: Maximum cpu that can be allocated to the database based on organization cluster configuration. unit is millicores (m). 1000m = 1 cpu
              example: 1250
            maximum_memory:
              type: integer
              description: Maximum memory that can be allocated to the database based on organization cluster configuration. unit is MB. 1024 MB = 1GB
              example: 1024
            disk_encrypted:
              type: boolean
              description: indicates if the database disk is encrypted or not
            instance_type:
              type: string
              example: db.t3.medium
              description: 'Database instance type to be used for this database. The list of values can be retrieved via the endpoint /{CloudProvider}/managedDatabase/instanceType/{region}/{dbType}. This field is null for container DB.'
            disk_type:
              type: string
              nullable: true
              description: 'EBS disk type for the database. Only applicable for MANAGED mode (gp2 or gp3). Null for CONTAINER mode.'
              enum:
                - gp2
                - gp3
            annotations_groups:
              $ref: '#/components/schemas/OrganizationAnnotationsGroupResponseList'
            labels_groups:
              $ref: '#/components/schemas/OrganizationLabelsGroupResponseList'
            icon_uri:
              type: string
              format: uri
              description: Icon URI representing the database.
            service_type:
              $ref: '#/components/schemas/ServiceTypeEnum'
    DatabaseAccessibilityEnum:
      type: string
      default: PRIVATE
      enum:
        - PRIVATE
        - PUBLIC
    DatabaseConfiguration:
      type: object
      properties:
        database_type:
          $ref: '#/components/schemas/DatabaseTypeEnum'
        version:
          type: array
          items:
            $ref: '#/components/schemas/DatabaseVersionMode'
    DatabaseConfigurationResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/DatabaseConfiguration'
    DatabaseEditRequest:
      type: object
      properties:
        name:
          type: string
          description: name is case-insensitive
        description:
          type: string
          description: give a description to this database
        version:
          type: string
          example: '10.1'
        accessibility:
          $ref: '#/components/schemas/DatabaseAccessibilityEnum'
        cpu:
          type: integer
          description: |
            unit is millicores (m). 1000m = 1 cpu.
            This field will be ignored for managed DB (instance type will be used instead).
          default: 250
          example: 1250
        memory:
          type: integer
          description: |
            unit is MB. 1024 MB = 1GB
            This field will be ignored for managed DB (instance type will be used instead).
            Default value is linked to the database type:
            - MANAGED: 100
            - CONTAINER
              - POSTGRES: 100
              - REDIS: 100
              - MYSQL: 512
              - MONGODB: 256
          example: 1024
        storage:
          type: integer
          description: unit is GB
          example: 4
        instance_type:
          type: string
          example: db.t3.medium
          description: 'Database instance type to be used for this database. The list of values can be retrieved via the endpoint /{CloudProvider}/managedDatabase/instanceType/{region}/{dbType}. This field SHOULD NOT be set for container DB.'
        annotations_groups:
          $ref: '#/components/schemas/ServiceAnnotationsRequestList'
        labels_groups:
          $ref: '#/components/schemas/ServiceLabelsRequestList'
        icon_uri:
          type: string
          format: uri
          description: Icon URI representing the database.
        disk_type:
          type: string
          nullable: true
          enum:
            - gp2
            - gp3
          description: 'EBS disk type for MANAGED AWS databases. Allowed values: gp2, gp3. Only applicable for MANAGED mode.'
    DatabaseModeEnum:
      type: string
      enum:
        - CONTAINER
        - MANAGED
    DatabaseRequest:
      type: object
      required:
        - name
        - type
        - version
        - mode
      properties:
        name:
          type: string
          description: name is case insensitive
        description:
          type: string
          description: give a description to this database
        type:
          $ref: '#/components/schemas/DatabaseTypeEnum'
        version:
          type: string
          example: '10.1'
        mode:
          $ref: '#/components/schemas/DatabaseModeEnum'
        accessibility:
          $ref: '#/components/schemas/DatabaseAccessibilityEnum'
        cpu:
          type: integer
          description: |
            unit is millicores (m). 1000m = 1 cpu
            This field will be ignored for managed DB (instance type will be used instead).
          default: 250
          example: 1250
        instance_type:
          type: string
          example: db.t3.medium
          description: 'Database instance type to be used for this database. The list of values can be retrieved via the endpoint /{CloudProvider}/managedDatabase/instanceType/{region}/{dbType}. This field SHOULD NOT be set for container DB.'
        memory:
          type: integer
          description: |
            unit is MB. 1024 MB = 1GB
            This field will be ignored for managed DB (instance type will be used instead).
            Default value is linked to the database type:
            - MANAGED: `100`
            - CONTAINER
              - POSTGRES: `100`
              - REDIS: `100`
              - MYSQL: `512`
              - MONGODB: `256`
          example: 1024
        storage:
          type: integer
          description: unit is GB
          default: 10
        annotations_groups:
          $ref: '#/components/schemas/ServiceAnnotationsRequestList'
        labels_groups:
          $ref: '#/components/schemas/ServiceLabelsRequestList'
        icon_uri:
          type: string
          format: uri
          description: Icon URI representing the database.
          x-stoplight:
            id: ls6yevnhskd5y
    DatabaseResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Database'
    DatabaseTypeEnum:
      type: string
      enum:
        - MONGODB
        - MYSQL
        - POSTGRESQL
        - REDIS
    DatabaseVersionMode:
      type: object
      properties:
        name:
          type: string
          example: '10.1'
        supported_mode:
          $ref: '#/components/schemas/DatabaseModeEnum'
    DeployAllRequest:
      type: object
      properties:
        applications:
          type: array
          items:
            type: object
            required:
              - application_id
            properties:
              application_id:
                type: string
                format: uuid
                description: id of the application to be deployed.
              git_commit_id:
                type: string
                description: Commit ID to deploy. Can be empty only if the service has been already deployed (in this case the service version won't be changed)
        databases:
          type: array
          items:
            type: string
            format: uuid
        containers:
          type: array
          items:
            type: object
            required:
              - id
            properties:
              id:
                type: string
                format: uuid
                description: id of the container to be updated.
              image_tag:
                type: string
                description: new tag for the container. Can be empty only if the service has been already deployed (in this case the service version won't be changed)
        jobs:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                description: id of the job to be updated.
              image_tag:
                type: string
                description: new tag for the job image. Use only if job is an image source. Can be empty only if the service has been already deployed (in this case the service version won't be changed)
              git_commit_id:
                type: string
                description: Commit ID to deploy. Use only if job is a repository source. Can be empty only if the service has been already deployed (in this case the service version won't be changed)
        helms:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                description: id of the helm to be updated.
              chart_version:
                type: string
                description: The new chart version for the Helm source. Use this only if the helm has a Helm repository source.
              git_commit_id:
                type: string
                description: The commit Id to deploy. Use this only if the helm has a Git repository source.
              values_override_git_commit_id:
                type: string
                description: The commit Id of the override values to deploy. Use only if the helm has a Git override values repository.
        terraforms:
          type: array
          items:
            $ref: '#/components/schemas/TerraformDeployRequest'
    DeployRequest:
      type: object
      required:
        - git_commit_id
      properties:
        git_commit_id:
          type: string
          description: Commit ID to deploy
    DeploymentHistory:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          properties:
            name:
              type: string
              description: name of the service
            commit:
              $ref: '#/components/schemas/Commit'
            status:
              $ref: '#/components/schemas/DeploymentHistoryStatusEnum'
    DeploymentHistoryTriggerAction:
      x-stoplight:
        id: 1hzy6riqo7lq4
      enum:
        - DEPLOY
        - DELETE
        - RESTART
        - STOP
        - DEPLOY_DRY_RUN
        - TERRAFORM_FORCE_UNLOCK
        - TERRAFORM_MIGRATE_STATE
        - DELETE_RESOURCES_ONLY
        - UNKNOWN
        - UNINSTALL
    DeploymentHistoryApplication:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          properties:
            name:
              type: string
            commit:
              $ref: '#/components/schemas/Commit'
            status:
              $ref: '#/components/schemas/StateEnum'
    DeploymentHistoryDatabase:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          properties:
            name:
              type: string
              description: name of the service
            status:
              $ref: '#/components/schemas/StateEnum'
    DeploymentHistoryAuditingData:
      x-stoplight:
        id: 5oovmby4u1mxw
      type: object
      required:
        - created_at
        - updated_at
        - triggered_by
      properties:
        created_at:
          type: string
          x-stoplight:
            id: e1idlr92680lb
          format: date-time
        updated_at:
          type: string
          x-stoplight:
            id: mz8yet1k3voef
          format: date-time
        triggered_by:
          type: string
          x-stoplight:
            id: hf405wx2g73py
        origin:
          $ref: '#/components/schemas/OrganizationEventOrigin'
    DeploymentHistoryContainer:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          properties:
            name:
              type: string
              description: name of the container
            status:
              $ref: '#/components/schemas/StateEnum'
            image_name:
              type: string
            tag:
              type: string
            arguments:
              type: array
              items:
                type: string
            entrypoint:
              type: string
    DeploymentHistoryEnvironment:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          properties:
            status:
              $ref: '#/components/schemas/StateEnum'
            origin:
              $ref: '#/components/schemas/OrganizationEventOrigin'
            triggered_by:
              type: string
            applications:
              type: array
              items:
                $ref: '#/components/schemas/DeploymentHistoryApplication'
            containers:
              type: array
              items:
                $ref: '#/components/schemas/DeploymentHistoryContainer'
            databases:
              type: array
              items:
                $ref: '#/components/schemas/DeploymentHistoryDatabase'
            jobs:
              type: array
              items:
                $ref: '#/components/schemas/DeploymentHistoryJobResponse'
            helms:
              type: array
              items:
                $ref: '#/components/schemas/DeploymentHistoryHelmResponse'
    DeploymentHistoryEnvironmentV2:
      x-stoplight:
        id: j6o3qzzhhu0me
      type: object
      required:
        - identifier
        - auditing_data
        - status
        - trigger_action
        - total_duration
        - stages
        - action_status
      properties:
        identifier:
          type: object
          x-stoplight:
            id: cpv6dbyt9dng2
          required:
            - execution_id
            - environment_id
          properties:
            execution_id:
              type: string
              x-stoplight:
                id: 6psngtbgz1bub
            environment_id:
              type: string
              x-stoplight:
                id: 6o54s8cbk0lo6
              format: uuid
        auditing_data:
          $ref: '#/components/schemas/DeploymentHistoryAuditingData'
        status:
          $ref: '#/components/schemas/StateEnum'
        trigger_action:
          $ref: '#/components/schemas/DeploymentHistoryTriggerAction'
        total_duration:
          type: string
          x-stoplight:
            id: 3qptomnr4oly4
          format: duration
        stages:
          type: array
          x-stoplight:
            id: rz2b0h9r3p6tv
          items:
            $ref: '#/components/schemas/DeploymentHistoryStage'
        action_status:
          $ref: '#/components/schemas/DeploymentHistoryActionStatus'
    DeploymentHistoryStage:
      type: object
      x-stoplight:
        id: crvf2cbwrvxyh
      required:
        - name
        - status
        - duration
        - services
      properties:
        name:
          type: string
          x-stoplight:
            id: e1fv4x2xo0wo0
        status:
          $ref: '#/components/schemas/StageStatusEnum'
        duration:
          type: string
          x-stoplight:
            id: mdqlsz36jtl4j
          format: duration
        services:
          type: array
          x-stoplight:
            id: sel4jtb8tbjwz
          items:
            $ref: '#/components/schemas/DeploymentHistoryService'
    JobLifecyleSchedule:
      type: object
      x-stoplight:
        id: nbir5gxiux1ei
      required:
        - arguments
      properties:
        arguments:
          type: array
          x-stoplight:
            id: wj3fkami4h2b7
          items:
            x-stoplight:
              id: 4a4sqxpll8vlc
            type: string
        entrypoint:
          type: string
          x-stoplight:
            id: 951clotz2i2na
    JobCronSchedule:
      type: object
      x-stoplight:
        id: y5hby49m8v5zc
      required:
        - arguments
        - scheduled_at
        - timezone
      properties:
        arguments:
          type: array
          items:
            type: string
        entrypoint:
          type: string
        scheduled_at:
          type: string
          x-stoplight:
            id: a5x1s5kc53r1v
        timezone:
          type: string
          x-stoplight:
            id: btav5l3tp9w3l
    DeploymentHistoryService:
      type: object
      x-stoplight:
        id: 316ilxlmws82a
      required:
        - identifier
        - status
        - auditing_data
        - details
        - icon_uri
        - status_details
      properties:
        identifier:
          type: object
          x-stoplight:
            id: yklp44eea5vaq
          required:
            - name
            - service_id
            - service_type
          properties:
            name:
              type: string
              x-stoplight:
                id: h0xxiocxiusqw
            service_id:
              type: string
              x-stoplight:
                id: 0hb95ufaj9z82
              format: uuid
            service_type:
              $ref: '#/components/schemas/ServiceTypeEnum'
            execution_id:
              type: string
              x-stoplight:
                id: 9ww6nh5lrwg37
        status:
          $ref: '#/components/schemas/StateEnum'
        auditing_data:
          $ref: '#/components/schemas/DeploymentHistoryAuditingData'
        details:
          $ref: '#/components/schemas/DeploymentHistoryServiceDetails'
        status_details:
          $ref: '#/components/schemas/StatusDetails'
        icon_uri:
          type: string
          x-stoplight:
            id: 3418v53rx3mn9
          format: uri
        total_duration:
          type: string
          x-stoplight:
            id: adofwhd0bgwuw
          format: duration
    DeploymentHistoryServiceDetails:
      x-stoplight:
        id: vx9hzryfyv7sb
      oneOf:
        - description: ApplicationDeploymentHistoryData
          type: object
          required:
            - commit
            - build_pod_name
          properties:
            commit:
              $ref: '#/components/schemas/Commit'
            build_pod_name:
              type: string
              description: The build pod name prefix for monitoring build runner usage. Format build-{execution_id}-0
        - description: ContainerDeploymentHistoryData
          type: object
          required:
            - image_name
            - tag
            - arguments
          properties:
            image_name:
              type: string
            tag:
              type: string
            arguments:
              type: array
              items:
                type: string
            entrypoint:
              type: string
        - description: JobDeploymentHistoryDetails
          type: object
          required:
            - image_name
            - tag
            - job_type
          properties:
            image_name:
              type: string
            tag:
              type: string
            commit:
              $ref: '#/components/schemas/Commit'
            schedule:
              type: object
              properties:
                on_start:
                  $ref: '#/components/schemas/JobLifecyleSchedule'
                on_stop:
                  $ref: '#/components/schemas/JobLifecyleSchedule'
                on_delete:
                  $ref: '#/components/schemas/JobLifecyleSchedule'
                cron_job:
                  $ref: '#/components/schemas/JobCronSchedule'
                lifecycle_type:
                  $ref: '#/components/schemas/JobLifecycleTypeEnum'
            job_type:
              x-stoplight:
                id: tz8apy1pqi9c5
              enum:
                - CRON
                - LIFECYCLE
            build_pod_name:
              type: string
              nullable: true
              description: The build pod name prefix. Only set for jobs with a git source (Docker build). Null for container-source jobs.
        - description: HelmDeploymentHistoryDetails
          type: object
          properties:
            commit:
              $ref: '#/components/schemas/Commit'
            repository:
              type: object
              properties:
                chart_name:
                  type: string
                chart_version:
                  type: string
      type: object
    DeploymentHistoryEnvironmentPaginatedResponseList:
      allOf:
        - $ref: '#/components/schemas/PaginationData'
        - type: object
          properties:
            results:
              type: array
              items:
                $ref: '#/components/schemas/DeploymentHistoryEnvironment'
    DeploymentHistoryEnvironmentPaginatedResponseListV2:
      allOf:
        - $ref: '#/components/schemas/PaginationData'
        - type: object
          properties:
            results:
              type: array
              items:
                $ref: '#/components/schemas/DeploymentHistoryEnvironmentV2'
      x-stoplight:
        id: 0anfgzdi689ht
    DeploymentHistoryServicePaginatedResponseListV2:
      allOf:
        - $ref: '#/components/schemas/PaginationData'
        - type: object
          properties:
            results:
              type: array
              items:
                $ref: '#/components/schemas/DeploymentHistoryService'
      x-stoplight:
        id: e2g667def2r2z
    DeploymentHistoryPaginatedResponseList:
      allOf:
        - $ref: '#/components/schemas/PaginationData'
        - type: object
          properties:
            results:
              type: array
              items:
                $ref: '#/components/schemas/DeploymentHistory'
    DeploymentHistoryStatusEnum:
      type: string
      enum:
        - FAILED
        - SUCCESS
    DeploymentRestrictionModeEnum:
      type: string
      description: Match mode will rebuild app only if specified items are updated. Exclude mode will not rebuild app if specified items are updated.
      enum:
        - EXCLUDE
        - MATCH
      example: MATCH
    DeploymentRestrictionTypeEnum:
      type: string
      enum:
        - PATH
      example: PATH
    Environment:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - name
            - cloud_provider
            - mode
            - cluster_id
            - project
            - organization
          properties:
            name:
              type: string
              description: name is case insensitive
            organization:
              $ref: '#/components/schemas/ReferenceObject'
            project:
              $ref: '#/components/schemas/ReferenceObject'
            last_updated_by:
              type: string
              format: uuid
              description: uuid of the user that made the last update
            cloud_provider:
              type: object
              properties:
                provider:
                  type: string
                  example: aws
                cluster:
                  type: string
                  example: us-east-2
            mode:
              $ref: '#/components/schemas/EnvironmentModeEnum'
            cluster_id:
              type: string
              format: uuid
            cluster_name:
              type: string
              format: string
    EnvironmentResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Environment'
    EnvironmentOverviewResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/EnvironmentOverviewResponse'
    EnvironmentOverviewResponse:
      type: object
      required:
        - id
        - created_at
        - updated_at
        - name
        - mode
        - services_overview
        - cluster
      properties:
        id:
          type: string
          format: uuid
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        name:
          type: string
        mode:
          $ref: '#/components/schemas/EnvironmentModeEnum'
        cluster:
          $ref: '#/components/schemas/ClusterOverviewResponse'
        services_overview:
          $ref: '#/components/schemas/ServicesOverviewResponse'
        deployment_status:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/EnvironmentStatus'
    ServicesOverviewResponse:
      type: object
      required:
        - service_count
        - managed_by
      properties:
        service_count:
          type: integer
          format: int32
        managed_by:
          type: string
          enum:
            - QOVERY
            - ARGOCD
            - MIXED
    ClusterOverviewResponse:
      type: object
      required:
        - id
        - name
        - cloud_provider
        - is_demo
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        cloud_provider:
          $ref: '#/components/schemas/CloudVendorEnum'
        is_demo:
          type: boolean
    EnvironmentDeploymentRule:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - timezone
            - start_time
            - stop_time
            - weekdays
          properties:
            on_demand_preview:
              type: boolean
              default: false
            auto_stop:
              type: boolean
              default: false
            auto_preview:
              type: boolean
              default: false
            timezone:
              type: string
              example: UTC
            start_time:
              type: string
              format: date-time
              example: '1970-01-01T08:00:00.000Z'
            stop_time:
              type: string
              format: date-time
              example: '1970-01-01T19:00:00.000Z'
            weekdays:
              type: array
              items:
                $ref: '#/components/schemas/WeekdayEnum'
    EnvironmentDeploymentRuleEditRequest:
      type: object
      required:
        - timezone
        - start_time
        - stop_time
        - weekdays
      properties:
        on_demand_preview:
          type: boolean
          default: false
        auto_preview:
          type: boolean
          default: false
        auto_stop:
          type: boolean
          default: false
        timezone:
          type: string
          example: UTC
        start_time:
          type: string
          format: date-time
          example: '1970-01-01T08:00:00.000Z'
        stop_time:
          type: string
          format: date-time
          example: '1970-01-01T19:00:00.000Z'
        weekdays:
          type: array
          items:
            $ref: '#/components/schemas/WeekdayEnum'
    EnvironmentEditRequest:
      type: object
      properties:
        name:
          type: string
        mode:
          $ref: '#/components/schemas/CreateEnvironmentModeEnum'
    EnvironmentLog:
      type: object
      required:
        - id
        - created_at
        - service
        - status
        - message
      properties:
        id:
          type: string
          format: uuid
        created_at:
          type: string
          format: date-time
        scope:
          type: object
          properties:
            type:
              $ref: '#/components/schemas/EnvironmentLogTypeEnum'
            name:
              type: string
            id:
              type: string
              format: uuid
        state:
          $ref: '#/components/schemas/StatusKindEnum'
        message:
          type: string
          nullable: true
          description: Log message
        execution_id:
          type: string
          description: Only for errors. Helps Qovery team to investigate.
        hint:
          type: string
          example: only for errors. it gives a possible action to the user -- Markdown can be injected
    EnvironmentLogs:
      type: object
      required:
        - type
        - timestamp
        - details
      properties:
        type:
          type: string
          format: string
        timestamp:
          type: string
          format: date-time
        details:
          type: object
          properties:
            organization_id:
              type: string
              format: uuid
            cluster_id:
              type: string
              format: uuid
            execution_id:
              type: string
            transmitter:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                name:
                  type: string
                type:
                  type: string
            stage:
              type: object
              properties:
                step:
                  type: string
                id:
                  type: string
                  format: uuid
                  nullable: true
                name:
                  type: string
                  nullable: true
        error:
          type: object
          nullable: true
          properties:
            tag:
              type: string
            user_log_message:
              type: string
            link:
              type: string
            hint_message:
              type: string
            underlying_error:
              type: object
              properties:
                message:
                  type: string
                full_details:
                  type: string
        message:
          type: object
          nullable: true
          properties:
            safe_message:
              type: string
            full_details:
              type: string
    EnvironmentLogResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/EnvironmentLog'
    EnvironmentLogsResponseList:
      type: array
      items:
        $ref: '#/components/schemas/EnvironmentLogs'
    EnvironmentLogTypeEnum:
      type: string
      enum:
        - APPLICATION
        - DATABASE
        - ENVIRONMENT
    EnvironmentModeEnum:
      type: string
      enum:
        - DEVELOPMENT
        - PREVIEW
        - PRODUCTION
        - STAGING
      example: PRODUCTION
    CreateEnvironmentModeEnum:
      type: string
      enum:
        - DEVELOPMENT
        - PRODUCTION
        - STAGING
      example: PRODUCTION
    CreateEnvironmentRequest:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: name is case insensitive
        cluster:
          type: string
          format: uuid
        mode:
          $ref: '#/components/schemas/CreateEnvironmentModeEnum'
    EnvironmentStats:
      allOf:
        - $ref: '#/components/schemas/ReferenceObject'
        - $ref: '#/components/schemas/ServiceTotalNumber'
    EnvironmentStatus:
      type: object
      required:
        - id
        - state
        - last_deployment_state
      properties:
        id:
          type: string
          format: uuid
        state:
          $ref: '#/components/schemas/StateEnum'
        last_deployment_date:
          type: string
          format: date-time
          nullable: true
        last_deployment_state:
          $ref: '#/components/schemas/StateEnum'
        last_deployment_id:
          type: string
          nullable: true
        total_deployment_duration_in_seconds:
          type: integer
          nullable: true
        origin:
          $ref: '#/components/schemas/EnvironmentStatusEventOriginEnum'
        triggered_by:
          type: string
          nullable: true
        deployment_status:
          $ref: '#/components/schemas/EnvironmentDeploymentStatusEnum'
        deployment_request_id:
          type: string
          format: uuid
          nullable: true
        metrics:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/StageStepMetrics'
    EnvironmentStatsResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/EnvironmentStats'
    EnvironmentStatuses:
      type: object
      required:
        - environment
        - containers
        - applications
        - jobs
        - databases
        - helms
        - terraforms
      properties:
        environment:
          $ref: '#/components/schemas/EnvironmentStatus'
        applications:
          type: array
          items:
            $ref: '#/components/schemas/Status'
        containers:
          type: array
          items:
            $ref: '#/components/schemas/Status'
        jobs:
          type: array
          items:
            $ref: '#/components/schemas/Status'
        databases:
          type: array
          items:
            $ref: '#/components/schemas/Status'
        helms:
          type: array
          items:
            $ref: '#/components/schemas/Status'
        terraforms:
          type: array
          items:
            $ref: '#/components/schemas/Status'
    EnvironmentStatusEventOriginEnum:
      type: string
      nullable: true
      description: Origin of the organization event
      enum:
        - API
        - CLI
        - CONSOLE
        - GIT
        - QOVERY_INTERNAL
        - SKILL
        - TERRAFORM_PROVIDER
      example: API
    EnvironmentStatusesWithStages:
      type: object
      properties:
        environment:
          $ref: '#/components/schemas/EnvironmentStatus'
        stages:
          type: array
          items:
            $ref: '#/components/schemas/DeploymentStageWithServicesStatuses'
        pre_check_stage:
          type: object
          x-stoplight:
            id: l9y5i1bt4jmsk
          properties:
            status:
              $ref: '#/components/schemas/StepMetricStatusEnum'
            total_duration_sec:
              type: integer
              x-stoplight:
                id: t6u28t17lth1l
    EnvironmentStatusList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/EnvironmentStatus'
    EnvironmentTotalNumber:
      type: object
      required:
        - number
      properties:
        environment_total_number:
          type: number
    EnvironmentVariable:
      allOf:
        - $ref: '#/components/schemas/Base'
        - $ref: '#/components/schemas/EnvironmentVariableRequest'
        - type: object
          required:
            - scope
            - variable_type
          properties:
            overridden_variable:
              $ref: '#/components/schemas/EnvironmentVariableOverride'
            aliased_variable:
              $ref: '#/components/schemas/EnvironmentVariableAlias'
            scope:
              $ref: '#/components/schemas/APIVariableScopeEnum'
            variable_type:
              $ref: '#/components/schemas/APIVariableTypeEnum'
            service_id:
              type: string
              format: uuid
            service_name:
              type: string
            service_type:
              $ref: '#/components/schemas/LinkedServiceTypeEnum'
            owned_by:
              type: string
              description: 'Entity that created/own the variable (i.e: Qovery, Doppler)'
    EnvironmentVariableAlias:
      type: object
      required:
        - id
        - key
        - value
        - mount_path
        - scope
        - variable_type
      properties:
        id:
          type: string
          format: uuid
        key:
          type: string
          example: QOVERY_DATABASE_PSQL_NAME
        value:
          type: string
        mount_path:
          type: string
        scope:
          $ref: '#/components/schemas/APIVariableScopeEnum'
        variable_type:
          $ref: '#/components/schemas/APIVariableTypeEnum'
    EnvironmentVariableOverride:
      type: object
      required:
        - id
        - key
        - value
        - mount_path
        - scope
        - variable_type
      properties:
        id:
          type: string
          format: uuid
        key:
          type: string
        value:
          type: string
        mount_path:
          type: string
        scope:
          $ref: '#/components/schemas/APIVariableScopeEnum'
        variable_type:
          $ref: '#/components/schemas/APIVariableTypeEnum'
    EnvironmentVariableEditRequest:
      type: object
      required:
        - key
      properties:
        key:
          type: string
          description: key is case sensitive
        value:
          type: string
          description: value of the env variable.
        mount_path:
          type: string
          x-stoplight:
            id: dj004tdqp6pe7
          nullable: true
        description:
          type: string
          x-stoplight:
            id: rf6wxepnkcoyv
          maxLength: 255
          description: optional variable description (255 characters maximum)
          nullable: true
        enable_interpolation_in_file:
          type: boolean
          x-stoplight:
            id: bw41elfsxminc
          nullable: true
    EnvironmentVariableRequest:
      type: object
      required:
        - key
      properties:
        key:
          type: string
          description: key is case sensitive.
        value:
          type: string
          description: value of the env variable.
        mount_path:
          type: string
          default: null
          description: should be set for file only. variable mount path makes variable a file (where file should be mounted).
          nullable: true
        description:
          type: string
          x-stoplight:
            id: 1k835w52vgl4m
          maxLength: 255
          description: optional variable description (255 characters maximum)
          nullable: true
        enable_interpolation_in_file:
          type: boolean
          x-stoplight:
            id: yzgx9eytturo9
          nullable: true
    EnvironmentVariableResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/EnvironmentVariable'
    EnvironmentServiceIdsAllRequest:
      type: object
      properties:
        application_ids:
          type: array
          items:
            type: string
            format: uuid
        container_ids:
          type: array
          items:
            type: string
            format: uuid
        database_ids:
          type: array
          items:
            type: string
            format: uuid
        job_ids:
          type: array
          items:
            type: string
            format: uuid
        helm_ids:
          type: array
          items:
            type: string
            format: uuid
        terraform_ids:
          type: array
          items:
            type: string
            format: uuid
            x-stoplight:
              id: w1tqy39oq25pf
    APIVariableScopeEnum:
      type: string
      enum:
        - APPLICATION
        - BUILT_IN
        - ENVIRONMENT
        - PROJECT
        - CONTAINER
        - JOB
        - HELM
        - TERRAFORM
    APIVariableTypeEnum:
      type: string
      description: |
        type of the environment variable (VALUE, FILE, ALIAS, OVERRIDE, BUIT_IN, EXTERNAL_SECRET, FILE_EXTERNAL_SECRET)
      enum:
        - VALUE
        - ALIAS
        - OVERRIDE
        - BUILT_IN
        - FILE
        - EXTERNAL_SECRET
        - FILE_EXTERNAL_SECRET
    GcpCredentialsRequest:
      oneOf:
        - $ref: '#/components/schemas/GcpServiceAccountKeyCredentialsRequest'
        - $ref: '#/components/schemas/GcpWorkloadIdentityFederationCredentialsRequest'
    GcpServiceAccountKeyCredentialsRequest:
      type: object
      required:
        - name
        - gcp_credentials
      properties:
        name:
          type: string
        credential_type:
          type: string
          description: Optional explicit credential type.
          enum:
            - SERVICE_ACCOUNT_KEY
        gcp_credentials:
          type: string
          description: The json must be base64 encoded
    GcpWorkloadIdentityFederationCredentialsRequest:
      type: object
      required:
        - name
        - service_account_email
        - workload_identity_provider_resource
      properties:
        name:
          type: string
        credential_type:
          type: string
          description: Optional explicit credential type.
          enum:
            - WORKLOAD_IDENTITY_FEDERATION
            - WIF
        service_account_email:
          type: string
          description: GCP service account email to impersonate.
          example: qovery@customer-project.iam.gserviceaccount.com
        workload_identity_provider_resource:
          type: string
          description: Full Workload Identity Provider resource.
          example: projects/123456789/locations/global/workloadIdentityPools/qovery-pool/providers/qovery-aws
    GenericObjectCurrentCost:
      type: object
      required:
        - id
        - name
        - consumed_time_in_seconds
        - cost
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        consumed_time_in_seconds:
          type: integer
          example: 3600
        cost:
          $ref: '#/components/schemas/Cost'
    GitAuthProvider:
      type: object
      required:
        - name
        - owner
      properties:
        id:
          type: string
        name:
          type: string
          example: GITHUB
        owner:
          type: string
          example: John Doe
        use_bot:
          type: boolean
    GitAuthProviderResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/GitAuthProvider'
    GitProviderEnum:
      type: string
      enum:
        - BITBUCKET
        - GITHUB
        - GITLAB
    GitRepository:
      type: object
      required:
        - name
        - url
        - id
      properties:
        id:
          type: string
        name:
          type: string
          example: simple-node-app
        url:
          type: string
          example: 'https://github.com/Qovery/simple-node-app'
        default_branch:
          type: string
          example: master
        is_private:
          type: boolean
    GitRepositoryBranch:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          example: main
    GitRepositoryBranchResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/GitRepositoryBranch'
    GitRepositoryResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/GitRepository'
    GitTokenAssociatedServiceType:
      type: string
      enum:
        - APPLICATION
        - CRON
        - LIFECYCLE
        - HELM
        - TERRAFORM
    GitTokenAssociatedServiceResponse:
      type: object
      required:
        - project_id
        - project_name
        - environment_id
        - environment_name
        - service_id
        - service_name
        - service_type
      properties:
        project_id:
          type: string
          format: uuid
        project_name:
          type: string
        environment_id:
          type: string
          format: uuid
        environment_name:
          type: string
        service_id:
          type: string
          format: uuid
        service_name:
          type: string
        service_type:
          $ref: '#/components/schemas/GitTokenAssociatedServiceType'
    GitTokenAssociatedServicesResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/GitTokenAssociatedServiceResponse'
    GitTokenRequest:
      type: object
      required:
        - name
        - type
        - token
      properties:
        name:
          type: string
        description:
          type: string
        type:
          $ref: '#/components/schemas/GitProviderEnum'
        token:
          type: string
          description: The token from your git provider side
        workspace:
          type: string
          description: 'Mandatory only for BITBUCKET git provider, to allow us to fetch repositories at creation/edition of a service'
        git_api_url:
          type: string
          x-stoplight:
            id: 8g38vvoghxzdf
          format: uri
          description: |-
            custom git api url for the given git provider/type.
            I.e: Self-hosted version of Gitlab
    GitTokenResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - name
            - type
            - associated_services_count
            - git_api_url
          properties:
            name:
              type: string
            description:
              type: string
            type:
              $ref: '#/components/schemas/GitProviderEnum'
            expired_at:
              type: string
              format: date
            workspace:
              type: string
              description: Mandatory only for BITBUCKET git provider
            associated_services_count:
              type: number
              description: The number of services using this git token
            git_api_url:
              type: string
              x-stoplight:
                id: 27n37ox3lysq4
              format: uri
    GitTokenResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/GitTokenResponse'
    Healthcheck:
      type: object
      nullable: false
      properties:
        readiness_probe:
          $ref: '#/components/schemas/Probe'
        liveness_probe:
          $ref: '#/components/schemas/Probe'
    InviteMember:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - email
            - role
            - invitation_link
            - invitation_status
            - inviter
          properties:
            email:
              type: string
              format: email
            role:
              $ref: '#/components/schemas/InviteMemberRoleEnum'
            invitation_link:
              type: string
              format: uri
            invitation_status:
              $ref: '#/components/schemas/InviteStatusEnum'
            organization_name:
              type: string
            inviter:
              type: string
            logo_url:
              type: string
              format: uri
            role_id:
              type: string
              format: uuid
            role_name:
              type: string
    InviteMemberRequest:
      type: object
      required:
        - email
      properties:
        email:
          type: string
        role:
          $ref: '#/components/schemas/InviteMemberRoleEnum'
        role_id:
          type: string
          format: uuid
          description: the target role to attribute to the new member
    InviteMemberResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/InviteMember'
    InviteMemberRoleEnum:
      type: string
      description: deprecated
      enum:
        - ADMIN
        - DEVELOPER
        - OWNER
        - VIEWER
    InviteStatusEnum:
      type: string
      enum:
        - EXPIRED
        - PENDING
    Invoice:
      allOf:
        - $ref: '#/components/schemas/Cost'
        - type: object
          required:
            - id
            - created_at
            - status
            - total_in_cents
            - total
            - currency_code
          properties:
            id:
              type: string
              format: uuid
            created_at:
              type: string
              format: date-time
            status:
              $ref: '#/components/schemas/InvoiceStatusEnum'
    InvoiceResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Invoice'
    InvoiceStatusEnum:
      type: string
      enum:
        - NOT_PAID
        - PAID
        - PAYMENT_DUE
        - PENDING
        - POSTED
        - UNKNOWN
        - VOIDED
    DeploymentStageRequest:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: The name of the deployment stage
        description:
          type: string
          nullable: true
          description: free test describing this stage
    DeploymentStageResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - environment
          properties:
            environment:
              $ref: '#/components/schemas/ReferenceObject'
            name:
              type: string
              description: name is case insensitive
            description:
              type: string
            deployment_order:
              type: integer
              description: Position of the deployment stage within the environment
              example: 1
            services:
              $ref: '#/components/schemas/DeploymentStageServiceResponseList'
    DeploymentStageResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/DeploymentStageResponse'
    DeploymentStageServiceResponseList:
      type: array
      items:
        $ref: '#/components/schemas/DeploymentStageServiceResponse'
    DeploymentStageServiceResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          properties:
            service_id:
              type: string
              format: uuid
              description: id of the service attached to the stage
            service_type:
              type: string
              description: 'type of the service (i.e APPLICATION, JOB, DATABASE, ...)'
            is_skipped:
              type: boolean
              description: whether the service is excluded from environment-level deployments
    DeploymentStageWithServicesStatuses:
      type: object
      properties:
        applications:
          type: array
          items:
            $ref: '#/components/schemas/Status'
        containers:
          type: array
          items:
            $ref: '#/components/schemas/Status'
        jobs:
          type: array
          items:
            $ref: '#/components/schemas/Status'
        databases:
          type: array
          items:
            $ref: '#/components/schemas/Status'
        helms:
          type: array
          items:
            $ref: '#/components/schemas/Status'
        terraforms:
          type: array
          items:
            $ref: '#/components/schemas/Status'
        stage:
          $ref: '#/components/schemas/Stage'
    DockerfileCheckRequest:
      type: object
      required:
        - git_repository
        - dockerfile_path
      properties:
        git_repository:
          $ref: '#/components/schemas/ApplicationGitRepositoryRequest'
        dockerfile_path:
          type: string
          description: path of the dockerfile with root_path as base path
    DockerfileCheckResponse:
      type: object
      required:
        - git_repository
        - dockerfile_path
      properties:
        dockerfile_path:
          type: string
        arg:
          description: All ARG variable declared in the Dockerfile
          type: array
          items:
            type: string
        repositories:
          description: All image repositories we found declared in the Dockerfile
          type: array
          items:
            type: string
    GitFileCheckRequest:
      type: object
      required:
        - git_repository
        - files
      properties:
        git_repository:
          $ref: '#/components/schemas/HelmGitRepositoryRequest'
        files:
          type: array
          items:
            type: string
    GitFileCheckResponse:
      type: object
    HelmCheckRequest:
      type: object
      required:
        - git_repository
      properties:
        git_repository:
          $ref: '#/components/schemas/HelmGitRepositoryRequest'
    HelmCheckResponse:
      type: object
    ContainerImageCheckRequest:
      type: object
      required:
        - registry_d
        - image_name
        - tag
      properties:
        registry_id:
          type: string
          format: uuid
        image_name:
          type: string
        tag:
          type: string
    ContainerImageCheckResponse:
      type: object
    JobRequest:
      allOf:
        - required:
            - name
            - healthchecks
          properties:
            name:
              type: string
              description: name is case insensitive
            description:
              type: string
            cpu:
              type: integer
              description: unit is millicores (m). 1000m = 1 cpu
              default: 500
              example: 1250
            memory:
              type: integer
              description: unit is MB. 1024 MB = 1GB
              default: 512
              example: 1024
            gpu:
              type: integer
              x-stoplight:
                id: 4074yrndptih5
              default: 0
              minimum: 0
              example: 1
            ephemeral_storage_in_gib:
              type: integer
              description: Ephemeral storage of the service in GiB. When omitted, the platform default is used.
              minimum: 0
              example: 10
            max_nb_restart:
              type: integer
              minimum: 0
              default: 0
              description: |
                Maximum number of restart allowed before the job is considered as failed
                0 means that no restart/crash of the job is allowed
            max_duration_seconds:
              type: integer
              minimum: 0
              description: |
                Maximum number of seconds allowed for the job to run before killing it and mark it as failed
            auto_preview:
              type: boolean
              description: |
                Indicates if the 'environment preview option' is enabled for this container.  
                If enabled, a preview environment will be automatically cloned when `/preview` endpoint is called.  
                If not specified, it takes the value of the `auto_preview` property from the associated environment.
            port:
              type: integer
              minimum: 1
              description: Port where to run readiness and liveliness probes checks. The port will not be exposed externally
              default: null
              nullable: true
            source:
              type: object
              properties:
                image:
                  type: object
                  nullable: true
                  properties:
                    image_name:
                      type: string
                      description: |
                        The image name pattern differs according to chosen container registry provider:  
                        * `ECR`: `repository`
                        * `SCALEWAY_CR`: `namespace/image`
                        * `DOCKER_HUB`: `image` or `repository/image`
                        * `PUBLIC_ECR`: `registry_alias/repository`
                    tag:
                      type: string
                      description: tag of the image container
                    registry_id:
                      type: string
                      description: tag of the image container
                docker:
                  type: object
                  nullable: true
                  properties:
                    git_repository:
                      $ref: '#/components/schemas/ApplicationGitRepositoryRequest'
                    dockerfile_path:
                      type: string
                      description: The path of the associated Dockerfile. Only if you are using build_mode = DOCKER
                      nullable: true
                    dockerfile_raw:
                      type: string
                      x-stoplight:
                        id: 2ksmhx7hfs9pi
                      description: The content of your dockerfile if it is not stored inside your git repository
                      nullable: true
                    docker_target_build_stage:
                      type: string
                      x-stoplight:
                        id: qogoqube2vtez
                      description: The target build stage in the Dockerfile to build
                      nullable: true
            cpu_architecture:
              description: CPU architecture to run this service on. If null, the cluster default architecture is used.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CpuArchitectureEnum'
            healthchecks:
              $ref: '#/components/schemas/Healthcheck'
            schedule:
              type: object
              description: |
                If you want to define a Cron job, only the `cronjob` property must be filled  
                A Lifecycle job should contain at least one property `on_XXX` among the 3 properties: `on_start`, `on_stop`, `on_delete`
              properties:
                on_start:
                  type: object
                  properties:
                    arguments:
                      type: array
                      items:
                        type: string
                    entrypoint:
                      type: string
                      description: optional entrypoint when launching container
                on_stop:
                  type: object
                  properties:
                    arguments:
                      type: array
                      items:
                        type: string
                    entrypoint:
                      type: string
                      description: optional entrypoint when launching container
                on_delete:
                  type: object
                  properties:
                    arguments:
                      type: array
                      items:
                        type: string
                    entrypoint:
                      type: string
                      description: optional entrypoint when launching container
                cronjob:
                  type: object
                  required:
                    - scheduled_at
                  properties:
                    arguments:
                      type: array
                      items:
                        type: string
                    entrypoint:
                      type: string
                      description: optional entrypoint when launching container
                    timezone:
                      type: string
                      description: Specify a timezone identifier to run the schedule at. By default Etc/UTC
                    scheduled_at:
                      type: string
                      format: cron
                      description: |
                        Can only be set if the event is CRON.  
                        Represent the cron format for the job schedule without seconds.  
                        For example: `* * * * *` represent the cron to launch the job every minute.  
                        See https://crontab.guru/ to WISIWIG interface.  
                        Timezone is UTC
                lifecycle_type:
                  $ref: '#/components/schemas/JobLifecycleTypeEnum'
            auto_deploy:
              type: boolean
              description: |
                Specify if the job will be automatically updated after receiving a new image tag or a new commit according to the source type. 
                The new image tag shall be communicated via the "Auto Deploy job" endpoint https://api-doc.qovery.com/#tag/Jobs/operation/autoDeployJobEnvironments
              nullable: true
            annotations_groups:
              $ref: '#/components/schemas/ServiceAnnotationsRequestList'
            labels_groups:
              $ref: '#/components/schemas/ServiceLabelsRequestList'
            icon_uri:
              type: string
              format: uri
              description: Icon URI representing the job.
              x-stoplight:
                id: k3gangiisgxpc
      type: object
    JobResponse:
      oneOf:
        - $ref: '#/components/schemas/LifecycleJobResponse'
        - $ref: '#/components/schemas/CronJobResponse'
      discriminator:
        propertyName: job_type
        mapping:
          LIFECYCLE: '#/components/schemas/LifecycleJobResponse'
          CRON: '#/components/schemas/CronJobResponse'
    JobResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/JobResponse'
    JobAdvancedSettings:
      type: object
      properties:
        build.timeout_max_sec:
          type: integer
          description: define the max timeout for the build
        build.cpu_max_in_milli:
          type: integer
          description: define the max cpu resources (in milli)
        build.ram_max_in_gib:
          type: integer
          description: define the max ram resources (in gib)
        build.disable_buildkit_cache:
          type: boolean
          description: disable buildkit registry cache during build
        build.skip_git_submodules:
          type: boolean
          description: skip git submodules update when cloning the repository
        deployment.termination_grace_period_seconds:
          type: integer
          description: define how long in seconds an application is supposed to be stopped gracefully
        deployment.affinity.node.required:
          type: object
          additionalProperties:
            type: string
          description: Set pod placement on specific Kubernetes nodes labels
        job.delete_ttl_seconds_after_finished:
          type: integer
          nullable: true
        cronjob.concurrency_policy:
          type: string
        cronjob.failed_jobs_history_limit:
          type: integer
        cronjob.success_jobs_history_limit:
          type: integer
        security.service_account_name:
          type: string
          description: |
            Allows you to set an existing Kubernetes service account name
        security.automount_service_account_token:
          type: boolean
          description: |
            Automount Kubernetes service account token to have access to Kubernetes API from pods
        security.read_only_root_filesystem:
          type: boolean
          description: |
            Mounts the container's root filesystem as read-only
    JobDeployRequest:
      type: object
      properties:
        image_tag:
          type: string
          description: |
            Image tag to deploy.  
            Cannot be set if `git_commit_id` is defined
        git_commit_id:
          type: string
          description: |
            Commit to deploy
            Cannot be set if `image_tag` is defined
    JobDeploymentRestrictionRequest:
      type: object
      required:
        - mode
        - type
        - value
      properties:
        mode:
          $ref: '#/components/schemas/DeploymentRestrictionModeEnum'
        type:
          $ref: '#/components/schemas/DeploymentRestrictionTypeEnum'
        value:
          type: string
          description: 'For `PATH` restrictions, the value must not start with `/`'
          example: job1/src/
    JobDeploymentRestrictionResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - $ref: '#/components/schemas/JobDeploymentRestrictionRequest'
    JobDeploymentRestrictionResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/JobDeploymentRestrictionResponse'
    JobScheduleEvent:
      type: string
      enum:
        - ON_START
        - ON_STOP
        - ON_DELETE
        - CRON
      description: |
        On which event the job is going to run.  
        ON_START means when a deployment is requested for the environment  
        ON_STOP means when a stop of the environment is requested  
        ON_DELETE means when an environment delete is requested  
        CRON means at a scheduled interval
    JobForceEvent:
      type: string
      enum:
        - START
        - STOP
        - DELETE
        - CRON
    DeploymentHistoryJobResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          properties:
            name:
              type: string
              description: name of the job
            status:
              $ref: '#/components/schemas/StateEnum'
            image_name:
              type: string
            tag:
              type: string
            commit:
              $ref: '#/components/schemas/Commit'
            schedule:
              type: object
              properties:
                event:
                  $ref: '#/components/schemas/JobScheduleEvent'
                schedule_at:
                  type: string
                  format: cron
                  nullable: true
                  description: |
                    Can only be set if the event is CRON.
                    Represent the cron format for the job schedule without seconds.
                    For example: `* * * * *` represent the cron to launch the job every minute.
                    See https://crontab.guru/ to WISIWIG interface.
                    Timezone is UTC
            arguments:
              type: array
              items:
                type: string
            entrypoint:
              type: string
    HelmRequest:
      allOf:
        - $ref: '#/components/schemas/HelmPortRequest'
        - type: object
          required:
            - name
            - auto_deploy
            - source
            - arguments
            - values_override
          properties:
            name:
              type: string
              description: name is case insensitive
            description:
              type: string
            timeout_sec:
              type: integer
              minimum: 0
              default: 600
              description: |
                Maximum number of seconds allowed for helm to run before killing it and mark it as failed
            auto_preview:
              type: boolean
              description: |
                Indicates if the 'environment preview option' is enabled.  
                If enabled, a preview environment will be automatically cloned when `/preview` endpoint is called or when a new commit is updated.
                If not specified, it takes the value of the `auto_preview` property from the associated environment.
              nullable: true
            auto_deploy:
              type: boolean
              description: |
                Specify if the helm will be automatically updated after receiving a new image tag or a new commit according to the source type.
            source:
              oneOf:
                - type: object
                  properties:
                    git_repository:
                      $ref: '#/components/schemas/HelmGitRepositoryRequest'
                - type: object
                  properties:
                    helm_repository:
                      type: object
                      properties:
                        repository:
                          type: string
                          format: UUID
                          description: The id of the helm repository
                          nullable: true
                        chart_name:
                          type: string
                          description: The name of the chart in the repository
                        chart_version:
                          type: string
                          description: The version of the chart to use
            arguments:
              type: array
              description: The extra arguments to pass to helm
              items:
                type: string
            allow_cluster_wide_resources:
              type: boolean
              default: false
              description: |
                If we should allow the chart to deploy object outside his specified namespace.
                Setting this flag to true, requires special rights
            values_override:
              type: object
              description: |
                Specify helm values you want to set or override
              properties:
                set:
                  $ref: '#/components/schemas/HelmKeyValues'
                set_string:
                  $ref: '#/components/schemas/HelmKeyValues'
                set_json:
                  $ref: '#/components/schemas/HelmKeyValues'
                file:
                  type: object
                  nullable: true
                  properties:
                    git:
                      type: object
                      nullable: true
                      required:
                        - git_repository
                        - paths
                      properties:
                        git_repository:
                          $ref: '#/components/schemas/ApplicationGitRepositoryRequest'
                        paths:
                          type: array
                          description: List of path inside your git repository to locate values file. Must start by a /
                          items:
                            type: string
                    raw:
                      type: object
                      nullable: true
                      properties:
                        values:
                          type: array
                          items:
                            type: object
                            properties:
                              name:
                                type: string
                                description: The name of the value file
                              content:
                                type: string
                                description: The content of the value file
            icon_uri:
              type: string
              format: uri
              description: Icon URI representing the helm service.
              x-stoplight:
                id: 117p5u95nwx2p
            blueprint_id:
              type: string
              format: uuid
              nullable: true
              description: |
                The blueprint ID the service has been created from
    HelmResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - environment
            - name
            - auto_preview
            - auto_deploy
            - source
            - arguments
            - allow_cluster_wide_resources
            - values_override
            - icon_uri
            - service_type
          properties:
            environment:
              $ref: '#/components/schemas/ReferenceObject'
            name:
              type: string
              description: name is case insensitive
            description:
              type: string
            timeout_sec:
              type: integer
              minimum: 0
              default: 600
              description: |
                Maximum number of seconds allowed for helm to run before killing it and mark it as failed
            auto_preview:
              type: boolean
              description: |
                Indicates if the 'environment preview option' is enabled.  
                If enabled, a preview environment will be automatically cloned when `/preview` endpoint is called.  
                If not specified, it takes the value of the `auto_preview` property from the associated environment.
            auto_deploy:
              type: boolean
              description: |
                Specify if the service will be automatically updated after receiving a new image tag or a new commit according to the source type.
            ports:
              type: array
              items:
                oneOf:
                  - $ref: '#/components/schemas/HelmPortResponseWithServiceName'
                  - $ref: '#/components/schemas/HelmPortResponseWithServiceSelectors'
                discriminator:
                  propertyName: port_type
                  mapping:
                    SERVICE_NAME: '#/components/schemas/HelmPortResponseWithServiceName'
                    SERVICE_SELECTORS: '#/components/schemas/HelmPortResponseWithServiceSelectors'
            source:
              nullable: false
              oneOf:
                - required:
                    - git
                  properties:
                    git:
                      $ref: '#/components/schemas/HelmSourceGitResponse'
                  type: object
                - x-stoplight:
                    id: 0prdehm6z8pua
                  required:
                    - repository
                  properties:
                    repository:
                      $ref: '#/components/schemas/HelmSourceRepositoryResponse'
                  type: object
            arguments:
              type: array
              description: The extra arguments to pass to helm
              items:
                type: string
            allow_cluster_wide_resources:
              type: boolean
              default: false
              description: |
                If we should allow the chart to deploy object outside his specified namespace.
                Setting this flag to true, requires special rights
            values_override:
              type: object
              description: |
                Specify helm values you want to set or override
              properties:
                set:
                  $ref: '#/components/schemas/HelmKeyValues'
                set_string:
                  $ref: '#/components/schemas/HelmKeyValues'
                set_json:
                  $ref: '#/components/schemas/HelmKeyValues'
                file:
                  type: object
                  nullable: true
                  properties:
                    raw:
                      type: object
                      nullable: true
                      required:
                        - values
                      properties:
                        values:
                          type: array
                          items:
                            type: object
                            required:
                              - name
                              - content
                            properties:
                              name:
                                type: string
                                description: The name of the value file
                              content:
                                type: string
                                description: The content of the value file
                    git:
                      type: object
                      nullable: true
                      required:
                        - git_repository
                        - paths
                      properties:
                        git_repository:
                          $ref: '#/components/schemas/ApplicationGitRepository'
                        paths:
                          type: array
                          description: List of path inside your git repository to locate values file. Must start by a /
                          items:
                            type: string
            icon_uri:
              type: string
              format: uri
              description: Icon URI representing the helm service.
              x-stoplight:
                id: i2pvbugqsldhe
            service_type:
              $ref: '#/components/schemas/ServiceTypeEnum'
            blueprint_id:
              type: string
              format: uuid
              nullable: true
              description: |
                The blueprint ID the service has been created from
    HelmPortResponseBase:
      type: object
      required:
        - id
        - internal_port
        - protocol
        - port_type
      properties:
        id:
          type: string
          format: uuid
        port_type:
          type: string
        name:
          type: string
        internal_port:
          type: integer
          example: 8080
          description: The listening port of your service.
        external_port:
          type: integer
          example: 8080
          description: The exposed port for your service. This is optional. If not set a default port will be used.
        namespace:
          type: string
        protocol:
          $ref: '#/components/schemas/HelmPortProtocolEnum'
        is_default:
          type: boolean
          description: is the default port to use for domain
    HelmPortResponseWithServiceName:
      allOf:
        - $ref: '#/components/schemas/HelmPortResponseBase'
        - type: object
          required:
            - service_name
          properties:
            service_name:
              type: string
    HelmPortResponseWithServiceSelectors:
      allOf:
        - $ref: '#/components/schemas/HelmPortResponseBase'
        - type: object
          required:
            - service_selectors
          properties:
            service_selectors:
              type: array
              items:
                $ref: '#/components/schemas/KubernetesSelector'
    HelmResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/HelmResponse'
    HelmAdvancedSettings:
      type: object
      properties:
        deployment.custom_domain_check_enabled:
          type: boolean
          description: disable custom domain check when deploying a helm
        network.ingress.proxy_body_size_mb:
          type: integer
        network.ingress.force_ssl_redirect:
          type: boolean
          x-stoplight:
            id: 6tcwjiqqo99ii
          description: 'When using SSL offloading outside of cluster, you can enforce a redirect to HTTPS even when there is no TLS certificate available'
        network.ingress.enable_cors:
          type: boolean
        network.ingress.cors_allow_origin:
          type: string
        network.ingress.cors_allow_methods:
          type: string
        network.ingress.cors_allow_headers:
          type: string
        network.ingress.proxy_buffer_size_kb:
          type: integer
          description: header buffer size used while reading response header from upstream
        network.ingress.keepalive_time_seconds:
          type: integer
          description: Limits the maximum time (in seconds) during which requests can be processed through one keepalive connection
        network.ingress.keepalive_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) during which an idle keepalive connection to an upstream server will stay open.
        network.ingress.send_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for transmitting a response to the client
        network.ingress.proxy_connect_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for establishing a connection to a proxied server
        network.ingress.proxy_send_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for transmitting a request to the proxied server
        network.ingress.proxy_read_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for reading a response from the proxied server
        network.ingress.proxy_buffering:
          type: string
          description: Allows to enable or disable nginx `proxy-buffering`
        network.ingress.proxy_request_buffering:
          type: string
          description: Allows to enable or disable nginx `proxy-request-buffering`
        network.ingress.grpc_send_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for transmitting a request to the grpc server
        network.ingress.grpc_read_timeout_seconds:
          type: integer
          description: Sets a timeout (in seconds) for transmitting a request to the grpc server
        network.ingress.whitelist_source_range:
          type: string
          description: |
            list of source ranges to allow access to ingress proxy. 
            This property can be used to whitelist source IP ranges for ingress proxy.
            The value is a comma separated list of CIDRs, e.g. 10.0.0.0/24,172.10.0.1
            To allow all source ranges, set 0.0.0.0/0.
        network.ingress.denylist_source_range:
          type: string
          description: |
            list of source ranges to deny access to ingress proxy. 
            This property can be used to blacklist source IP ranges for ingress proxy.
            The value is a comma separated list of CIDRs, e.g. 10.0.0.0/24,172.10.0.1
        network.ingress.extra_headers:
          type: string
          description: Allows to define response headers
          example: '{"X-Frame-Options":"DENY ","X-Content-Type-Options":"nosniff"}'
        network.ingress.basic_auth_env_var:
          type: string
          description: |
            Set the name of an environment variable to use as a basic authentication (`login:crypted_password`) from `htpasswd` command. You can add multiples comma separated values.
        network.ingress.enable_sticky_session:
          type: boolean
          description: |
            Enable the load balancer to bind a user's session to a specific target.
            This ensures that all requests from the user during the session are sent to the same target
        network.gateway_api.http_request_timeout_seconds:
          type: integer
          nullable: true
          minimum: 0
          description: Sets a timeout (in seconds) for requests proxied through the Gateway API route.
        network.gateway_api.http_connection_idle_timeout_seconds:
          type: integer
          nullable: true
          minimum: 0
          description: Sets the idle timeout (in seconds) for HTTP connections proxied through the Gateway API route.
        network.gateway_api.retry.num_retries:
          type: integer
          nullable: true
          minimum: 0
          description: Sets the number of retry attempts for requests proxied through the Gateway API route.
        network.gateway_api.retry.retry_on:
          type: string
          nullable: true
          description: Comma-separated retry triggers (for example connect-failure,reset,refused-stream,retriable-status-codes) for requests proxied through the Gateway API route.
        network.gateway_api.retry.http_status_codes:
          type: string
          nullable: true
          description: Comma-separated HTTP status codes (100..599) retried when retry_on includes retriable-status-codes.
        network.gateway_api.retry.per_try_timeout_seconds:
          type: integer
          nullable: true
          minimum: 1
          description: Sets the timeout (in seconds) applied to each retry attempt for requests proxied through the Gateway API route.
    HelmDeployRequest:
      type: object
      properties:
        chart_version:
          type: string
          description: |
            version of the chart to deploy.
            Cannot be set if `git_commit_id` is defined
        git_commit_id:
          type: string
          description: |
            Commit to deploy for chart source.
            Cannot be set if `version` is defined
        values_override_git_commit_id:
          type: string
          description: |
            Commit to deploy for values override
    HelmDeploymentRestrictionRequest:
      type: object
      required:
        - mode
        - type
        - value
      properties:
        mode:
          $ref: '#/components/schemas/DeploymentRestrictionModeEnum'
        type:
          $ref: '#/components/schemas/DeploymentRestrictionTypeEnum'
        value:
          type: string
          description: 'For `PATH` restrictions, the value must not start with `/`'
          example: helm1/src/
    HelmDeploymentRestrictionResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - $ref: '#/components/schemas/HelmDeploymentRestrictionRequest'
    HelmDeploymentRestrictionResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/HelmDeploymentRestrictionResponse'
    HelmPortRequest:
      type: object
      properties:
        ports:
          type: array
          items:
            allOf:
              - type: object
                required:
                  - internal_port
                properties:
                  name:
                    type: string
                  internal_port:
                    type: integer
                    example: 8080
                    description: The listening port of your service.
                  external_port:
                    type: integer
                    example: 8080
                    description: The exposed port for your service. This is optional. If not set a default port will be used.
                  namespace:
                    type: string
                  protocol:
                    $ref: '#/components/schemas/HelmPortProtocolEnum'
                  is_default:
                    type: boolean
                    description: is the default port to use for domain
              - oneOf:
                  - type: object
                    properties:
                      service_selectors:
                        type: array
                        items:
                          $ref: '#/components/schemas/KubernetesSelector'
                  - type: object
                    properties:
                      service_name:
                        type: string
    HelmForceEvent:
      type: string
      enum:
        - DIFF
    DeploymentHistoryHelmResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          properties:
            name:
              type: string
              description: name of the helm
            status:
              $ref: '#/components/schemas/StateEnum'
            commit:
              $ref: '#/components/schemas/Commit'
            repository:
              type: object
              nullable: true
              description: 'If the chart source if from a repository, the chart name and its version'
              properties:
                chart_name:
                  type: string
                chart_version:
                  type: string
    HelmPortProtocolEnum:
      type: string
      default: HTTP
      enum:
        - HTTP
        - GRPC
    HelmDefaultValuesRequest:
      allOf:
        - type: object
          required:
            - source
          properties:
            source:
              oneOf:
                - type: object
                  properties:
                    git_repository:
                      $ref: '#/components/schemas/HelmGitRepositoryRequest'
                - type: object
                  properties:
                    helm_repository:
                      type: object
                      properties:
                        repository:
                          type: string
                          format: UUID
                          description: The id of the helm repository
                          nullable: true
                        chart_name:
                          type: string
                          description: The name of the chart in the repository
                        chart_version:
                          type: string
                          description: The version of the chart to use
    Key:
      type: object
      title: EnvironmentVariableAliasRequest
      required:
        - key
      properties:
        key:
          type: string
        description:
          type: string
          x-stoplight:
            id: qe7qh1tjtkwrm
          maxLength: 255
          description: optional variable description (255 characters maximum)
          nullable: true
        enable_interpolation_in_file:
          type: boolean
          x-stoplight:
            id: alajw1h9vgr9e
          nullable: true
    KubernetesEnum:
      type: string
      enum:
        - MANAGED
        - SELF_MANAGED
        - PARTIALLY_MANAGED
      default: MANAGED
    Link:
      type: object
      required:
        - service_id
        - service_type
        - url
        - internal_port
        - external_port
        - is_qovery_domain
        - is_default
      properties:
        service_id:
          type: string
          format: uuid
          description: ID of the associated service
        service_type:
          $ref: '#/components/schemas/ServiceTypeEnum'
        url:
          type: string
          description: URL to access the service
        internal_port:
          type: integer
          description: The port from which the service is reachable from within the cluster
        external_port:
          type: integer
          description: 'The port from which the service is reachable from externally (i.e: 443 for HTTPS)'
        is_qovery_domain:
          type: boolean
          description: 'True if the domain is managed by Qovery, false if it belongs to the user'
        is_default:
          type: boolean
          description: |
            Indicate if the link is using the root of the domain and not one derivated from port
            i.e:
            p8080.zxxxx.jvm.worl      => is_default = false, is_qovery = true
            zxxxx.jvm.world           => is_default = true, is_qovery = true
            p8080-my-super-domain.com => is_default = false, is_qovery = false
            my-super-domain.com       => is_default = true, is_qovery = false
    LinkResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Link'
    LinkedServiceTypeEnum:
      type: string
      description: 'type of the service (application, database, job, gateway...)'
      enum:
        - APPLICATION
        - CONTAINER
        - DATABASE
        - JOB
        - HELM
        - TERRAFORM
    Log:
      type: object
      required:
        - id
        - created_at
        - message
      properties:
        id:
          type: string
          format: uuid
          example: 4aa76065-68b3-41ef-aa1d-46be67012bef
        created_at:
          type: string
          format: date-time
          example: '2022-04-19T15:36:12.024Z'
        message:
          type: string
        pod_name:
          type: string
          example: app-z4aa76065-57d84cbbdb-xcg8v
        version:
          type: string
          example: 2bfd61fe45946c74f318050b26210be486c43a39
    LogResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Log'
    ManagedDatabaseTypeResponse:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          example: MYSQL
    ManagedDatabaseTypeResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ManagedDatabaseTypeResponse'
    ManagedDatabaseInstanceTypeResponse:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          example: db.t3.medium
    ManagedDatabaseInstanceTypeResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ManagedDatabaseInstanceTypeResponse'
    Member:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - email
          properties:
            name:
              type: string
            nickname:
              type: string
            email:
              type: string
              format: email
            profile_picture_url:
              type: string
              format: uri
            last_activity_at:
              type: string
              format: date-time
              description: last time the user was connected
            role:
              $ref: '#/components/schemas/InviteMemberRoleEnum'
            role_name:
              type: string
              description: the role linked to the user
            role_id:
              type: string
              format: uuid
    MemberResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Member'
    MemberRoleUpdateRequest:
      type: object
      required:
        - user_id
        - role_id
      properties:
        user_id:
          type: string
          description: specify the git provider user id
        role_id:
          type: string
          format: uuid
    Organization:
      allOf:
        - $ref: '#/components/schemas/Base'
        - $ref: '#/components/schemas/OrganizationRequest'
        - type: object
          properties:
            owner:
              type: string
              format: uuid
              description: uuid of the user owning the organization
            billing_deployment_restriction:
              type: string
              nullable: true
              description: >-
                If set, indicates a billing-related restriction on the organization.
                'NO_CREDIT_CARD' means the organization is on a free trial without a credit card —
                managed cluster creation and deployments on managed clusters are blocked,
                but demo cluster usage is allowed.
                Any other value blocks all deployments.
                null means no restriction.
        - type: object
          properties:
            organization_plan:
              type: object
              properties:
                plan:
                  $ref: '#/components/schemas/PlanEnum'
                audit_logs_retention_in_days:
                  type: number
                  description: audit logs maximum period available in days
    OrganizationAgentApiToken:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          properties:
            name:
              type: string
            description:
              type: string
            opa_policy:
              type: string
              description: the Open Policy Agent (rego) policy evaluated on every request made with this token
            creator_name:
              type: string
              nullable: true
            expires_at:
              type: string
              format: date-time
              nullable: true
    OrganizationAgentApiTokenCreate:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          properties:
            name:
              type: string
            description:
              type: string
            token:
              type: string
              description: the generated token to send in 'Authorization' header prefixed by 'Token '. It is returned only here and cannot be retrieved afterwards.
            creator_name:
              type: string
              nullable: true
            user_sub:
              type: string
            expires_at:
              type: string
              format: date-time
              nullable: true
    OrganizationAgentApiTokenCreateRequest:
      type: object
      required:
        - name
        - opa_policy
      properties:
        name:
          type: string
        description:
          type: string
        opa_policy:
          type: string
          description: >-
            Open Policy Agent (rego) rule definitions, without a `package` declaration: Qovery
            prepends a per-token package so that one token's rules cannot authorize another's. The
            policy must define an `allow` rule, and the request is denied unless it evaluates to
            true.
        expires_at:
          type: string
          format: date-time
          nullable: true
    OrganizationAgentApiTokenResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationAgentApiToken'
    OrganizationApiToken:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          properties:
            name:
              type: string
            description:
              type: string
            role_name:
              type: string
            role_id:
              type: string
              format: uuid
    OrganizationApiTokenCreate:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          properties:
            name:
              type: string
            description:
              type: string
            token:
              type: string
              description: the generated token to send in 'Authorization' header prefixed by 'Token '
            role_name:
              type: string
            role_id:
              type: string
              format: uuid
    OrganizationApiTokenCreateRequest:
      type: object
      required:
        - name
        - role_id
      properties:
        name:
          type: string
        description:
          type: string
        scope:
          $ref: '#/components/schemas/OrganizationApiTokenScope'
        role_id:
          type: string
          format: uuid
          nullable: true
          description: the roleId provided by the "List organization custom roles" endpoint.
    OrganizationApiTokenResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationApiToken'
    OrganizationApiTokenScope:
      type: string
      nullable: true
      description: deprecated
      enum:
        - ADMIN
    OrganizationAvailableRole:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
    OrganizationAvailableRoleList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationAvailableRole'
    OrganizationChangePlanRequest:
      type: object
      properties:
        plan:
          type: string
    OrganizationContainerAutoDeployRequest:
      type: object
      properties:
        image_name:
          type: string
          description: the container image name to deploy
        tag:
          type: string
          description: the new tag to deploy
    OrganizationContainerPreviewRequest:
      type: object
      properties:
        image_name:
          type: string
          description: the container image name to trigger preview environment
        tag:
          type: string
          description: the tag to be used in the preview environment
    OrganizationCreditCodeRequest:
      type: object
      properties:
        code:
          type: string
    OrganizationCurrentCost:
      allOf:
        - $ref: '#/components/schemas/CurrentCost'
        - type: object
    OrganizationCustomRoleCreateRequest:
      type: object
      required:
        - name
      properties:
        name:
          type: string
        description:
          type: string
    OrganizationCustomRoleUpdateRequest:
      type: object
      required:
        - name
        - cluster_permissions
        - project_permissions
      properties:
        name:
          type: string
        description:
          type: string
        cluster_permissions:
          description: Should contain an entry for every existing cluster
          type: array
          items:
            type: object
            properties:
              cluster_id:
                type: string
                format: uuid
              permission:
                $ref: '#/components/schemas/OrganizationCustomRoleClusterPermission'
        project_permissions:
          description: Should contain an entry for every existing project
          type: array
          items:
            type: object
            properties:
              project_id:
                type: string
                format: uuid
              is_admin:
                type: boolean
                description: |
                  If `is_admin` is `true`, the user is:
                  - automatically `MANAGER` for each environment type
                  - allowed to manage project deployment rules
                  - able to delete the project  

                  Note that `permissions` can then be ignored for this project
                default: false
              permissions:
                description: |
                  Mandatory if `is_admin` is `false`  
                  Should contain an entry for every environment type:
                  - `DEVELOPMENT`
                  - `PREVIEW`
                  - `STAGING`
                  - `PRODUCTION`
                type: array
                items:
                  type: object
                  properties:
                    environment_type:
                      $ref: '#/components/schemas/EnvironmentModeEnum'
                    permission:
                      $ref: '#/components/schemas/OrganizationCustomRoleProjectPermission'
    OrganizationCustomRole:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        cluster_permissions:
          type: array
          items:
            type: object
            properties:
              cluster_id:
                type: string
                format: uuid
              cluster_name:
                type: string
              permission:
                $ref: '#/components/schemas/OrganizationCustomRoleClusterPermission'
        project_permissions:
          type: array
          items:
            type: object
            properties:
              project_id:
                type: string
                format: uuid
              project_name:
                type: string
              is_admin:
                type: boolean
                description: |
                  If `is_admin` is `true`, the user is:
                  - automatically `MANAGER` for each environment type
                  - allowed to manage project deployment rules
                  - able to delete the project  

                  Note that `permissions` can then be ignored for this project
                default: false
              permissions:
                type: array
                items:
                  type: object
                  properties:
                    environment_type:
                      $ref: '#/components/schemas/EnvironmentModeEnum'
                    permission:
                      $ref: '#/components/schemas/OrganizationCustomRoleProjectPermission'
    OrganizationCustomRoleList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationCustomRole'
    OrganizationCustomRoleProjectPermission:
      type: string
      description: |
        Indicates the permission for a target project and a given environment type, from the lowest to the highest:
        - `NO_ACCESS` user has no access
        - `VIEWER` user can access the environment (and applications / containers / databases / variables)
        - `DEPLOYER` user can deploy the environment (dependent on the required cluster permission `ENV_CREATOR`)
        - `MANAGER` user can create an environment (and applications / containers / databases / variables)
      enum:
        - NO_ACCESS
        - VIEWER
        - DEPLOYER
        - MANAGER
      example: NO_ACCESS
    OrganizationCustomRoleClusterPermission:
      type: string
      description: |
        Indicates the permission for a target cluster, from the lowest to the highest:
        - `VIEWER` user has only read access on target cluster
        - `ENV_CREATOR` user can deploy on the cluster
        - `ADMIN` user can modify the cluster settings
      enum:
        - VIEWER
        - ENV_CREATOR
        - ADMIN
      example: VIEWER
    OrganizationEditRequest:
      type: object
      required:
        - name
        - plan
      properties:
        name:
          type: string
          description: name is case insensitive
        description:
          type: string
        website_url:
          type: string
          nullable: true
        repository:
          type: string
          nullable: true
        logo_url:
          type: string
          nullable: true
        icon_url:
          type: string
          nullable: true
        admin_emails:
          type: array
          nullable: true
          items:
            type: string
    OrganizationGithubAppConnectRequest:
      type: object
      required:
        - installation_id
        - code
      properties:
        installation_id:
          type: string
        code:
          type: string
    OrganizationRequest:
      type: object
      required:
        - name
        - plan
      properties:
        name:
          type: string
          description: name is case insensitive
        description:
          type: string
          nullable: true
        plan:
          $ref: '#/components/schemas/PlanEnum'
        website_url:
          type: string
          nullable: true
        repository:
          type: string
          nullable: true
        logo_url:
          type: string
          nullable: true
        icon_url:
          type: string
          nullable: true
        admin_emails:
          type: array
          nullable: true
          items:
            type: string
    OrganizationResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Organization'
    OrganizationOnboardingResponse:
      type: object
      properties:
        use_cases:
          type: string
          nullable: true
          description: Comma-separated list of use cases selected by the organization owner at sign-up (e.g. "ephemeral-environments,rde")
          example: 'ephemeral-environments,rde'
        status:
          $ref: '#/components/schemas/OrganizationOnboardingStatusEnum'
    OrganizationOnboardingPatchRequest:
      type: object
      required:
        - status
      properties:
        status:
          $ref: '#/components/schemas/OrganizationOnboardingStatusEnum'
    OrganizationOnboardingStatusEnum:
      type: string
      enum:
        - IN_PROGRESS
        - DISMISSED
        - COMPLETED
    OrganizationEventResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        timestamp:
          type: string
          format: date-time
        event_type:
          $ref: '#/components/schemas/OrganizationEventType'
        target_id:
          type: string
          format: uuid
          nullable: true
        target_name:
          type: string
        target_type:
          $ref: '#/components/schemas/OrganizationEventTargetType'
        sub_target_type:
          $ref: '#/components/schemas/OrganizationEventSubTargetType'
        change:
          type: string
        origin:
          $ref: '#/components/schemas/OrganizationEventOrigin'
        triggered_by:
          type: string
        project_id:
          type: string
          format: uuid
          nullable: true
        project_name:
          type: string
        environment_id:
          type: string
          format: uuid
          nullable: true
        environment_name:
          type: string
        user_agent:
          type: string
          nullable: true
        original_change:
          type: string
          nullable: true
      description: ''
      title: ''
    OrganizationEventResponseList:
      type: object
      properties:
        links:
          type: object
          properties:
            previous:
              type: string
              format: uri
            next:
              type: string
              format: uri
        organization_max_limit_reached:
          type: boolean
          description: Indicates if you cannot see previous logs according to your organization max limit
        events:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationEventResponse'
    OrganizationEventTargetResponseList:
      type: object
      properties:
        targets:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
              name:
                type: string
    OrganizationEventOrigin:
      type: string
      description: Origin of the organization event
      enum:
        - API
        - CLI
        - CONSOLE
        - GIT
        - QOVERY_INTERNAL
        - SKILL
        - TERRAFORM_PROVIDER
      example: API
    OrganizationEventTargetLevel:
      type: string
      description: The target level to fetch
      enum:
        - PROJECT
        - ENVIRONMENT
    OrganizationEventSubTargetType:
      type: string
      description: Type of the organization event
      nullable: true
      enum:
        - ADVANCED_SETTINGS
        - ALERT_RULE
        - ANNOTATIONS_GROUP
        - API_TOKEN
        - BILLING_INFO
        - BILLING_USAGE_REPORT
        - CLOUD_PROVIDER_CREDENTIALS
        - CLUSTER_CREDENTIALS
        - CLUSTER_ROUTING_TABLE
        - CONFIG
        - CREDIT_CARD
        - CREDIT_CODE
        - CUSTOM_DOMAIN
        - CUSTOM_ROLE
        - DEPLOYMENT_RULE
        - DEPLOYMENT_STAGE
        - GITHUB_APP
        - GIT_REPOSITORY
        - GIT_TOKEN
        - INVITATION
        - KUBERNETES_CONFIGURATION
        - KUBERNETES_CREDENTIALS
        - LABELS_GROUP
        - MEMBER_ROLE
        - PLAN
        - REMOTE_ACCESS
        - SECRET
        - SSO
        - TERRAFORM
        - TRANSFER_OWNERSHIP
        - VARIABLE
      example: ADVANCED_SETTINGS
    OrganizationEventTargetType:
      type: string
      description: Type of the organization event
      enum:
        - APPLICATION
        - CLUSTER
        - CONTAINER
        - CONTAINER_REGISTRY
        - DATABASE
        - ENTERPRISE_CONNECTION
        - ENVIRONMENT
        - JOB
        - HELM
        - HELM_REPOSITORY
        - MEMBERS_AND_ROLES
        - ORGANIZATION
        - PROJECT
        - WEBHOOK
        - TERRAFORM
      example: APPLICATION
      title: ''
    OrganizationEventType:
      type: string
      description: Type of the organization event
      enum:
        - CREATE
        - UPDATE
        - DELETE
        - ACCEPT
        - EXPORT
        - CLONE
        - DEPLOY_QUEUED
        - STOP_QUEUED
        - RESTART_QUEUED
        - DELETE_QUEUED
        - UNINSTALL_QUEUED
        - MAINTENANCE
        - DRY_RUN
        - TRIGGER_REDEPLOY
        - TRIGGER_CANCEL
        - FORCE_RUN_QUEUED
        - FORCE_RUN_QUEUED_DEPLOY
        - FORCE_RUN_QUEUED_STOP
        - FORCE_RUN_QUEUED_DELETE
        - TRIGGER_DEPLOY
        - TRIGGER_STOP
        - TRIGGER_RESTART
        - TRIGGER_DELETE
        - TRIGGER_UNINSTALL
        - TRIGGER_DEPLOY_DRY_RUN
        - TRIGGER_TERRAFORM_FORCE_UNLOCK
        - TRIGGER_TERRAFORM_MIGRATE_STATE
        - TRIGGER_FORCE_RUN
        - TRIGGER_FORCE_RUN_DEPLOY
        - TRIGGER_FORCE_RUN_STOP
        - TRIGGER_FORCE_RUN_DELETE
        - DEPLOYED
        - STOPPED
        - DELETED
        - UNINSTALLED
        - RESTARTED
        - DEPLOYED_DRY_RUN
        - FORCE_RUN_SUCCEEDED
        - TERRAFORM_FORCE_UNLOCK_SUCCEEDED
        - TERRAFORM_MIGRATE_STATE_SUCCEEDED
        - DEPLOY_FAILED
        - STOP_FAILED
        - DELETE_FAILED
        - UNINSTALL_FAILED
        - RESTART_FAILED
        - DEPLOYED_DRY_RUN_FAILED
        - FORCE_RUN_FAILED
        - TERRAFORM_FORCE_UNLOCK_FAILED
        - TERRAFORM_MIGRATE_STATE_FAILED
        - SHELL
        - PORT_FORWARD
        - REMOTE_DEBUG
        - IMPORT
        - LOCK
        - UNLOCK
      example: CREATE
    SecretOverride:
      type: object
      required:
        - id
        - key
        - mount_path
        - scope
        - variable_type
      properties:
        id:
          type: string
          format: uuid
        key:
          type: string
        mount_path:
          type: string
        scope:
          $ref: '#/components/schemas/APIVariableScopeEnum'
        variable_type:
          $ref: '#/components/schemas/APIVariableTypeEnum'
        description:
          type: string
          x-stoplight:
            id: edfpfqj87ezos
          maxLength: 255
          description: optional variable description (255 characters maximum)
          nullable: true
        enable_interpolation_in_file:
          type: boolean
          x-stoplight:
            id: ls2iylkcayehn
          nullable: true
    OrganizationWebhookCreateRequest:
      type: object
      required:
        - kind
        - target_url
        - events
      properties:
        kind:
          $ref: '#/components/schemas/OrganizationWebhookKindEnum'
        target_url:
          type: string
          description: |
            Set the public HTTP or HTTPS endpoint that will receive the specified events.
            The target URL must starts with `http://` or `https://`
        target_secret:
          type: string
          description: |
            Make sure you receive a payload to sign the Qovery request with your secret.
            Qovery will add a HTTP header `Qovery-Signature: <Your Secret>` to every webhook requests sent to your target URL.
        description:
          type: string
        enabled:
          type: boolean
          description: Turn on or off your endpoint.
        events:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationWebhookEventEnum'
        project_names_filter:
          type: array
          description: |
            Specify the project names you want to filter to. 
            This webhook will be triggered only if the event is coming from the specified Project IDs.
            Notes: 1. Wildcard is accepted E.g. `product*`. 2. Name is case insensitive.
          items:
            type: string
        environment_types_filter:
          type: array
          description: |
            Specify the environment modes you want to filter to.
            This webhook will be triggered only if the event is coming from an environment with the specified mode.
          items:
            $ref: '#/components/schemas/EnvironmentModeEnum'
    OrganizationWebhookCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          properties:
            kind:
              $ref: '#/components/schemas/OrganizationWebhookKindEnum'
            target_url:
              type: string
              description: |
                Set the public HTTP or HTTPS endpoint that will receive the specified events.
                The target URL must starts with `http://` or `https://`
            target_secret_set:
              type: boolean
            description:
              type: string
            enabled:
              type: boolean
              description: Turn on or off your endpoint.
            events:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationWebhookEventEnum'
            project_names_filter:
              type: array
              description: |
                Specify the project names you want to filter to. 
                This webhook will be triggered only if the event is coming from the specified Project IDs.
                Notes: 1. Wildcard is accepted E.g. `product*`. 2. Name is case insensitive.
              items:
                type: string
            environment_types_filter:
              type: array
              description: |
                Specify the environment modes you want to filter to.
                This webhook will be triggered only if the event is coming from an environment with the specified mode.
              items:
                $ref: '#/components/schemas/EnvironmentModeEnum'
    OrganizationWebhookEventEnum:
      type: string
      description: |
        Events to subscribe to and send to the `target_url`.
        - `DEPLOYMENT_STARTED` send an event when a deployment is started and going to be executed
        - `DEPLOYMENT_CANCELLED` send an event when a deployment is cancelled
        - `DEPLOYMENT_FAILURE` send an event when a deployment failed
        - `DEPLOYMENT_SUCCESSFUL` send an event when a deployment is successful
      enum:
        - DEPLOYMENT_STARTED
        - DEPLOYMENT_CANCELLED
        - DEPLOYMENT_FAILURE
        - DEPLOYMENT_SUCCESSFUL
    OrganizationWebhookKindEnum:
      type: string
      description: Define the type of the webhook. `SLACK` is a special webhook type to push notifications directly to slack. The `target_url` must be a Slack compatible endpoint.
      enum:
        - STANDARD
        - SLACK
      example: STANDARD
    WebhookEventResponse:
      type: object
      required:
        - id
        - created_at
        - kind
        - matched_event
        - target_url_used
        - request
        - target_response_status_code
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier
        created_at:
          type: string
          format: date-time
          description: Timestamp when the webhook event was created
        kind:
          $ref: '#/components/schemas/OrganizationWebhookKindEnum'
        matched_event:
          $ref: '#/components/schemas/OrganizationWebhookEventEnum'
        target_url_used:
          type: string
          format: uri
          description: The webhook target URL that was invoked
        request:
          type: object
          additionalProperties: true
          description: The request payload sent to the webhook
        target_response_status_code:
          type: integer
          format: int32
          description: HTTP status code returned by the webhook target
        target_response_body:
          type: string
          nullable: true
          description: Response body from the webhook target
    OrganizationWebhookResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          properties:
            kind:
              $ref: '#/components/schemas/OrganizationWebhookKindEnum'
            target_url:
              type: string
              description: |
                Set the public HTTP or HTTPS endpoint that will receive the specified events.
                The target URL must starts with `http://` or `https://`
            target_secret_set:
              type: boolean
            description:
              type: string
            enabled:
              type: boolean
              description: Turn on or off your endpoint.
            events:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationWebhookEventEnum'
            project_names_filter:
              type: array
              description: |
                Specify the project names you want to filter to. 
                This webhook will be triggered only if the event is coming from the specified Project IDs.
                Notes: 1. Wildcard is accepted E.g. `product*`. 2. Name is case insensitive.
              items:
                type: string
            environment_types_filter:
              type: array
              description: |
                Specify the environment modes you want to filter to.
                This webhook will be triggered only if the event is coming from an environment with the specified mode.
              items:
                $ref: '#/components/schemas/EnvironmentModeEnum'
    OrganizationWebhookResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationWebhookResponse'
    WebhookEventResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/WebhookEventResponse'
    GitWebhookStatusResponse:
      type: object
      required:
        - status
        - provider
      properties:
        status:
          type: string
          enum:
            - ACTIVE
            - NOT_CONFIGURED
            - MISCONFIGURED
            - UNABLE_TO_VERIFY
          description: |
            The webhook configuration status:
            - ACTIVE: Webhook is properly configured with all required events
            - NOT_CONFIGURED: No Qovery webhook found on the git rep
            - MISCONFIGURED: Webhook exists but is missing required events
            - UNABLE_TO_VERIFY: Could not check webhook status (auth error, rate limit, etc.)
        provider:
          type: string
          enum:
            - GITHUB
            - GITLAB
            - BITBUCKET
          description: The git provider where the webhook is configured
        missing_events:
          type: array
          items:
            type: string
          description: List of required events that are missing from the webhook configuration (only present when status is MISCONFIGURED)
    OrganizationAnnotationsGroupCreateRequest:
      type: object
      required:
        - name
        - annotations
        - scopes
      properties:
        name:
          type: string
          description: name of the annotations group
        annotations:
          type: array
          items:
            $ref: '#/components/schemas/Annotation'
        scopes:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationAnnotationsGroupScopeEnum'
    OrganizationAnnotationsGroupResponseList:
      type: array
      items:
        $ref: '#/components/schemas/OrganizationAnnotationsGroupResponse'
    OrganizationAnnotationsGroupResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - name
            - annotations
            - scopes
          properties:
            name:
              type: string
            annotations:
              type: array
              items:
                $ref: '#/components/schemas/Annotation'
            scopes:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationAnnotationsGroupScopeEnum'
    OrganizationAnnotationsGroupScopeEnum:
      type: string
      description: Annotations Group Scope
      enum:
        - DEPLOYMENTS
        - STATEFUL_SETS
        - SERVICES
        - INGRESS
        - GATEWAY_API_ROUTES
        - HPA
        - PODS
        - SECRETS
        - JOBS
        - CRON_JOBS
    OrganizationAnnotationsGroupAssociatedItemsResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            type: object
            required:
              - item_id
              - item_name
              - item_type
            properties:
              cluster_id:
                type: string
                format: uuid
              cluster_name:
                type: string
              project_id:
                type: string
                format: uuid
              project_name:
                type: string
              environment_id:
                type: string
                format: uuid
              environment_name:
                type: string
              item_id:
                type: string
                format: uuid
              item_name:
                type: string
              item_type:
                $ref: '#/components/schemas/AnnotationsGroupAssociatedItemType'
    AnnotationsGroupAssociatedItemType:
      type: string
      description: Annotations Group Associated Item Type
      enum:
        - APPLICATION
        - DATABASE
        - CONTAINER
        - LIFECYCLE
        - ENVIRONMENT
        - CLUSTER
        - CRON
    Annotation:
      type: object
      required:
        - key
        - value
      properties:
        key:
          type: string
        value:
          type: string
    OrganizationLabelsGroupCreateRequest:
      type: object
      required:
        - name
        - labels
      properties:
        name:
          type: string
          description: name of the labels group
        labels:
          type: array
          items:
            $ref: '#/components/schemas/Label'
    OrganizationLabelsGroupResponseList:
      type: array
      items:
        $ref: '#/components/schemas/OrganizationLabelsGroupResponse'
      title: ''
    OrganizationLabelsGroupResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - name
            - labels
          properties:
            name:
              type: string
            labels:
              type: array
              items:
                $ref: '#/components/schemas/Label'
      title: ''
    OrganizationLabelsGroupAssociatedItemsResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            type: object
            required:
              - item_id
              - item_name
              - item_type
            properties:
              cluster_id:
                type: string
                format: uuid
              cluster_name:
                type: string
              project_id:
                type: string
                format: uuid
              project_name:
                type: string
              environment_id:
                type: string
                format: uuid
              environment_name:
                type: string
              item_id:
                type: string
                format: uuid
              item_name:
                type: string
              item_type:
                $ref: '#/components/schemas/LabelsGroupAssociatedItemType'
    LabelsGroupAssociatedItemType:
      type: string
      description: Labels Group Associated Item Type
      enum:
        - APPLICATION
        - DATABASE
        - CONTAINER
        - LIFECYCLE
        - ENVIRONMENT
        - CLUSTER
        - CRON
    Label:
      type: object
      required:
        - key
        - value
        - propagate_to_cloud_provider
      properties:
        key:
          type: string
        value:
          type: string
        propagate_to_cloud_provider:
          type: boolean
    PaginationData:
      type: object
      required:
        - page
        - page_size
      properties:
        page:
          type: number
          example: 1
        page_size:
          type: number
          example: 20
    PlanEnum:
      type: string
      description: 'FREE, BUSINESS & PROFESSIONAL are deprecated. 2025 plans are the new plans available.'
      enum:
        - FREE
        - TEAM
        - TEAM_YEARLY
        - ENTERPRISE
        - ENTERPRISE_YEARLY
        - PROFESSIONAL
        - BUSINESS
        - USER_2025
        - TEAM_2025
        - BUSINESS_2025
        - ENTERPRISE_2025
    PortProtocolEnum:
      type: string
      default: HTTP
      enum:
        - HTTP
        - GRPC
        - TCP
        - UDP
    Probe:
      type: object
      nullable: true
      properties:
        type:
          type: object
          properties:
            tcp:
              type: object
              nullable: true
              properties:
                port:
                  type: integer
                host:
                  type: string
                  default: null
                  nullable: true
            http:
              type: object
              nullable: true
              properties:
                path:
                  type: string
                  default: /
                scheme:
                  type: string
                  default: HTTP
                port:
                  type: integer
            exec:
              type: object
              nullable: true
              description: "Execute a command inside the container. The probe succeeds if the command exits with status code 0."
              properties:
                command:
                  type: array
                  description: "Command to execute inside the container, specified as an array of strings. The first element is the executable, followed by its arguments. Example: [\"sh\", \"-c\", \"test -f /tmp/healthy\"]"
                  example: ["sh", "-c", "test -f /tmp/healthy"]
                  items:
                    type: string
                  minItems: 1
            grpc:
              type: object
              nullable: true
              properties:
                service:
                  type: string
                  nullable: true
                  default: null
                port:
                  type: integer
        initial_delay_seconds:
          type: integer
          default: 30
        period_seconds:
          type: integer
          default: 10
        timeout_seconds:
          type: integer
          default: 5
        success_threshold:
          type: integer
          default: 1
        failure_threshold:
          type: integer
          default: 9
    Project:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - name
            - organization
            - associated_environments_count
          properties:
            name:
              type: string
            description:
              type: string
            associated_environments_count:
              type: integer
            organization:
              $ref: '#/components/schemas/ReferenceObject'
    ProjectCurrentCost:
      allOf:
        - $ref: '#/components/schemas/GenericObjectCurrentCost'
        - type: object
          properties:
            environments:
              type: array
              items:
                $ref: '#/components/schemas/GenericObjectCurrentCost'
    ProjectCurrentCostResponseList:
      type: object
      properties:
        projects:
          type: array
          items:
            $ref: '#/components/schemas/ProjectCurrentCost'
    ProjectDeploymentRule:
      allOf:
        - $ref: '#/components/schemas/Base'
        - $ref: '#/components/schemas/ProjectDeploymentRuleRequest'
        - type: object
          properties:
            priority_index:
              type: integer
              description: used to select the first deployment rule to match new created environments
              nullable: false
    ProjectDeploymentRuleRequest:
      type: object
      required:
        - name
        - mode
        - cluster_id
        - timezone
        - start_time
        - stop_time
        - weekdays
        - wildcard
      properties:
        name:
          type: string
          description: name is case insensitive
          example: project-rule
        description:
          type: string
          nullable: true
          example: description project rule
        mode:
          $ref: '#/components/schemas/EnvironmentModeEnum'
        cluster_id:
          type: string
          format: uuid
        auto_stop:
          type: boolean
          default: false
        timezone:
          type: string
          example: UTC
        start_time:
          type: string
          format: date-time
          example: '1970-01-01T08:00:00.000Z'
        stop_time:
          type: string
          format: date-time
          example: '1970-01-01T19:00:00.000Z'
        weekdays:
          type: array
          items:
            $ref: '#/components/schemas/WeekdayEnum'
        wildcard:
          type: string
          default: ''
          description: wildcard pattern composed of '?' and/or '*' used to target new created environments
    ProjectDeploymentRuleResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ProjectDeploymentRule'
    ProjectDeploymentRulesPriorityOrderRequest:
      type: object
      properties:
        project_deployment_rule_ids_in_order:
          type: array
          items:
            type: string
            format: uuid
            description: project deployment rule id
    ProjectRequest:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: name is case insensitive
        description:
          type: string
    ProjectResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Project'
    ProjectStats:
      allOf:
        - $ref: '#/components/schemas/ReferenceObject'
        - $ref: '#/components/schemas/ServiceTotalNumber'
        - $ref: '#/components/schemas/EnvironmentTotalNumber'
    ProjectStatsResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ProjectStats'
    RebootServicesRequest:
      type: object
      properties:
        application_ids:
          type: array
          items:
            type: string
            format: uuid
        database_ids:
          type: array
          items:
            type: string
            format: uuid
        container_ids:
          type: array
          items:
            type: string
            format: uuid
    ReferenceObject:
      type: object
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
    ReferenceObjectStatus:
      allOf:
        - $ref: '#/components/schemas/ReferenceObject'
        - $ref: '#/components/schemas/Status'
    ReferenceObjectStatusResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ReferenceObjectStatus'
    Referral:
      type: object
      properties:
        total_invited:
          type: integer
          example: 2
        invitation_link:
          type: string
          example: 'https://join.qovery.com/xDowkWEl'
    RewardClaim:
      type: object
      properties:
        type:
          type: string
          enum:
            - INVITATION
        code:
          type: string
          example: xDowkWEl
    ScalewayCredentialsRequest:
      type: object
      required:
        - name
        - scaleway_access_key
        - scaleway_secret_key
        - scaleway_project_id
        - scaleway_organization_id
      properties:
        name:
          type: string
        scaleway_access_key:
          type: string
        scaleway_secret_key:
          type: string
        scaleway_project_id:
          type: string
        scaleway_organization_id:
          type: string
    Secret:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - key
            - scope
          properties:
            key:
              type: string
              description: key is case sensitive
            overridden_secret:
              $ref: '#/components/schemas/SecretOverride'
            aliased_secret:
              $ref: '#/components/schemas/SecretAlias'
            scope:
              $ref: '#/components/schemas/APIVariableScopeEnum'
            variable_type:
              $ref: '#/components/schemas/APIVariableTypeEnum'
            service_id:
              type: string
              format: uuid
            service_name:
              type: string
            service_type:
              $ref: '#/components/schemas/LinkedServiceTypeEnum'
            owned_by:
              type: string
              description: 'Entity that created/own the variable (i.e: Qovery, Doppler)'
            description:
              type: string
              x-stoplight:
                id: fznezq37gx9ux
              maxLength: 255
              description: optional variable description (255 characters maximum)
              nullable: true
            enable_interpolation_in_file:
              type: boolean
              x-stoplight:
                id: j13355s39qy21
              nullable: true
    SecretEditRequest:
      type: object
      required:
        - key
      properties:
        value:
          type: string
        key:
          type: string
        description:
          type: string
          x-stoplight:
            id: kpr7b04o3wqkq
          maxLength: 255
          description: optional variable description (255 characters maximum)
          nullable: true
        enable_interpolation_in_file:
          type: boolean
          x-stoplight:
            id: kfzgtx3qmrqsk
          nullable: true
    SecretRequest:
      type: object
      required:
        - key
      properties:
        key:
          type: string
          description: key is case sensitive
        value:
          type: string
          description: value of the secret. Clear value will never be returned
        mount_path:
          type: string
          default: null
          description: should be set for file only. variable mount path make secret a file (where file should be mounted).
          nullable: true
        description:
          type: string
          x-stoplight:
            id: dzjq13ney82de
          maxLength: 255
          description: optional variable description (255 character maximum)
          nullable: true
        enable_interpolation_in_file:
          type: boolean
          x-stoplight:
            id: 5d202hkrquox8
          nullable: true
    SecretResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Secret'
    Service:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - id
          properties:
            type:
              $ref: '#/components/schemas/ServiceTypeEnum'
            name:
              type: string
              description: name of the service
            id:
              type: string
              description: 'uuid of the associated service (application, database, job, gateway...)'
              format: uuid
            deployed_commit_id:
              type: string
              description: Git commit ID corresponding to the deployed version of the application
            last_updated_by:
              type: string
              format: uuid
              description: uuid of the user that made the last update
            consumed_resources_in_percent:
              type: number
              description: global overview of resources consumption of the service
            service_typology:
              type: string
              example: container
              description: 'describes the typology of service (container, postgresl, redis...)'
            service_version:
              type: string
              description: for databases this field exposes the database version
              example: v12
            to_update:
              type: boolean
    ServiceDeploymentStatusEnum:
      type: string
      enum:
        - NEVER_DEPLOYED
        - OUT_OF_DATE
        - UP_TO_DATE
    ServiceTotalNumber:
      type: object
      required:
        - number
      properties:
        service_total_number:
          type: number
    ServiceTypeEnum:
      type: string
      x-stoplight:
        id: d66063cd29913
      description: 'type of the service (application, database, job, ...)'
      enum:
        - APPLICATION
        - DATABASE
        - CONTAINER
        - JOB
        - HELM
        - TERRAFORM
        - ARGOCD_APP
        - AGENTIC_WORKFLOW
    SignUp:
      allOf:
        - $ref: '#/components/schemas/Base'
        - $ref: '#/components/schemas/SignUpRequest'
    SignUpRequest:
      type: object
      required:
        - first_name
        - last_name
        - user_email
        - type_of_use
        - qovery_usage
      properties:
        first_name:
          type: string
        last_name:
          type: string
        user_email:
          type: string
        type_of_use:
          $ref: '#/components/schemas/TypeOfUseEnum'
        qovery_usage:
          type: string
        company_name:
          type: string
          nullable: true
        company_size:
          $ref: '#/components/schemas/CompanySizeEnum'
        user_role:
          type: string
          nullable: true
        qovery_usage_other:
          type: string
          nullable: true
        user_questions:
          type: string
          nullable: true
        current_step:
          type: string
          nullable: true
        dx_auth:
          type: boolean
          nullable: true
        infrastructure_hosting:
          type: string
          nullable: true
    StateEnum:
      type: string
      enum:
        - BUILDING
        - BUILD_ERROR
        - CANCELED
        - CANCELING
        - DELETED
        - DELETE_ERROR
        - DELETE_QUEUED
        - DELETING
        - DEPLOYED
        - DEPLOYING
        - DEPLOYMENT_ERROR
        - DEPLOYMENT_QUEUED
        - EXECUTING
        - QUEUED
        - READY
        - RECAP
        - RESTARTED
        - RESTARTING
        - RESTART_ERROR
        - RESTART_QUEUED
        - STOPPED
        - STOPPING
        - STOP_ERROR
        - STOP_QUEUED
        - UNAVAILABLE
        - WAITING_DELETING
        - WAITING_RESTARTING
        - WAITING_RUNNING
        - WAITING_STOPPING
    ServiceActionEnum:
      type: string
      enum:
        - DEPLOY
        - DELETE
        - RESTART
        - STOP
        - UNKNOWN
    ServiceSubActionEnum:
      type: string
      default: NONE
      enum:
        - NONE
        - TERRAFORM_PLAN_ONLY
        - TERRAFORM_PLAN_AND_APPLY
        - TERRAFORM_DESTROY
        - TERRAFORM_FORCE_UNLOCK_STATE
        - TERRAFORM_MIGRATE_STATE
    ServiceActionStatusEnum:
      type: string
      enum:
        - QUEUED
        - ONGOING
        - SUCCESS
        - ERROR
        - EXECUTING
        - CANCELED
        - CANCELING
        - NEVER
    StageStatusEnum:
      type: string
      x-stoplight:
        id: lv5pyjmui11rn
      enum:
        - QUEUED
        - ONGOING
        - DONE
        - ERROR
        - SKIPPED
        - CANCELED
    ClusterStateEnum:
      type: string
      enum:
        - BUILDING
        - BUILD_ERROR
        - CANCELED
        - CANCELING
        - DELETED
        - DELETE_ERROR
        - DELETE_QUEUED
        - DELETING
        - DEPLOYED
        - DEPLOYING
        - DEPLOYMENT_ERROR
        - DEPLOYMENT_QUEUED
        - DRY_RUN
        - QUEUED
        - READY
        - STOPPED
        - STOPPING
        - STOP_ERROR
        - STOP_QUEUED
        - RESTART_QUEUED
        - RESTARTING
        - RESTARTED
        - RESTART_ERROR
        - INVALID_CREDENTIALS
    Status:
      type: object
      required:
        - id
        - state
        - service_deployment_status
        - status_details
        - is_part_last_deployment
        - deployment_requests_count
        - deployment_request_id
      properties:
        id:
          type: string
          format: uuid
        state:
          $ref: '#/components/schemas/StateEnum'
        service_deployment_status:
          $ref: '#/components/schemas/ServiceDeploymentStatusEnum'
        last_deployment_date:
          type: string
          format: date-time
        is_part_last_deployment:
          type: boolean
        steps:
          $ref: '#/components/schemas/ServiceStepMetrics'
        execution_id:
          type: string
          x-stoplight:
            id: 3o9tz4272s2ct
        status_details:
          $ref: '#/components/schemas/StatusDetails'
        deployment_request_id:
          type: string
          x-stoplight:
            id: bepixrb7tyzme
          format: uuid
          nullable: true
        deployment_requests_count:
          type: integer
          x-stoplight:
            id: crku532vt3v4p
    StatusDetails:
      type: object
      required:
        - action
        - status
        - sub_action
      properties:
        action:
          $ref: '#/components/schemas/ServiceActionEnum'
        status:
          $ref: '#/components/schemas/ServiceActionStatusEnum'
        sub_action:
          $ref: '#/components/schemas/ServiceSubActionEnum'
    Stage:
      type: object
      required:
        - id
        - name
        - description
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          description: stage name
        steps:
          $ref: '#/components/schemas/StageStepMetrics'
        description:
          type: string
          x-stoplight:
            id: gwpra9face692
        status:
          $ref: '#/components/schemas/StageStatusEnum'
    StatusKindEnum:
      type: string
      enum:
        - CANCELED
        - CANCELING
        - DELETED
        - DELETE_ERROR
        - DELETE_IN_PROGRESS
        - DEPLOYED
        - DEPLOYMENT_ERROR
        - DEPLOYMENT_IN_PROGRESS
        - ERROR
        - PAUSED
        - PAUSE_ERROR
        - PAUSE_IN_PROGRESS
        - WAITING
    StorageTypeEnum:
      type: string
      enum:
        - FAST_SSD
    TransferOwnershipRequest:
      type: object
      required:
        - user_id
      properties:
        user_id:
          type: string
          format: uuid
    TypeOfUseEnum:
      type: string
      enum:
        - PERSONAL
        - SCHOOL
        - WORK
    User:
      type: object
      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
        first_name:
          type: string
        last_name:
          type: string
        email:
          type: string
          format: email
        profile_picture_url:
          type: string
          format: uri
    UserResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/User'
    Value:
      type: object
      title: EnvironmentVariableOverrideRequest
      properties:
        value:
          type: string
        description:
          type: string
          x-stoplight:
            id: ygzxe4xek3thk
          maxLength: 255
          description: optional variable description (255 characters maximum)
          nullable: true
        enable_interpolation_in_file:
          type: boolean
          x-stoplight:
            id: ercieri1t6gqn
          nullable: true
    VariableImport:
      type: object
      required:
        - total_variables_to_import
        - successful_imported_variables
      properties:
        total_variables_to_import:
          type: number
        successful_imported_variables:
          type: array
          items:
            type: object
            required:
              - name
              - scope
              - is_secret
            properties:
              name:
                type: string
              value:
                type: string
                description: Optional if the variable is secret
              scope:
                $ref: '#/components/schemas/APIVariableScopeEnum'
              is_secret:
                type: boolean
    VariableImportRequest:
      type: object
      required:
        - vars
        - overwrite
      properties:
        overwrite:
          type: boolean
          default: false
        vars:
          type: array
          items:
            type: object
            required:
              - name
              - value
              - scope
              - is_secret
            properties:
              name:
                type: string
              value:
                type: string
              scope:
                $ref: '#/components/schemas/APIVariableScopeEnum'
              is_secret:
                type: boolean
    Version:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          example: '10.1'
    VersionResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Version'
    WeekdayEnum:
      type: string
      enum:
        - MONDAY
        - TUESDAY
        - WEDNESDAY
        - THURSDAY
        - FRIDAY
        - SATURDAY
        - SUNDAY
      example: MONDAY
    VariableAliasRequest:
      type: object
      required:
        - key
        - alias_scope
        - alias_parent_id
      properties:
        key:
          type: string
          description: the value to be used as Alias of the targeted environment variable.
        alias_scope:
          $ref: '#/components/schemas/APIVariableScopeEnum'
        alias_parent_id:
          type: string
          format: uuid
          description: the id of the variable that is aliased.
        description:
          type: string
          x-stoplight:
            id: e1tqebew6jfe8
          description: optional variable description (255 characters maximum)
          maxLength: 255
          nullable: true
        enable_interpolation_in_file:
          type: boolean
          x-stoplight:
            id: udmfa3jcpde9q
          nullable: true
    VariableOverrideRequest:
      type: object
      required:
        - value
        - override_scope
        - override_parent_id
      properties:
        value:
          type: string
          description: the value to be used as Override of the targeted environment variable.
        override_scope:
          $ref: '#/components/schemas/APIVariableScopeEnum'
        override_parent_id:
          type: string
          format: uuid
          description: the id of the variable that is aliased.
        description:
          type: string
          x-stoplight:
            id: 4u5nndk8qphxp
          maxLength: 255
          description: optional variable description (255 characters maximum)
          nullable: true
        enable_interpolation_in_file:
          type: boolean
          x-stoplight:
            id: smk0wzzy31f5u
          nullable: true
    VariableRequest:
      type: object
      required:
        - key
        - value
        - is_secret
        - variable_scope
        - variable_parent_id
      properties:
        key:
          type: string
          description: the key of the environment variable
        value:
          type: string
          description: the value of the environment variable
        mount_path:
          type: string
          description: the path where the file will be mounted (only if type =file)
          nullable: true
        is_secret:
          type: boolean
          description: 'if true, the variable will be considered as a secret and will not be accessible after its creation. Only your applications will be able to access its value at build and run time.'
        variable_scope:
          $ref: '#/components/schemas/APIVariableScopeEnum'
        variable_parent_id:
          type: string
          format: uuid
          description: 'based on the selected scope, it contains the ID of the service, environment or project where the variable is attached'
        description:
          type: string
          x-stoplight:
            id: 328cipvix8hjo
          description: optional variable description (255 characters maximum)
          maxLength: 255
          nullable: true
        enable_interpolation_in_file:
          type: boolean
          x-stoplight:
            id: docfts24qtko6
          nullable: true
        secret_manager_access_id:
          type: string
          format: uuid
          nullable: true
    VariableEditRequest:
      type: object
      required:
        - key
      properties:
        key:
          type: string
          description: the key of the environment variable
        value:
          type: string
          description: the value of the environment variable
          nullable: true
        description:
          type: string
          x-stoplight:
            id: y471ewdkdpr4r
          maxLength: 255
          description: optional variable description (255 characters maximum)
          nullable: true
        enable_interpolation_in_file:
          type: boolean
          nullable: true
        secret_manager_access_id:
          type: string
          format: uuid
          nullable: true
    VariableResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - key
            - value
            - scope
            - variable_type
            - is_secret
          properties:
            key:
              type: string
            value:
              type: string
              nullable: true
            mount_path:
              type: string
              nullable: true
            overridden_variable:
              $ref: '#/components/schemas/VariableOverride'
            aliased_variable:
              $ref: '#/components/schemas/VariableAlias'
            scope:
              $ref: '#/components/schemas/APIVariableScopeEnum'
            variable_type:
              $ref: '#/components/schemas/APIVariableTypeEnum'
            service_id:
              type: string
              format: uuid
              description: The id of the service referenced by this variable.
            service_name:
              type: string
              description: The name of the service referenced by this variable.
            service_type:
              $ref: '#/components/schemas/LinkedServiceTypeEnum'
            owned_by:
              type: string
              description: 'Entity that created/own the variable (i.e: Qovery, Doppler)'
            is_secret:
              type: boolean
            description:
              type: string
              x-stoplight:
                id: n9u4ex1jj4rxa
            enable_interpolation_in_file:
              type: boolean
              x-stoplight:
                id: 43yxsvszy5k8o
            secret_manager_access_id:
              type: string
              format: uuid
              nullable: true
    VariableResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/VariableResponse'
    VariableAlias:
      type: object
      required:
        - id
        - key
        - mount_path
        - scope
        - variable_type
      properties:
        id:
          type: string
          format: uuid
        key:
          type: string
          example: DATABASE_PSQL_NAME
        value:
          type: string
          nullable: true
        mount_path:
          type: string
        scope:
          $ref: '#/components/schemas/APIVariableScopeEnum'
        variable_type:
          $ref: '#/components/schemas/APIVariableTypeEnum'
    VariableOverride:
      type: object
      required:
        - id
        - key
        - mount_path
        - scope
        - variable_type
      properties:
        id:
          type: string
          format: uuid
          description: The id of the overriden variable
        key:
          type: string
          description: The key of the overriden variable
        value:
          type: string
          nullable: true
          description: The value of the overriden variable
        mount_path:
          type: string
          description: The mounth path of the overriden variable (only if environment variable type is 'file')
        scope:
          $ref: '#/components/schemas/APIVariableScopeEnum'
        variable_type:
          $ref: '#/components/schemas/APIVariableTypeEnum'
    ClusterDeploymentStatusEnum:
      type: string
      enum:
        - NEVER_DEPLOYED
        - OUT_OF_DATE
        - UP_TO_DATE
    ServiceStepMetric:
      type: object
      properties:
        step_name:
          $ref: '#/components/schemas/ServiceStepMetricNameEnum'
        status:
          $ref: '#/components/schemas/StepMetricStatusEnum'
        duration_sec:
          description: The duration of the step in seconds.
          type: integer
    StageStepMetrics:
      type: object
      properties:
        stage_id:
          type: string
          format: uuid
        total_duration_sec:
          description: The total duration in seconds of the stage deployment or null if the deployment is not completed.
          type: integer
          nullable: true
        details:
          description: A list of metrics for deployment steps of the stage.
          type: array
          items:
            $ref: '#/components/schemas/StageStepMetric'
    ServiceStepMetrics:
      type: object
      required:
        - total_duration_sec
        - total_computing_duration_sec
        - details
      properties:
        total_duration_sec:
          description: The total duration in seconds of the service deployment or null if the deployment is not completed.
          type: integer
          nullable: true
        total_computing_duration_sec:
          description: The total duration in seconds of the service deployment without queuing steps.
          type: integer
        details:
          description: A list of metrics for deployment steps of the service.
          type: array
          items:
            $ref: '#/components/schemas/ServiceStepMetric'
    StageStepMetric:
      type: object
      properties:
        stage_id:
          type: string
          format: uuid
        step_name:
          $ref: '#/components/schemas/StageStepMetricNameEnum'
        status:
          $ref: '#/components/schemas/StepMetricStatusEnum'
        duration_sec:
          description: The duration of the step in seconds.
          type: integer
    StageStepMetricNameEnum:
      type: string
      enum:
        - TOTAL
        - QUEUEING
        - PROVISION_BUILDER
      description: |
        The name of the deployment step at the stage level:
        - TOTAL: The total duration of the stage deployment.
        - QUEUEING: The step preceding the actual stage deployment step.
        - PROVISION_BUILDER: The step to provision builders before the actual build.
    StepMetricStatusEnum:
      type: string
      enum:
        - SUCCESS
        - ERROR
        - CANCEL
        - SKIP
      description: |
        The status of completion for the step:
        - SUCCESS: The step completed successfully.
        - ERROR: The step completed with an error.
        - CANCEL: The step was canceled.
        - SKIP: The step was skipped because it was not necessary.
    ServiceStepMetricNameEnum:
      type: string
      enum:
        - REGISTRY_CREATE_REPOSITORY
        - GIT_CLONE
        - BUILD_QUEUEING
        - BUILD
        - DEPLOYMENT_QUEUEING
        - DEPLOYMENT
        - ROUTER_DEPLOYMENT
        - MIRROR_IMAGE
        - EXECUTING
      description: |
        The name of the deployment step at the service level:
        - REGISTRY_CREATE_REPOSITORY: The step to create the repository in the registry.
        - GIT_CLONE: The step to clone the source code repository. 
        - BUILD_QUEUEING: The queuing time preceding the actual building step.
        - BUILD: The step to build the source code.
        - DEPLOYMENT_QUEUEING: The queuing time preceding the actual deployment step.
        - DEPLOYMENT: The step to deploy the service. 
        - ROUTER_DEPLOYMENT: The step to deploy the router. 
        - MIRROR_IMAGE: The step to mirror the image to the private registry.
        - EXECUTING: The step to execute a job or terraform apply.
    OrganizationJobAutoDeployRequest:
      type: object
      properties:
        image_name:
          type: string
          description: the job image name to deploy
        tag:
          type: string
          description: the new tag to deploy
    RegistryMirroringModeEnum:
      type: string
      default: Service
      enum:
        - Cluster
        - Service
      description: |
        Mirroring mode when deploying a service from a container registry
        - Cluster: This is not available on Scaleway. Images within the mirroring registry are organized by "Qovery cluster", meaning that the application deployed on the same cluster are all mirrored on the same repository.
        - Service: Images within the mirroring registry are organized by "Qovery service", each service has its own repository
    ServiceTypeForVariableEnum:
      type: string
      description: type of the service
      enum:
        - APPLICATION
        - CONTAINER
        - JOB
        - HELM
        - TERRAFORM
    JobTypeEnum:
      type: string
      description: type of job
      enum:
        - LIFECYCLE
        - CRON
    LifecycleJobResponse:
      allOf:
        - $ref: '#/components/schemas/BaseJobResponse'
        - type: object
          required:
            - job_type
            - schedule
          properties:
            job_type:
              $ref: '#/components/schemas/JobTypeEnum'
            schedule:
              type: object
              properties:
                on_start:
                  type: object
                  properties:
                    arguments:
                      type: array
                      items:
                        type: string
                    entrypoint:
                      type: string
                      description: optional entrypoint when launching container
                on_stop:
                  type: object
                  properties:
                    arguments:
                      type: array
                      items:
                        type: string
                    entrypoint:
                      type: string
                      description: optional entrypoint when launching container
                on_delete:
                  type: object
                  properties:
                    arguments:
                      type: array
                      items:
                        type: string
                    entrypoint:
                      type: string
                      description: optional entrypoint when launching container
                lifecycle_type:
                  $ref: '#/components/schemas/JobLifecycleTypeEnum'
            annotations_groups:
              $ref: '#/components/schemas/OrganizationAnnotationsGroupResponseList'
            labels_groups:
              $ref: '#/components/schemas/OrganizationLabelsGroupResponseList'
      title: ''
    CronJobResponse:
      allOf:
        - $ref: '#/components/schemas/BaseJobResponse'
        - type: object
          required:
            - job_type
            - schedule
          properties:
            job_type:
              $ref: '#/components/schemas/JobTypeEnum'
            schedule:
              type: object
              required:
                - cronjob
              properties:
                cronjob:
                  type: object
                  required:
                    - timezone
                    - scheduled_at
                  properties:
                    arguments:
                      type: array
                      items:
                        type: string
                    entrypoint:
                      type: string
                      description: optional entrypoint when launching container
                    timezone:
                      type: string
                      description: tz identifier at which the schedule at will be executed
                    scheduled_at:
                      type: string
                      format: cron
                      description: |
                        Can only be set if the event is CRON.  
                        Represent the cron format for the job schedule without seconds.  
                        For example: `* * * * *` represent the cron to launch the job every minute.  
                        See https://crontab.guru/ to WISIWIG interface.  
                        Timezone is UT
            annotations_groups:
              $ref: '#/components/schemas/OrganizationAnnotationsGroupResponseList'
            labels_groups:
              $ref: '#/components/schemas/OrganizationLabelsGroupResponseList'
    BaseJobResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - environment
            - maximum_cpu
            - maximum_memory
            - maximum_gpu
            - name
            - cpu
            - memory
            - gpu
            - auto_preview
            - source
            - healthchecks
            - icon_uri
            - service_type
          properties:
            environment:
              $ref: '#/components/schemas/ReferenceObject'
            maximum_cpu:
              type: integer
              description: Maximum cpu that can be allocated to the job based on organization cluster configuration. unit is millicores (m). 1000m = 1 cpu
              example: 16000
            maximum_memory:
              type: integer
              description: Maximum memory that can be allocated to the job based on organization cluster configuration. unit is MB. 1024 MB = 1GB
              example: 16384
            maximum_gpu:
              type: integer
              description: Maximum memory that can be allocated to the job based on organization cluster configuration. unit is MB. 1024 MB = 1GB
              x-stoplight:
                id: 7o0e6wrgnxgcc
              minimum: 0
              default: 0
              example: 2
            name:
              type: string
              description: name is case insensitive
            description:
              type: string
            cpu:
              type: integer
              description: unit is millicores (m). 1000m = 1 cpu
              example: 1250
            memory:
              type: integer
              description: unit is MB. 1024 MB = 1GB
              example: 1024
            gpu:
              type: integer
              x-stoplight:
                id: 50sj2wtkdypgg
              default: 0
              minimum: 0
              example: 1
            ephemeral_storage_in_gib:
              type: integer
              description: Ephemeral storage of the service in GiB. When omitted, the platform default is used.
              minimum: 0
              example: 10
            cpu_architecture:
              description: CPU architecture this service runs on. If null, the cluster default architecture is used.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CpuArchitectureEnum'
            max_nb_restart:
              type: integer
              minimum: 0
              description: |
                Maximum number of restart allowed before the job is considered as failed
                0 means that no restart/crash of the job is allowed
            max_duration_seconds:
              type: integer
              minimum: 0
              description: |
                Maximum number of seconds allowed for the job to run before killing it and mark it as failed
            auto_preview:
              type: boolean
              description: |
                Indicates if the 'environment preview option' is enabled for this container.  
                If enabled, a preview environment will be automatically cloned when `/preview` endpoint is called.  
                If not specified, it takes the value of the `auto_preview` property from the associated environment.
            port:
              type: integer
              minimum: 1
              description: Port where to run readiness and liveliness probes checks. The port will not be exposed externally
              default: null
              nullable: true
            source:
              nullable: false
              oneOf:
                - required:
                    - image
                  properties:
                    image:
                      $ref: '#/components/schemas/ContainerSource'
                  type: object
                - required:
                    - docker
                  properties:
                    docker:
                      $ref: '#/components/schemas/JobSourceDockerResponse'
                  type: object
            healthchecks:
              $ref: '#/components/schemas/Healthcheck'
            auto_deploy:
              type: boolean
              description: |
                Specify if the job will be automatically updated after receiving a new image tag or a new commit according to the source type. 
                The new image tag shall be communicated via the "Auto Deploy job" endpoint https://api-doc.qovery.com/#tag/Jobs/operation/autoDeployJobEnvironments
            icon_uri:
              type: string
              format: uri
              description: Icon URI representing the job.
              x-stoplight:
                id: p1secr7kxozsd
            service_type:
              $ref: '#/components/schemas/ServiceTypeEnum'
    HelmGitRepositoryRequest:
      type: object
      required:
        - provider
        - owner
        - name
        - url
      properties:
        url:
          type: string
          description: application git repository URL
          example: 'https://github.com/Qovery/simple-node-app'
        branch:
          type: string
          description: |
            Name of the branch to use. This is optional
            If not specified, then the branch used is the `main` or `master` one
          example: feat/text_xxx
        root_path:
          type: string
          default: /
          description: indicates the root path of the application.
        git_token_id:
          type: string
          format: uuid
          description: The git token id on Qovery side
          nullable: true
      title: ''
    HelmKeyValues:
      type: array
      description: 'The input is in json array format: [ [$KEY,$VALUE], [...] ]'
      items:
        type: array
        items:
          type: string
    OrganizationBillingUsageReportRequest:
      type: object
      required:
        - from
        - to
        - report_expiration_in_seconds
      properties:
        from:
          description: The start date of the report
          type: string
          format: date-time
          example: '2020-01-01T00:00:00.000Z'
        to:
          description: The end date of the report
          type: string
          format: date-time
          example: '2020-01-31T23:59:59.000Z'
        report_expiration_in_seconds:
          description: The number of seconds the report will be publicly available
          type: integer
          example: 3600
    OrganizationBillingUsageReportResponse:
      type: object
      properties:
        report_url:
          description: The URL of the report
          type: string
        delete_report_url:
          description: The URL to delete the report. Use this URL to pro-actively delete the report before it expires
          type: string
    DeploymentBuildUsageReportRequest:
      type: object
      x-stoplight:
        id: deployment-build-usage-report-request
      required:
        - execution_id
        - report_expiration_in_seconds
      properties:
        execution_id:
          type: string
          description: The deployment execution ID (format environment_id-version)
          x-stoplight:
            id: build-report-execution-id
        report_expiration_in_seconds:
          type: integer
          description: The number of seconds the report will be publicly available
          example: 86400
          x-stoplight:
            id: build-report-expiration
    DeploymentBuildUsageReportResponse:
      type: object
      x-stoplight:
        id: deployment-build-usage-report-response
      properties:
        report_url:
          type: string
          description: The publicly accessible URL of the Grafana snapshot report showing build pod resource usage
          x-stoplight:
            id: build-report-url
        delete_report_url:
          type: string
          description: The URL to pro-actively delete the report before it expires
          x-stoplight:
            id: build-report-delete-url
    OrganizationAnnotationsGroupEnrichedResponseList:
      title: OrganizationAnnotationsGroupEnrichedResponseList
      x-stoplight:
        id: 2tbiuqncqaqaw
      type: array
      items:
        $ref: '#/components/schemas/OrganizationAnnotationsGroupEnrichedResponse'
    OrganizationAnnotationsGroupEnrichedResponse:
      title: OrganizationAnnotationsGroupEnrichedResponse
      x-stoplight:
        id: edjpmiyq8n5nt
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          x-stoplight:
            id: 2auhw8xgz67rj
          required:
            - name
            - annotations
            - scopes
          properties:
            name:
              type: string
              x-stoplight:
                id: pjys12dlmqw9c
            annotations:
              type: array
              x-stoplight:
                id: 4yn29zdqeb0og
              items:
                $ref: '#/components/schemas/Annotation'
            scopes:
              x-stoplight:
                id: h8qu8e8yp5dh3
              type: array
              items:
                $ref: '#/components/schemas/OrganizationAnnotationsGroupScopeEnum'
            associated_items_count:
              type: integer
              x-stoplight:
                id: q71gum8nqmj8p
    OrganizationLabelsGroupEnrichedResponseList:
      title: OrganizationLabelsGroupEnrichedResponseList
      type: array
      items:
        $ref: '#/components/schemas/OrganizationLabelsGroupEnrichedResponse'
    OrganizationLabelsGroupEnrichedResponse:
      title: OrganizationLabelsGroupEnrichedResponse
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - name
            - labels
          properties:
            name:
              type: string
            labels:
              type: array
              items:
                $ref: '#/components/schemas/Label'
            associated_items_count:
              type: integer
    JobSourceDockerResponse:
      title: JobSourceDockerResponse
      x-stoplight:
        id: s59m8wajnieny
      type: object
      properties:
        git_repository:
          $ref: '#/components/schemas/ApplicationGitRepository'
        dockerfile_path:
          type: string
          x-stoplight:
            id: 72djyl4mjhxny
          description: The path of the associated Dockerfile. Only if you are using build_mode = DOCKER
          nullable: true
        dockerfile_raw:
          type: string
          x-stoplight:
            id: 7s4l0qg285y48
          description: The content of your dockerfile if it is not stored inside your git repository
          nullable: true
        docker_target_build_stage:
          type: string
          x-stoplight:
            id: 8o1faq3bgz92i
          description: The target build stage in the Dockerfile to build
          nullable: true
    HelmSourceRepositoryResponse:
      title: HelmSourceRepositoryResponse
      x-stoplight:
        id: 4u8sg5mvbz502
      type: object
      required:
        - chart_name
        - chart_version
        - repository
      properties:
        chart_name:
          type: string
          x-stoplight:
            id: myqqxis6r2wum
        chart_version:
          type: string
          x-stoplight:
            id: bxqymhkfiwauw
        repository:
          type: object
          x-stoplight:
            id: fr4th9yrro2rh
          required:
            - id
            - name
            - url
          properties:
            id:
              type: string
              x-stoplight:
                id: 4mb2ymh7anud4
              format: uu
            name:
              type: string
              x-stoplight:
                id: bamkqh6qvsenc
            url:
              type: string
              x-stoplight:
                id: qxjxb9crdcsyv
              format: uri
    HelmSourceGitResponse:
      title: HelmSourceGitResponse
      x-stoplight:
        id: lsxautcdafty6
      type: object
      required:
        - git_repository
      properties:
        git_repository:
          $ref: '#/components/schemas/ApplicationGitRepository'
    CpuArchitectureEnum:
      title: CpuArchitectureEnum
      x-stoplight:
        id: jlrd3r03vjzoy
      enum:
        - AMD64
        - ARM64
    ClusterFeatureKarpenterParametersResponse:
      title: ClusterFeatureKarpenterParametersResponse
      x-stoplight:
        id: q33tdlz4ychh5
      type: object
      required:
        - type
        - value
      properties:
        type:
          $ref: '#/components/schemas/ClusterFeatureResponseTypeEnum'
        value:
          $ref: '#/components/schemas/ClusterFeatureKarpenterParameters'
    ClusterFeatureKarpenterParameters:
      title: ClusterFeatureKarpenterParameters
      x-stoplight:
        id: fzprvq41bcge1
      type: object
      required:
        - spot_enabled
        - disk_size_in_gib
        - default_service_architecture
        - qovery_node_pools
      properties:
        spot_enabled:
          type: boolean
          x-stoplight:
            id: fuolcs5q8ncp8
        disk_size_in_gib:
          type: integer
        disk_iops:
          type: integer
          minimum: 3000
          maximum: 16000
          example: 7800
          description: Unit is operation/seconds. The disk IOPS to be used for the node configuration
        disk_throughput:
          type: integer
          x-stoplight:
            id: nwpjqw3bf7px0
          minimum: 125
          maximum: 1000
          example: 255
          description: Unit is in MB/s. The disk throughput to be used for the node configuration
        default_service_architecture:
          $ref: '#/components/schemas/CpuArchitectureEnum'
        qovery_node_pools:
          $ref: '#/components/schemas/KarpenterNodePool'
    JobLifecycleTypeEnum:
      title: JobLifecycleTypeEnum
      x-stoplight:
        id: tz1t23a291l51
      enum:
        - GENERIC
        - TERRAFORM
        - CLOUDFORMATION
    LifecycleTemplateListResponse:
      title: LifecycleTemplateListResponse
      x-stoplight:
        id: xors8ncf4ky35
      type: object
      required:
        - results
      properties:
        results:
          type: array
          x-stoplight:
            id: 7641tagxo4zpi
          items:
            x-stoplight:
              id: uozhvuyd6pdmu
            type: object
            required:
              - id
              - name
              - description
            properties:
              id:
                type: string
                x-stoplight:
                  id: qwkicuwqfvcw4
                format: uuid
              name:
                type: string
                x-stoplight:
                  id: eec0zks0ju8mm
              description:
                type: string
                x-stoplight:
                  id: yg0unyqcvyzcn
    LifecycleTemplateResponse:
      title: LifecycleTemplateResponse
      x-stoplight:
        id: bvzo0blwz03tn
      type: object
      x-internal: false
      required:
        - id
        - name
        - description
        - sourceUrl
        - cloud_provider
        - events
        - max_duration_in_sec
        - resources
        - variables
        - dockerfile
      properties:
        id:
          type: string
          x-stoplight:
            id: glttp2ir2fk7e
          format: uuid
        name:
          type: string
          x-stoplight:
            id: xrjua7zbq9eut
        description:
          type: string
          x-stoplight:
            id: humhra0a53b09
        sourceUrl:
          type: string
          x-stoplight:
            id: 6wwoi4u4iggbr
          format: uri
          description: location of the template
        cloud_provider:
          $ref: '#/components/schemas/CloudProviderEnum'
        events:
          type: array
          x-stoplight:
            id: 5dzxa31dbj27j
          description: lis of pre-defined command for each event
          items:
            x-stoplight:
              id: c2tzn0jhhq3o9
            type: object
            required:
              - name
              - command
            properties:
              name:
                type: string
                x-stoplight:
                  id: gjv4fce8vssmm
              entrypoint:
                type: string
                x-stoplight:
                  id: 0i1rd5p3sk6f5
              command:
                type: array
                x-stoplight:
                  id: gpsvjqfwkwwft
                items:
                  x-stoplight:
                    id: pcxa5np84g1ze
                  type: string
        max_duration_in_sec:
          type: integer
          x-stoplight:
            id: 6uoktngysqxii
          description: |-
            Job max allowed duration in seconds.
            After this allowed time, the job is going to be killed.
        resources:
          type: object
          x-stoplight:
            id: q6p0dfgqw56m2
          required:
            - cpu_milli
            - ram_mib
          properties:
            cpu_milli:
              type: integer
              x-stoplight:
                id: jayn5f1p1jxh2
            ram_mib:
              type: integer
              x-stoplight:
                id: 65ta45mnalu3c
        variables:
          type: array
          x-stoplight:
            id: 6a91s0nhrkccw
          description: Variables to inject at the creation of this lifecycle job
          items:
            x-stoplight:
              id: 0px0di1tv9tu8
            type: object
            required:
              - name
              - description
              - default
              - is_secret
            properties:
              name:
                type: string
                x-stoplight:
                  id: 9k7i4ohmj7uz3
              description:
                type: string
                x-stoplight:
                  id: nz4h3xndjh07g
                description: Short description to explain the purpose of the variable
              default:
                type: string
                x-stoplight:
                  id: p9jb40lqlaj4a
                description: Default value for the variable
              is_secret:
                type: boolean
                x-stoplight:
                  id: v6y3uhp3xivq5
                description: If the variable should be injected as a secret
              file:
                type: object
                x-stoplight:
                  id: 71mpuvnx5g4gm
                description: 'If present, the variable should be a file instead of a raw value'
                required:
                  - path
                properties:
                  path:
                    type: string
                    x-stoplight:
                      id: d7xqu15fk6iat
                  enable_interpolation:
                    type: boolean
                    x-stoplight:
                      id: mbvppc2tt4l2t
                    default: false
                    description: if we should interpolate variable inside the file
        dockerfile:
          type: string
          x-stoplight:
            id: 0xkypu9qkowv3
          description: Dockerfile of the template
    ContainerRegistryAssociatedServicesResponseList:
      title: ContainerRegistryAssociatedServicesResponseList
      x-stoplight:
        id: xn1fsp17ahwfi
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ContainerRegistryAssociatedServicesResponse'
    CheckedCustomDomainsResponse:
      title: CheckedCustomDomainsResponse
      type: object
      required:
        - results
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/CheckedCustomDomainResponse'
    CheckedCustomDomainStatus:
      type: string
      enum:
        - RESOLVES_TO_IP
        - MATCHES_LOAD_BALANCER_HOST
        - DOMAIN_NOT_CONFIGURED
        - DOMAIN_LINKED_TO_WRONG_HOST
        - GENERIC_FAILURE
      description: |
        This enum represents the final status for your domain.
        There are 2 successful statuses:
          * `RESOLVES_TO_IP`: we succeeded to resolve an IP to your domain. This is the successful final status for custom domains where `use_cdn` is `true`
          * `MATCHES_LOAD_BALANCER_HOST`: we succeeded to lookup CNAMEs & found that it matches your cluser Load Balancer host. This is the successful final status for custom domain where `use_cdn` is `false`
          * `DOMAIN_NOT_CONFIGURED`: the domain is not configured, look at the `error_details` field for more information 
          * `DOMAIN_LINKED_TO_WRONG_HOST`: the domain has CNAME(s) that matches a different host than your Load Balancer one
          * `GENERIC_FAILURE`: an error occured when attempting to validate your domain, look at the `error_details` field for more information
    CheckedCustomDomainResponse:
      title: CheckedCustomDomainResponse
      type: object
      required:
        - domain_name
        - status
      properties:
        domain_name:
          type: string
          description: domain name checked
          example: my.domain.tld
        status:
          $ref: '#/components/schemas/CheckedCustomDomainStatus'
        error_details:
          type: string
          nullable: true
          description: optional field containing information about failure check
    ContainerRegistryAssociatedServicesResponse:
      title: ContainerRegistryAssociatedServicesResponse
      x-stoplight:
        id: uxbkfqdj9zyi6
      type: object
      required:
        - project_id
        - project_name
        - environment_id
        - environment_name
        - service_id
        - service_name
        - service_type
      properties:
        project_id:
          type: string
          x-stoplight:
            id: 9jdx3t62nttjz
          format: uuid
        project_name:
          type: string
          x-stoplight:
            id: cjlfx1ucomdv9
        environment_id:
          type: string
          x-stoplight:
            id: gk5r4dcoliuac
          format: uuid
        environment_name:
          type: string
          x-stoplight:
            id: kxry5d624susz
        service_id:
          type: string
          x-stoplight:
            id: kmouxjf3vbtjo
          format: uuid
        service_name:
          type: string
          x-stoplight:
            id: ga0yqhtmi4nl6
        service_type:
          $ref: '#/components/schemas/ContainerRegistryAssociatedServiceType'
    ContainerRegistryAssociatedServiceType:
      title: ContainerRegistryAssociatedServiceType
      x-stoplight:
        id: dif8pj1ys444y
      enum:
        - CONTAINER
        - LIFECYCLE
        - CRON
    ArgocdAssociatedServicesResponseList:
      title: ArgocdAssociatedServicesResponseList
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ArgocdAssociatedServicesResponse'
    ArgocdAssociatedServicesResponse:
      title: ArgocdAssociatedServicesResponse
      type: object
      required:
        - project_id
        - project_name
        - environment_id
        - environment_name
        - service_id
        - service_name
        - service_type
      properties:
        project_id:
          type: string
          format: uuid
        project_name:
          type: string
        environment_id:
          type: string
          format: uuid
        environment_name:
          type: string
        service_id:
          type: string
          format: uuid
        service_name:
          type: string
        service_type:
          $ref: '#/components/schemas/ArgocdAssociatedServiceType'
    ArgocdAssociatedServiceType:
      title: ArgocdAssociatedServiceType
      type: string
      enum:
        - ARGOCD_APP
    HelmRepositoryAssociatedServiceType:
      title: HelmRepositoryAssociatedServiceType
      x-stoplight:
        id: 7afohg0qwqoht
      enum:
        - HELM
    HelmRepositoryAssociatedServicesResponse:
      title: HelmRepositoryAssociatedServicesResponse
      x-stoplight:
        id: een4pa4di1fir
      type: object
      required:
        - project_id
        - project_name
        - environment_id
        - environment_name
        - service_id
        - service_name
        - service_type
      properties:
        project_id:
          type: string
          x-stoplight:
            id: 5p4tj302re42n
          format: uuid
        project_name:
          type: string
          x-stoplight:
            id: j9o1qaceqfiu8
        environment_id:
          type: string
          x-stoplight:
            id: oe1zp7vzdukve
          format: uuid
        environment_name:
          type: string
          x-stoplight:
            id: n2usi4loyu8kn
        service_id:
          type: string
          x-stoplight:
            id: 9nnymt6uz7zdq
          format: uuid
        service_name:
          type: string
          x-stoplight:
            id: rb0g9ev15frmu
        service_type:
          $ref: '#/components/schemas/HelmRepositoryAssociatedServiceType'
    HelmRepositoryAssociatedServicesResponseList:
      title: HelmRepositoryAssociatedServicesResponseList
      x-stoplight:
        id: lyrvkahz5uw6s
      type: object
      properties:
        results:
          type: array
          x-stoplight:
            id: 00sn35cw5lnb4
          items:
            $ref: '#/components/schemas/HelmRepositoryAssociatedServicesResponse'
    KubernetesServiceResponseList:
      title: KubernetesServiceResponseList
      x-stoplight:
        id: 91mgvynk8ostk
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/KubernetesService'
    KubernetesService:
      title: KubernetesService
      x-stoplight:
        id: e93yew0imhkxz
      type: object
      required:
        - metadata
        - service_spec
      properties:
        metadata:
          $ref: '#/components/schemas/KubernetesMetadata'
        service_spec:
          $ref: '#/components/schemas/KubernetesServiceSpec'
    KubernetesMetadata:
      title: KubernetesMetadata
      x-stoplight:
        id: ajq08tq9ym2vh
      type: object
      properties:
        name:
          type: string
          x-stoplight:
            id: n0gt58vsemvlv
    KubernetesServiceSpec:
      title: KubernetesServiceSpec
      x-stoplight:
        id: qecw98tpxage0
      type: object
      properties:
        type:
          type: string
          x-stoplight:
            id: 5bi9ckakwdfod
        ports:
          type: array
          x-stoplight:
            id: xaa6ow6ugihju
          items:
            $ref: '#/components/schemas/KubernetesServicePort'
        selectors:
          type: array
          x-stoplight:
            id: snld7nhiy088w
          items:
            $ref: '#/components/schemas/KubernetesSelector'
    KubernetesServicePort:
      title: KubernetesServicePort
      x-stoplight:
        id: wgdmnyglzosd6
      type: object
      required:
        - port
      properties:
        name:
          type: string
          x-stoplight:
            id: tusjgcztulh9m
        port:
          type: integer
          x-stoplight:
            id: iloqun4s628bz
    KubernetesSelector:
      title: KubernetesSelector
      x-stoplight:
        id: 4i1ztgngi75vs
      type: object
      required:
        - key
        - value
      properties:
        key:
          type: string
          x-stoplight:
            id: 1zcgvzdknhr8n
        value:
          type: string
          x-stoplight:
            id: 6zpc45u4laog4
    ClusterInstanceGpuInfo:
      title: ClusterInstanceGpuInfo
      x-stoplight:
        id: dfdp50z2mr1cs
      type: object
      properties:
        count:
          type: integer
          x-stoplight:
            id: hbl5jxfcth747
          description: The number of GPUs included in the instance.
        name:
          type: string
          x-stoplight:
            id: pregmt5l22afi
          description: The model name of the GPU.
        manufacturer:
          type: string
          x-stoplight:
            id: a0e1rvah0xfms
          description: The manufacturer of the GPUs in the instance.
        memory_in_mib:
          type: string
          x-stoplight:
            id: 20yjj7h8sjtdu
          description: The total GPU memory available.
    ClusterInstanceAttributes:
      title: ClusterInstanceAttributes
      x-stoplight:
        id: nxbpo7v2ecz72
      type: object
      properties:
        instance_category:
          type: string
          x-stoplight:
            id: epo9cqt13zoqp
          description: The category of the instance.
        instance_generation:
          type: integer
          x-stoplight:
            id: 274hjvkvlycxp
          description: The generation of the instance.
        instance_family:
          type: string
          x-stoplight:
            id: ixmy1d0nokjh5
          description: The family or series of the instance.
        instance_size:
          type: string
          x-stoplight:
            id: dmnfjmvowgd0a
          description: Specifies the size of the instance within its family.
        meets_resource_reqs:
          type: boolean
          x-stoplight:
            id: 8gytpdzm751we
          description: The instance has sufficient resources to be chosen as a standalone instance in a cluster.
    KarpenterNodePool:
      title: KarpenterNodePool
      x-stoplight:
        id: q8vks57rql8x1
      type: object
      required:
        - requirements
      properties:
        requirements:
          x-stoplight:
            id: pkowctfxv7q77
          type: array
          items:
            $ref: '#/components/schemas/KarpenterNodePoolRequirement'
        stable_override:
          $ref: '#/components/schemas/KarpenterStableNodePoolOverride'
        default_override:
          $ref: '#/components/schemas/KarpenterDefaultNodePoolOverride'
        gpu_override:
          $ref: '#/components/schemas/KarpenterGpuNodePoolOverride'
        cronjob_override:
          $ref: '#/components/schemas/KarpenterCronjobNodePoolOverride'
    KarpenterNodePoolRequirementKey:
      title: KarpenterNodePoolRequirementKey
      x-stoplight:
        id: eancn656efy06
      enum:
        - InstanceFamily
        - InstanceSize
        - Arch
        - SkuFamily
        - SkuVersion
    KarpenterNodePoolRequirementOperator:
      title: KarpenterNodePoolRequirementOperator
      x-stoplight:
        id: wkzlvifywpa0t
      enum:
        - In
    KarpenterNodePoolRequirement:
      title: KarpenterNodePoolRequirement
      x-stoplight:
        id: 4ebed64emvn09
      type: object
      required:
        - key
        - operator
        - values
      properties:
        key:
          $ref: '#/components/schemas/KarpenterNodePoolRequirementKey'
        operator:
          $ref: '#/components/schemas/KarpenterNodePoolRequirementOperator'
        values:
          type: array
          x-stoplight:
            id: qf036o7tch5ed
          items:
            x-stoplight:
              id: 02kz5mierypik
            type: string
    KarpenterStableNodePoolOverride:
      title: KarpenterStableNodePoolOverride
      type: object
      properties:
        consolidation:
          $ref: '#/components/schemas/KarpenterNodePoolConsolidation'
        limits:
          $ref: '#/components/schemas/KarpenterNodePoolLimits'
        consolidate_after:
          type: string
          description: 'Time to wait before consolidating empty or underutilized nodes (e.g., 1m, 10m, 1h). Maximum: 24h'
          example: '30s'
          pattern: '^\d+(s|m|h)$'
    KarpenterGpuNodePoolOverride:
      title: KarpenterGpuNodePoolOverride
      x-stoplight:
        id: fi2s446xdrdu1
      type: object
      properties:
        consolidation:
          $ref: '#/components/schemas/KarpenterNodePoolConsolidation'
        limits:
          $ref: '#/components/schemas/KarpenterNodePoolLimits'
        requirements:
          type: array
          x-stoplight:
            id: 38pdri17ozql9
          items:
            $ref: '#/components/schemas/KarpenterNodePoolRequirement'
        disk_size_in_gib:
          type: integer
          x-stoplight:
            id: xq5ycmme7o025
          minimum: 0
          default: 100
          example: 150
        disk_iops:
          type: integer
          x-stoplight:
            id: gpu1d1skiops
          minimum: 3000
          maximum: 16000
          example: 7800
          description: Unit is operation/seconds. The disk IOPS to be used for the GPU node pool configuration
        disk_throughput:
          type: integer
          x-stoplight:
            id: gpu1d1skthr
          minimum: 125
          maximum: 1000
          example: 255
          description: Unit is in MB/s. The disk throughput to be used for the GPU node pool configuration
        spot_enabled:
          type: boolean
          x-stoplight:
            id: rjzxs0e2rn0ij
          default: false
        consolidate_after:
          type: string
          description: 'Time to wait before consolidating empty or underutilized nodes (e.g., 1m, 10m, 1h). Maximum: 24h'
          example: '30s'
          pattern: '^\d+(s|m|h)$'
    KarpenterCronjobNodePoolOverride:
      title: KarpenterCronjobNodePoolOverride
      type: object
      properties:
        consolidation:
          $ref: '#/components/schemas/KarpenterNodePoolConsolidation'
        limits:
          $ref: '#/components/schemas/KarpenterNodePoolLimits'
        consolidate_after:
          type: string
          description: 'Time to wait before consolidating empty or underutilized nodes (e.g., 1m, 10m, 1h). Maximum: 24h'
          example: '30s'
          pattern: '^\d+(s|m|h)$'
    KarpenterDefaultNodePoolOverride:
      title: KarpenterDefaultNodePoolOverride
      type: object
      properties:
        limits:
          $ref: '#/components/schemas/KarpenterNodePoolLimits'
        consolidate_after:
          type: string
          description: 'Time to wait before consolidating empty or underutilized nodes (e.g., 1m, 10m, 1h). Maximum: 24h'
          example: '1m'
          pattern: '^\d+(s|m|h)$'
    KarpenterNodePoolConsolidation:
      title: KarpenterNodePoolConsolidation
      type: object
      required:
        - enabled
        - days
        - start_time
        - duration
      properties:
        enabled:
          type: boolean
          default: false
          nullable: false
        days:
          type: array
          nullable: false
          items:
            $ref: '#/components/schemas/WeekdayEnum'
        start_time:
          description: |
            The start date of the consolidation.
            The format should follow ISO-8601 convention: "PThh:mm"
          type: string
          example: 'PT22:30'
          nullable: false
        duration:
          description: |
            The duration during the consolidation will be active.
            The format should follow ISO-8601 convention: "PThhHmmM"
          type: string
          example: PT2H45M
          nullable: false
    EnvironmentDeploymentStatusEnum:
      title: EnvironmentDeploymentStatusEnum
      x-stoplight:
        id: sbw3iw6yteyba
      enum:
        - NEVER_DEPLOYED
        - UP_TO_DATE
        - OUT_OF_DATE
    KarpenterNodePoolLimits:
      title: KarpenterNodePoolLimits
      type: object
      required:
        - enabled
        - max_cpu_in_vcpu
        - max_memory_in_gibibytes
        - max_gpu
      properties:
        enabled:
          type: boolean
          default: false
          nullable: false
        max_cpu_in_vcpu:
          type: integer
          description: 'CPU limit that will be applied for the node pool (in vCPU unit: 1 vCPU = 1000 millicores)'
        max_memory_in_gibibytes:
          type: integer
          description: 'Memory limit that will be applied for the node pool (in Gibibytes unit: 1Gi = 1024 mebibytes)'
        max_gpu:
          type: integer
          x-stoplight:
            id: fn3k34ck5abe4
          default: 0
          example: 10
          minimum: 0
          description: GPU limit that will be applied for the node pool
    ClusterLockRequest:
      title: ClusterLockRequest
      x-stoplight:
        id: d0zigj2okjq2u
      type: object
      required:
        - reason
      properties:
        reason:
          type: string
          x-stoplight:
            id: r7sy48ofln6xf
        ttl_in_days:
          type: integer
          x-stoplight:
            id: m7spawrlr0mii
    ClusterLock:
      title: ClusterLock
      x-stoplight:
        id: cfl44h3tyj8p9
      type: object
      required:
        - reason
        - cluster_id
        - locked_at
        - owner_name
      properties:
        reason:
          type: string
          x-stoplight:
            id: 24t21mhr6yvb8
        ttl_in_days:
          type: integer
          x-stoplight:
            id: hkgmap89j628o
        cluster_id:
          type: string
          x-stoplight:
            id: uvcmzekexkogh
          format: uuid
        locked_at:
          type: string
          format: date-time
          x-stoplight:
            id: aqpw2xs6xlw6b
        owner_name:
          type: string
          x-stoplight:
            id: 92n5bq5he0utp
    ClusterLockList:
      title: ClusterLockList
      x-stoplight:
        id: 87swuavftz0gk
      type: object
      properties:
        results:
          type: array
          x-stoplight:
            id: xpi2ooy1zclay
          items:
            $ref: '#/components/schemas/ClusterLock'
    EnvDeploymentStatus:
      title: EnvDeploymentStatus
      x-stoplight:
        id: 3t1ibpp18xhmy
      type: object
      properties:
        deployment_request_id:
          type: string
          x-stoplight:
            id: moe7npwga4pwm
          format: uuid
        environment_id:
          type: string
          x-stoplight:
            id: t6sa9u90dayva
          format: uuid
        status:
          $ref: '#/components/schemas/StateEnum'
    DeploymentHistoryActionStatus:
      title: DeploymentHistoryActionStatus
      x-stoplight:
        id: qppeluzk1hor1
      enum:
        - QUEUED
        - ONGOING
        - SUCCESS
        - ERROR
        - CANCELED
        - CANCELING
        - NEVER
    QueuedDeploymentRequestWithStages:
      title: QueuedDeploymentRequestWithStages
      x-stoplight:
        id: ididqvn23k30w
      type: object
      required:
        - identifier
        - auditing_data
        - trigger_action
        - stages
      properties:
        identifier:
          x-stoplight:
            id: 0knkd1kmqqc02
          type: object
          required:
            - deployment_request_id
            - environment_id
          properties:
            deployment_request_id:
              type: string
              x-stoplight:
                id: p9kpe6jw19qcu
              format: uuid
            environment_id:
              type: string
              x-stoplight:
                id: vrz81gxwvya9i
              format: uuid
        auditing_data:
          type: object
          x-stoplight:
            id: 0npwbfsta4xai
          required:
            - triggered_by
          properties:
            triggered_by:
              type: string
              x-stoplight:
                id: hfi1kibghpsc3
            origin:
              $ref: '#/components/schemas/OrganizationEventOrigin'
        trigger_action:
          $ref: '#/components/schemas/DeploymentHistoryTriggerAction'
        stages:
          type: array
          x-stoplight:
            id: snkercfc1t8iq
          items:
            x-stoplight:
              id: ym6jl6374zowd
            type: object
            required:
              - name
              - status
              - services
            properties:
              name:
                type: string
                x-stoplight:
                  id: 7p40i9fzfddii
              status:
                $ref: '#/components/schemas/StageStatusEnum'
              services:
                type: array
                x-stoplight:
                  id: 8cnjdpbn1xllp
                items:
                  x-stoplight:
                    id: yn2f0fy77v6gj
                  type: object
                  required:
                    - identifier
                    - status
                  properties:
                    identifier:
                      type: object
                      x-stoplight:
                        id: 2qiq6p8loxy0n
                      required:
                        - service_id
                        - service_type
                        - name
                      properties:
                        service_id:
                          type: string
                          x-stoplight:
                            id: ixyztl7bo1e7r
                          format: uuid
                        service_type:
                          $ref: '#/components/schemas/ServiceTypeEnum'
                        name:
                          type: string
                          x-stoplight:
                            id: rqj252xn7e17p
                    status:
                      $ref: '#/components/schemas/StageStatusEnum'
                    icon_uri:
                      type: string
                      x-stoplight:
                        id: vr9mfika0841x
                    details:
                      x-stoplight:
                        id: 8pjqibbjgziqn
                      oneOf:
                        - description: JobDetails
                          x-stoplight:
                            id: ibi93dbff8m63
                          type: object
                          required:
                            - job_type
                          properties:
                            job_type:
                              x-stoplight:
                                id: tg4bw75mf4084
                              enum:
                                - CRON
                                - LIFECYCLE
                      type: object
    QueuedDeploymentRequestForService:
      title: QueuedDeploymentRequestForService
      x-stoplight:
        id: 6tjmdk549eeaq
      type: object
      required:
        - identifier
        - auditing_data
        - status_details
        - icon_uri
      properties:
        identifier:
          type: object
          required:
            - deployment_request_id
            - service_id
            - service_type
            - name
          properties:
            deployment_request_id:
              type: string
              format: uuid
            service_id:
              type: string
              x-stoplight:
                id: 0l33zc2pd2ie0
              format: uuid
            service_type:
              $ref: '#/components/schemas/ServiceTypeEnum'
            name:
              type: string
              x-stoplight:
                id: 476yle3ji5f9q
        auditing_data:
          type: object
          required:
            - triggered_by
          properties:
            triggered_by:
              type: string
            origin:
              $ref: '#/components/schemas/OrganizationEventOrigin'
        status_details:
          $ref: '#/components/schemas/StatusDetails'
        icon_uri:
          type: string
          x-stoplight:
            id: h69hlvf3roanf
    ServiceLightResponse:
      title: ServiceLightResponse
      x-stoplight:
        id: tg1rwcmait89l
      type: object
      required:
        - id
        - name
        - description
        - icon_uri
        - service_type
        - project_id
        - project_name
        - environment_id
        - environment_name
        - cluster_id
      properties:
        id:
          type: string
          x-stoplight:
            id: kusnde41nhbq0
          format: uuid
        name:
          type: string
          x-stoplight:
            id: uxr40wquz4uo4
        description:
          type: string
          x-stoplight:
            id: 71c9yrajgrd9f
        icon_uri:
          type: string
          format: uri
          x-stoplight:
            id: k6zs0jdg7k95f
        service_type:
          $ref: '#/components/schemas/ServiceTypeEnum'
        project_id:
          type: string
          x-stoplight:
            id: 6j6xz0qq65mbs
          format: uuid
        project_name:
          type: string
          x-stoplight:
            id: jfl0pof91101b
        environment_id:
          type: string
          x-stoplight:
            id: cs79bi0ic3r18
          format: uuid
        environment_name:
          type: string
          x-stoplight:
            id: s8c6hmto9njzg
        cluster_id:
          type: string
          x-stoplight:
            id: hg9qpxe5z7
          format: uuid
        job_type:
          x-stoplight:
            id: jwtmqb1fq5a6m
          enum:
            - CRON
            - LIFECYCLE
    OrganizationEnvironmentResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - name
            - organization
            - project
            - mode
          properties:
            name:
              type: string
              description: name is case insensitive
            organization:
              $ref: '#/components/schemas/ReferenceObject'
            project:
              $ref: '#/components/schemas/ReferenceObject'
            mode:
              $ref: '#/components/schemas/EnvironmentModeEnum'
    ClusterMetricsResponse:
      title: ClusterMetricsResponse
      x-stoplight:
        id: 7z04ha035fh6s
      type: object
      properties:
        metrics:
          type: string
          x-stoplight:
            id: nyp9g89joz1wv
    MetricsParameters:
      title: MetricsParameters
      x-stoplight:
        id: 25tfm065x6c64
      type: object
      properties:
        enabled:
          type: boolean
          x-stoplight:
            id: 0y1427jsrtwmg
        configuration:
          x-stoplight:
            id: 1e9r2at0nxziv
          oneOf:
            - $ref: '#/components/schemas/MetricsConfigurationManagedByQovery'
          discriminator:
            propertyName: kind
            mapping:
              MANAGED_BY_QOVERY: '#/components/schemas/MetricsConfigurationManagedByQovery'
    MetricsConfigurationManagedByQovery:
      title: MetricsConfigurationManagedByQovery
      x-stoplight:
        id: d6oy3aiodk659
      type: object
      properties:
        kind:
          x-stoplight:
            id: i8z3rzufjt5uk
          enum:
            - MANAGED_BY_QOVERY
        resource_profile:
          $ref: '#/components/schemas/ObservabilityResourceProfile'
        cloud_watch_export_config:
          $ref: '#/components/schemas/CloudWatchExportConfig'
        high_availability:
          type: boolean
          x-stoplight:
            id: zs2zhdd1p5e6q
        internal_network_monitoring:
          $ref: '#/components/schemas/InternalNetworkMonitoring'
        alerting:
          $ref: '#/components/schemas/AlertingConfig'
    InfrastructureOutputs:
      type: object
      required:
        - kind
      discriminator:
        propertyName: kind
        mapping:
          AKS: '#/components/schemas/AksInfrastructureOutputs'
          EKS: '#/components/schemas/EksInfrastructureOutputs'
          GKE: '#/components/schemas/GkeInfrastructureOutputs'
          SCW_KAPSULE: '#/components/schemas/KapsuleInfrastructureOutputs'
      oneOf:
        - $ref: '#/components/schemas/AksInfrastructureOutputs'
        - $ref: '#/components/schemas/EksInfrastructureOutputs'
        - $ref: '#/components/schemas/GkeInfrastructureOutputs'
        - $ref: '#/components/schemas/KapsuleInfrastructureOutputs'
    AksInfrastructureOutputs:
      type: object
      required:
        - kind
        - cluster_name
        - cluster_oidc_issuer
      properties:
        kind:
          enum:
            - AKS
        cluster_name:
          type: string
        cluster_oidc_issuer:
          type: string
    EksInfrastructureOutputs:
      type: object
      required:
        - kind
        - cluster_name
        - cluster_arn
        - cluster_oidc_issuer
        - vpc_id
      properties:
        kind:
          enum:
            - EKS
        cluster_name:
          type: string
        cluster_arn:
          type: string
        cluster_oidc_issuer:
          type: string
        vpc_id:
          type: string
        external_secrets_automatic_authentication:
          type: object
          nullable: true
          required:
            - eks_role_arn
          properties:
            eks_role_arn:
              type: string
              description: ARN of the IAM role used by External Secrets Operator on EKS
    GkeInfrastructureOutputs:
      type: object
      required:
        - kind
        - cluster_name
        - cluster_self_link
      properties:
        kind:
          enum:
            - GKE
        cluster_name:
          type: string
        cluster_self_link:
          type: string
        external_secrets_automatic_authentication:
          type: object
          nullable: true
          required:
            - gke_service_account
          properties:
            gke_service_account:
              type: string
              description: GCP service account email used by External Secrets Operator on GKE
    KapsuleInfrastructureOutputs:
      type: object
      required:
        - kind
        - cluster_name
      properties:
        kind:
          enum:
            - SCW_KAPSULE
        cluster_name:
          type: string
    IngressDeploymentStatusResponse:
      title: IngressDeploymentStatusResponse
      x-stoplight:
        id: uebtvs1ouszf2
      type: object
      properties:
        routerId:
          type: string
          x-stoplight:
            id: e507c0na5om2i
          format: uuid
        status:
          $ref: '#/components/schemas/StateEnum'
    GcpStaticClusterCredentials:
      title: GcpStaticClusterCredentials
      x-stoplight:
        id: qtvaepejqookw
      type: object
      required:
        - id
        - name
        - object_type
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        object_type:
          enum:
            - GCP
    GcpWorkloadIdentityFederationClusterCredentials:
      title: GcpWorkloadIdentityFederationClusterCredentials
      type: object
      required:
        - id
        - name
        - object_type
        - project_id
        - service_account_email
        - workload_identity_provider_resource
        - token_lifetime_seconds
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        object_type:
          enum:
            - GCP_WORKLOAD_IDENTITY_FEDERATION
        project_id:
          type: string
        service_account_email:
          type: string
        workload_identity_provider_resource:
          type: string
        token_lifetime_seconds:
          type: integer
          format: int32
          example: 14400
    AzureStaticClusterCredentials:
      title: AzureStaticClusterCredentials
      x-stoplight:
        id: wo7v4e4c0jlfu
      type: object
      required:
        - id
        - name
        - azure_subscription_id
        - azure_tenant_id
        - object_type
        - azure_application_id
        - azure_application_object_id
      properties:
        id:
          type: string
          x-stoplight:
            id: 7qy00mrnhmclv
          format: uuid
        name:
          type: string
          x-stoplight:
            id: f5c1wc467emz3
        azure_subscription_id:
          type: string
          x-stoplight:
            id: x0s5zbj6l1yx0
        azure_tenant_id:
          type: string
          x-stoplight:
            id: ygjwz6uqfexsc
        object_type:
          x-stoplight:
            id: 8oodrxjznyahm
          enum:
            - AZURE
        azure_application_id:
          type: string
          x-stoplight:
            id: wc0e8cqceyopu
        azure_application_object_id:
          type: string
          x-stoplight:
            id: q20e71qkfsk1k
    AzureCredentialsRequest:
      title: AzureCredentialsRequest
      x-stoplight:
        id: gjzlt9ldnn7ip
      type: object
      required:
        - name
        - azure_subscription_id
        - azure_tenant_id
      properties:
        name:
          type: string
          x-stoplight:
            id: ywkpnhxrygsf4
        azure_subscription_id:
          type: string
          x-stoplight:
            id: 4py3o45wxewvh
        azure_tenant_id:
          type: string
          x-stoplight:
            id: u776tz269mjb0
    TerraformEngineEnum:
      enum:
        - TERRAFORM
        - OPEN_TOFU
    TerraformRequest:
      title: TerraformRequest
      x-stoplight:
        id: 7ujl5rx7sd38b
      type: object
      required:
        - name
        - description
        - auto_deploy_config
        - terraform_files_source
        - terraform_variables_source
        - backend
        - engine
        - provider_version
        - job_resources
      properties:
        name:
          type: string
          x-stoplight:
            id: 6mlmgpyzwe46t
        description:
          type: string
          x-stoplight:
            id: ltvpnbhjz1oho
        auto_deploy_config:
          $ref: "#/components/schemas/TerraformAutoDeployConfig"
        terraform_files_source:
          oneOf:
            - type: object
              properties:
                git_repository:
                  $ref: '#/components/schemas/TerraformGitRepositoryRequest'
        terraform_variables_source:
          $ref: '#/components/schemas/TerraformVariablesSourceRequest'
        backend:
          $ref: '#/components/schemas/TerraformBackend'
        engine:
          $ref: '#/components/schemas/TerraformEngineEnum'
        provider_version:
          $ref: '#/components/schemas/TerraformProviderVersion'
        timeout_sec:
          type: integer
          x-stoplight:
            id: 3e5ngsw45atsd
        icon_uri:
          type: string
          x-stoplight:
            id: nem7zoh97kyzc
          format: uri
        job_resources:
          $ref: '#/components/schemas/TerraformRequestJobResources'
        use_cluster_credentials:
          type: boolean
          x-stoplight:
            id: w9ncq63nukwe0
        action_extra_arguments:
          type: object
          x-stoplight:
            id: guh2uio7aztct
          description: |-
            The key represent the action command name i.e: "plan"
            The value represent the extra arguments to pass to this command

            i.e: {"apply", ["-lock=false"]} is going to prepend `-lock=false` to terraform apply commands
          additionalProperties:
            x-stoplight:
              id: 99o28tw5chbb1
            type: array
            items:
              x-stoplight:
                id: c6p960bh9qcu4
              type: string
        dockerfile_fragment:
          nullable: true
          description: |
            Custom Dockerfile fragment to inject during build. Optional field.
            When null, no custom fragment is injected.
          oneOf:
            - $ref: '#/components/schemas/DockerfileFragmentFile'
            - $ref: '#/components/schemas/DockerfileFragmentInline'
          discriminator:
            propertyName: type
            mapping:
              file: '#/components/schemas/DockerfileFragmentFile'
              inline: '#/components/schemas/DockerfileFragmentInline'
        blueprint_id:
          type: string
          format: uuid
          nullable: true
          description: |
            The blueprint ID the service has been created from
    TerraformResourceResponse:
      type: object
      title: Terraform Resource Response
      description: A Terraform resource from a deployment execution
      required:
        - id
        - resource_type
        - name
        - address
        - provider
        - mode
        - attributes
        - extracted_at
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for this resource record
          example: 550e8400-e29b-41d4-a716-446655440000
        resource_type:
          type: string
          description: 'Type of the Terraform resource (e.g., aws_instance, aws_s3_bucket)'
          example: aws_instance
        name:
          type: string
          description: Name of the resource as defined in Terraform configuration
          example: web_server
        address:
          type: string
          description: 'Full address of the resource (e.g., aws_instance.web_server)'
          example: aws_instance.web_server
        provider:
          type: string
          description: 'Terraform provider name (e.g., aws, google, azurerm)'
          example: aws
        mode:
          type: string
          enum:
            - managed
            - data
          description: Resource mode (managed or data source)
          example: managed
        attributes:
          type: object
          description: All resource attributes as key-value pairs
          additionalProperties: true
          example:
            instance_id: i-1234567890abcdef0
            instance_type: t2.micro
            public_ip: 10.0.0.1
            private_ip: 172.31.0.1
        extracted_at:
          type: string
          format: date-time
          description: Timestamp when the resource was extracted from Terraform state
          example: '2023-01-15T10:30:00Z'
    TerraformResourcesResponse:
      type: object
      title: Terraform Resources List Response
      description: List of Terraform resources from the latest deployment
      required:
        - results
      properties:
        results:
          type: array
          description: Array of Terraform resources
          items:
            $ref: '#/components/schemas/TerraformResourceResponse'
    TerraformResourcesRequest:
      type: object
      title: Terraform Resources Request
      description: Request to store terraform resources from engine after deployment
      required:
        - terraformId
        - executionId
        - resourcesJson
      properties:
        terraformId:
          type: string
          format: uuid
          description: ID of the Terraform service
          example: 550e8400-e29b-41d4-a716-446655440000
        executionId:
          type: string
          description: |
            Execution ID in format "UUID-version" or "UUID-version-timestamp"
            Example: 550e8400-e29b-41d4-a716-446655440000-1
          example: 550e8400-e29b-41d4-a716-446655440000-1
        resourcesJson:
          type: string
          description: |
            JSON array of terraform resources extracted from terraform show output.
            Each resource contains: resource_type, name, provider, address, mode, attributes
          example: '[{"resource_type":"aws_instance","name":"web_server","provider":"aws","address":"aws_instance.web_server","mode":"managed","attributes":{"instance_id":"i-1234567890abcdef0","instance_type":"t2.micro"}}]'
    TerraformResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - name
            - timeout_sec
            - auto_deploy
            - icon_uri
            - service_type
            - terraform_variables_source
            - engine
            - backend
            - provider_version
            - job_resources
            - environment
            - use_cluster_credentials
            - action_extra_arguments
          properties:
            name:
              type: string
              description: name is case insensitive
            description:
              type: string
            timeout_sec:
              type: integer
              minimum: 0
              default: 600
            auto_deploy:
              type: boolean
            auto_deploy_config:
              $ref: "#/components/schemas/TerraformAutoDeployConfig"
            terraform_files_source:
              nullable: false
              x-stoplight:
                id: abfhjb6q74upq
              oneOf:
                - $ref: '#/components/schemas/TerraformFilesSource'
            icon_uri:
              type: string
              format: uri
              description: Icon URI representing the terraform service.
              x-stoplight:
                id: i2pvbugqsldhe
            service_type:
              $ref: '#/components/schemas/ServiceTypeEnum'
            terraform_variables_source:
              $ref: '#/components/schemas/TerraformVariablesSourceResponse'
            engine:
              $ref: '#/components/schemas/TerraformEngineEnum'
            backend:
              $ref: '#/components/schemas/TerraformBackend'
            provider_version:
              $ref: '#/components/schemas/TerraformProviderVersion'
            job_resources:
              $ref: '#/components/schemas/TerraformJobResourcesResponse'
            environment:
              $ref: '#/components/schemas/ReferenceObject'
            use_cluster_credentials:
              type: boolean
              x-stoplight:
                id: ixjejij08tgfo
            action_extra_arguments:
              type: object
              x-stoplight:
                id: rnkzwlf29dgb5
              description: |-
                The key represent the action command name i.e: "plan"
                The value represent the extra arguments to pass to this command

                i.e: {"apply", ["-lock=false"]} is going to prepend `-lock=false` to terraform apply commands
              additionalProperties:
                x-stoplight:
                  id: 57b09dqz1jwra
                type: array
                items:
                  x-stoplight:
                    id: 2mkmankga2thw
                  type: string
            dockerfile_fragment:
              nullable: true
              description: |
                Custom Dockerfile fragment to inject during build.
                When null, no custom fragment is injected.
              oneOf:
                - $ref: '#/components/schemas/DockerfileFragmentFile'
                - $ref: '#/components/schemas/DockerfileFragmentInline'
              discriminator:
                propertyName: type
                mapping:
                  file: '#/components/schemas/DockerfileFragmentFile'
                  inline: '#/components/schemas/DockerfileFragmentInline'
            blueprint_id:
              type: string
              format: uuid
              nullable: true
              description: |
                The blueprint ID the service has been created from
      description: A Terraform service
    TerraformRequestJobResources:
      title: TerraformRequestJobResources
      x-stoplight:
        id: ucc7l63gajzu8
      type: object
      required:
        - cpu_milli
        - ram_mib
        - gpu
        - storage_gib
      properties:
        cpu_milli:
          type: integer
          x-stoplight:
            id: alsilze9jc23e
        ram_mib:
          type: integer
          x-stoplight:
            id: a5y9bv1avatm3
        gpu:
          type: integer
          x-stoplight:
            id: rql3vn2yhkwec
          minimum: 0
          default: 0
          example: 1
        storage_gib:
          type: integer
          x-stoplight:
            id: 627awhyjj26ny
    TerraformProviderVersion:
      title: TerraformProviderVersion
      x-stoplight:
        id: 1a1hkhvei2wjq
      type: object
      required:
        - explicit_version
      properties:
        read_from_terraform_block:
          type: boolean
          x-stoplight:
            id: p2dnmuifo0fki
        explicit_version:
          type: string
          x-stoplight:
            id: 611hxcvuy68lv
    TerraformVariableParsingRequest:
      type: object
      required:
        - git_repository
      properties:
        git_repository:
          $ref: '#/components/schemas/ApplicationGitRepositoryRequest'
    TerraformVariablesSourceRequest:
      title: TerraformVariablesSourceRequest
      x-stoplight:
        id: w9dp75z2a944z
      type: object
      required:
        - tf_var_file_paths
        - tf_vars
      properties:
        tf_var_file_paths:
          type: array
          x-stoplight:
            id: kk82s9qjluugt
          items:
            x-stoplight:
              id: 7ns22ue58d2zb
            type: string
        tf_vars:
          type: array
          items:
            $ref: '#/components/schemas/TerraformVarKeyValue'
    TerraformVarKeyValue:
      title: TerraformVarKeyValue
      type: object
      description: A Terraform input variable
      properties:
        key:
          type: string
          x-stoplight:
            id: enwctu8s88umi
        value:
          type: string
          x-stoplight:
            id: ix1y6viqpaxk6
        secret:
          type: boolean
          x-stoplight:
            id: df80p2az3whjg
    TerraformVariableDefinition:
      title: TerraformVariableDefinition
      type: object
      description: Represents a Terraform variable definition extracted from a Terraform file.
      required:
        - key
        - sensitive
        - source
      properties:
        key:
          type: string
          description: The name of the variable
        sensitive:
          type: boolean
          description: Whether the variable is marked as sensitive
        nullable:
          type: boolean
          default: true
          description: 'Whether the variable accepts null values. If false, the variable is required.'
        default:
          type: string
          nullable: true
          description: 'The default value of the variable, or null if no default is provided'
        source:
          type: string
          description: The path inside your git repository where the variable is defined
        description:
          type: string
          nullable: true
          description: 'The description of the variable, or null if no description is provided'
    TerraformFilesSourceRequest:
      title: TerraformFilesSourceRequest
      x-stoplight:
        id: n91jcyroi7kt4
      type: object
      properties:
        id:
          type: string
          x-stoplight:
            id: vtpiblf7t37xq
    TerraformAutoDeployConfig:
          title: TerraformAutoDeployConfig
          type: object
          required:
            - auto_deploy
            - terraform_action
          properties:
            auto_deploy:
              type: boolean
            terraform_action:
              type: string
              description: |
                Action to force a specific Terraform behavior on autodeploy.
                `DEFAULT`: The action is resolved based on the deployment type:
                  - Start/Restart -> PLAN_AND_APPLY
                  - Delete -> DESTROY
                  - Pause -> PLAN_ONLY
              enum:
                - DEFAULT
                - PLAN
                - NOOP
    TerraformGitRepositoryRequest:
      title: TerraformGitRepositoryRequest
      x-stoplight:
        id: ot316adf8cqn0
      type: object
      required:
        - url
      properties:
        url:
          type: string
          x-stoplight:
            id: yjnlaiu6umfgc
        branch:
          type: string
          x-stoplight:
            id: 7txz9hngsrt2a
        root_path:
          type: string
          x-stoplight:
            id: 2sdr8f1ia9yr1
        git_token_id:
          type: string
          x-stoplight:
            id: ddhd4pztgc43y
    TerraformVariablesSourceResponse:
      title: TerraformVariablesSourceResponse
      x-stoplight:
        id: 2lr1mv2b3y7xy
      type: object
      required:
        - tf_var_file_paths
        - tf_vars
      properties:
        tf_var_file_paths:
          type: array
          x-stoplight:
            id: ua5d71it2yiu5
          items:
            x-stoplight:
              id: qsy17gz9fl3n3
            type: string
        tf_vars:
          type: array
          items:
            $ref: '#/components/schemas/TerraformVarKeyValue'
    TfVarsListRequest:
      title: TfVarsListRequest
      type: object
      description: Request to list Terraform tfvars files from a Git repository
      required:
        - git_repository
        - mode
      properties:
        git_repository:
          $ref: '#/components/schemas/ApplicationGitRepositoryRequest'
        mode:
          $ref: '#/components/schemas/TfVarsDiscoveryMode'
    TfVarsDiscoveryMode:
      title: TfVarsDiscoveryMode
      description: Discovery mode for Terraform tfvars files - either auto-discover or specify paths
      oneOf:
        - $ref: '#/components/schemas/TfVarsDiscoveryModeAutoDiscover'
        - $ref: '#/components/schemas/TfVarsDiscoveryModeSpecificPaths'
      discriminator:
        propertyName: type
        mapping:
          AutoDiscover: '#/components/schemas/TfVarsDiscoveryModeAutoDiscover'
          SpecificPaths: '#/components/schemas/TfVarsDiscoveryModeSpecificPaths'
    TfVarsDiscoveryModeAutoDiscover:
      title: TfVarsDiscoveryModeAutoDiscover
      type: object
      description: Automatically discover all tfvars files in the repository
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - AutoDiscover
          description: Discriminator for auto-discovery mode
    TfVarsDiscoveryModeSpecificPaths:
      title: TfVarsDiscoveryModeSpecificPaths
      type: object
      description: Discover tfvars files at specific paths only
      required:
        - type
        - paths
      properties:
        type:
          type: string
          enum:
            - SpecificPaths
          description: Discriminator for specific paths mode
        paths:
          type: array
          items:
            type: string
          description: List of specific paths to tfvars files
          example:
            - /environments/prod.tfvars
            - /environments/staging.tfvars
    DockerfileFragmentFile:
      title: DockerfileFragmentFile
      type: object
      description: Reference a Dockerfile fragment file from your Git repository.
      required:
        - type
        - path
      properties:
        type:
          type: string
          enum:
            - file
          description: Fragment type discriminator
        path:
          type: string
          description: Absolute path to the fragment file.
          example: /infra/terraform/custom-build.dockerfile
    DockerfileFragmentInline:
      title: DockerfileFragmentInline
      type: object
      description: Define Dockerfile commands directly in the configuration.
      required:
        - type
        - content
      properties:
        type:
          type: string
          enum:
            - inline
          description: Fragment type discriminator
        content:
          type: string
          description: Dockerfile commands to inject (max 8KB).
          example: RUN apt-get update && apt-get install -y aws-cli jq curl && rm -rf /var/lib/apt/lists/*
    TfVarsFileResponse:
      title: TfVarsFileResponse
      type: object
      description: Represents a Terraform tfvars file with its variables
      required:
        - source
        - variables
      properties:
        source:
          type: string
          description: The path to the tfvars file within the Git repository
          example: environments/prod.tfvars
        variables:
          type: object
          additionalProperties:
            type: string
          description: Map of variable names to their values from the tfvars file
          example:
            environment: production
            region: us-east-1
    TerraformJobResourcesResponse:
      title: TerraformJobResourcesResponse
      x-stoplight:
        id: xhswkmfwyerrv
      type: object
      required:
        - cpu_milli
        - ram_mib
        - gpu
        - storage_gib
      properties:
        cpu_milli:
          type: integer
          x-stoplight:
            id: bg054290feb9c
        ram_mib:
          type: integer
          x-stoplight:
            id: f6dur44ah2bwe
        gpu:
          type: integer
          x-stoplight:
            id: y8lomc204l40z
          default: 0
          minimum: 0
          example: 1
        storage_gib:
          type: integer
          x-stoplight:
            id: dsf78pwnvmqi8
    TerraformResponseList:
      title: TerraformResponseList
      x-stoplight:
        id: ipapoxduvpkk7
      type: object
      properties:
        results:
          type: array
          x-stoplight:
            id: mkzx2zfzysbnp
          items:
            $ref: '#/components/schemas/TerraformResponse'
    TerraformVersionResponse:
      type: object
      required:
        - engine
        - version
      properties:
        engine:
          $ref: '#/components/schemas/TerraformEngineEnum'
        version:
          type: string
          description: Terraform version string
    TerraformVersionResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/TerraformVersionResponse'
    TerraformAdvancedSettings:
      title: TerraformAdvancedSettings
      x-stoplight:
        id: vykzi46lkt2y1
      type: object
      properties:
        build.timeout_max_sec:
          type: integer
          description: define the max timeout for the build
        build.cpu_max_in_milli:
          type: integer
          description: define the max cpu resources (in milli)
        build.ram_max_in_gib:
          type: integer
          description: define the max ram resources (in gib)
        build.ephemeral_storage_in_gib:
          type: integer
        build.skip_git_submodules:
          type: boolean
          description: skip git submodules update when cloning the repository
        deployment.termination_grace_period_seconds:
          type: integer
          description: define how long in seconds an application is supposed to be stopped gracefully
        deployment.affinity.node.required:
          type: object
          additionalProperties:
            type: string
          description: Set pod placement on specific Kubernetes nodes labels
        security.service_account_name:
          type: string
          description: |
            Allows you to set an existing Kubernetes service account name
        security.read_only_root_filesystem:
          type: boolean
          description: |
            Mounts the container's root filesystem as read-only
    TerraformDeployRequest:
      type: object
      properties:
        id:
          type: string
          format: uuid
          nullable: true
          description: Terraform service identifier
        git_commit_id:
          type: string
          description: Commit to deploy for chart source.
        action:
          type: string
          nullable: true
          description: Terraform action to execute.
          enum:
            - PLAN
            - FORCE_UNLOCK
            - MIGRATE_STATE
    TerraformDeploymentRestrictionRequest:
      title: TerraformDeploymentRestrictionRequest
      x-stoplight:
        id: gtjm33l5m7q0x
      type: object
      required:
        - mode
        - type
        - value
      properties:
        mode:
          $ref: '#/components/schemas/DeploymentRestrictionModeEnum'
        type:
          $ref: '#/components/schemas/DeploymentRestrictionTypeEnum'
        value:
          type: string
          x-stoplight:
            id: hsk8w0ydpuwm4
          description: '‘For `PATH` restrictions, the value must not start with `/`’'
    TerraformDeploymentRestrictionResponse:
      title: TerraformDeploymentRestrictionResponse
      x-stoplight:
        id: 9t9zdouc9tao0
      allOf:
        - $ref: '#/components/schemas/Base'
        - $ref: '#/components/schemas/TerraformDeploymentRestrictionRequest'
    TerraformDeploymentRestrictionResponseList:
      title: TerraformDeploymentRestrictionResponseList
      x-stoplight:
        id: olvqymwxtdfeq
      type: object
      properties:
        results:
          x-stoplight:
            id: iu0k7b7tkayre
          type: array
          items:
            $ref: '#/components/schemas/TerraformDeploymentRestrictionResponse'
    OrganizationCrendentialsResponseList:
      title: OrganizationCrendentialsResponseList
      x-stoplight:
        id: 0tv1xnjgh98nm
      type: object
      properties:
        results:
          type: array
          x-stoplight:
            id: dyld95hlync5e
          items:
            x-stoplight:
              id: qjal2umjmvumz
            type: object
            properties:
              credential:
                $ref: '#/components/schemas/ClusterCredentials'
              clusters:
                type: array
                x-stoplight:
                  id: 7o7dzkbyt78bu
                items:
                  $ref: '#/components/schemas/CredentialCluster'
    CredentialCluster:
      title: CredentialCluster
      x-stoplight:
        id: oyhk9uf5vcqlk
      type: object
      properties:
        id:
          type: string
          x-stoplight:
            id: ksymb5hxvrlq9
          format: uuid
        name:
          type: string
          x-stoplight:
            id: skztj7io7an31
        cloud_provider:
          $ref: '#/components/schemas/CloudProviderEnum'
    TerraformFilesSource:
      title: TerraformFilesSource
      x-stoplight:
        id: ynhtfa5yo20ee
      type: object
      properties:
        git:
          x-stoplight:
            id: iavjewfs0d12k
          type: object
          properties:
            git_repository:
              $ref: '#/components/schemas/ApplicationGitRepository'
    ClusterLogsResponse:
      title: ClusterLogsResponse
      x-stoplight:
        id: 93ntufnd3epke
      type: object
      properties:
        response:
          type: string
          x-stoplight:
            id: 7vk339giarxht
    ClusterInfrastructureChartsParameters:
      type: object
      properties:
        nginx_parameters:
          $ref: '#/components/schemas/ClusterInfrastructureNginxChartParameters'
        cert_manager_parameters:
          $ref: '#/components/schemas/ClusterInfrastructureCertManagerChartParameters'
        metal_lb_parameters:
          $ref: '#/components/schemas/ClusterInfrastructureMetalLbChartParameters'
        eks_anywhere_parameters:
          $ref: '#/components/schemas/ClusterInfrastructureEksAnywhereParameters'
    ClusterInfrastructureEksAnywhereParameters:
      type: object
      required:
        - git_repository
        - yaml_file_path
      properties:
        git_repository:
          $ref: '#/components/schemas/ClusterEksAnywhereGitRepository'
        yaml_file_path:
          type: string
          description: Path to the EKS Anywhere cluster YAML file in the git repository
          example: /clusters/cluster-a.yaml
        cluster_backup:
          $ref: '#/components/schemas/ClusterInfrastructureEksAnywhereBackupParameters'
    ClusterInfrastructureEksAnywhereBackupParameters:
      type: object
      required:
        - s3
      properties:
        enabled:
          type: boolean
          default: true
          description: Enable or disable EKS Anywhere cluster backup.
        timeout_seconds:
          type: integer
          format: int64
          default: 300
          description: Timeout in seconds for backup operations.
        certs_secret_name:
          type: string
          description: Optional Kubernetes secret name holding etcd certificates.
        s3:
          $ref: '#/components/schemas/ClusterInfrastructureEksAnywhereBackupS3Parameters'
    ClusterInfrastructureEksAnywhereBackupS3Parameters:
      type: object
      required:
        - bucket
        - region
        - role_arn
      properties:
        bucket:
          type: string
          description: S3 bucket name used to store EKS Anywhere backup artifacts.
        region:
          type: string
          description: AWS region where the backup bucket is hosted.
        role_arn:
          type: string
          description: IAM role ARN assumed to upload backup artifacts.
        key_prefix:
          type: string
          description: Optional S3 key prefix used for backup object keys.
    ClusterEksAnywhereGitRepository:
      type: object
      required:
        - url
        - git_token_id
      properties:
        url:
          type: string
          format: uri
          description: EKS Anywhere git repository URL
          example: 'https://github.com/Qovery/eks-anywhere-config.git'
        branch:
          type: string
          description: |
            Name of the branch to use. This is optional.
            If not specified, the default branch of the repository is used.
          example: main
        commit_id:
          type: string
          description: |
            Optional git commit SHA to pin EKS Anywhere configuration on a specific revision.
            If omitted, the latest commit from the selected branch is used.
          example: 4e3128725f47140002fa47d65d83195a51f5140f
        git_token_id:
          type: string
          format: uuid
          description: Qovery git token id used to access the repository
        provider:
          $ref: '#/components/schemas/GitProviderEnum'
    ClusterInfrastructureNginxChartParameters:
      title: ClusterInfrastructureNginxChartParameters
      x-stoplight:
        id: c9r0h8ey6ugzr
      type: object
      properties:
        replica_count:
          type: integer
          x-stoplight:
            id: zdwoxwir7ygnw
          minimum: 0
        default_ssl_certificate:
          type: string
          x-stoplight:
            id: z1l1xmwud3yjq
        publish_status_address:
          type: string
          x-stoplight:
            id: da9klqdcxew6n
        annotation_metal_lb_load_balancer_ips:
          type: string
          x-stoplight:
            id: 4ji26purdr956
        annotation_external_dns_kubernetes_target:
          type: string
          x-stoplight:
            id: ytwsmm8mzre3g
    ClusterInfrastructureCertManagerChartParameters:
      title: InfrastructureCertManagerChartParameters
      x-stoplight:
        id: xsidu7mikkhq3
      type: object
      properties:
        kubernetes_namespace:
          type: string
          x-stoplight:
            id: y5txd86avhe6j
    ClusterInfrastructureMetalLbChartParameters:
      title: InfrastructureMetalLbChartParameters
      x-stoplight:
        id: evxswes22ykhd
      type: object
      properties:
        ip_address_pools:
          type: array
          x-stoplight:
            id: sfxtfy7n1uddw
          items:
            x-stoplight:
              id: lstjwwfo9ys6i
            type: string
    EnterpriseConnectionResponseList:
      title: EnterpriseConnectionResponseList
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/EnterpriseConnectionDto'
    EnterpriseConnectionDto:
      title: EnterpriseConnectionDto
      type: object
      required:
        - connection_name
        - default_role
        - enforce_group_sync
        - group_mappings
      properties:
        connection_name:
          type: string
          description: The connection name
        default_role:
          type: string
          description: |
            The purpose of this default role is to be associated to your users if:
            - you choose to not expose your IDPs groups to the SAML / OIDC connection
            - no associated group is found in your `group_mappings` defined

            You can define either a Qovery provided role (i.e `viewer`) or one of your custom role`s uuid.
        enforce_group_sync:
          type: boolean
          description: |
            * if `true`, roles will be synchronized at each user login according to your `group_mappings` configuration based on your IDP groups
            * if `false`, no synchronization is done for your users and `group_mappings` configuration will be ignored
        group_mappings:
          type: object
          description: |
            This will allow to create mapping rules based on your IDP group names.  
            It's a dictionnary having:
            - key: either a Qovery provided role (i.e `viewer`) or one of your custom role`s uuid
            - value: an array of your IDP group names

            Example: "I want to associate the Qovery role `devops` to my IDP groups ['Administrators', 'DevSecOps']"
          additionalProperties:
            type: array
            items:
              type: string
              nullable: false
    AlertReceiverCreationRequest:
      title: AlertReceiverCreationRequest
      x-stoplight:
        id: q1oj36zhkhmvp
      x-internal: false
      oneOf:
        - $ref: '#/components/schemas/SlackAlertReceiverCreationRequest'
        - $ref: '#/components/schemas/EmailAlertReceiverCreationRequest'
      discriminator:
        propertyName: type
        mapping:
          SLACK: '#/components/schemas/SlackAlertReceiverCreationRequest'
          EMAIL: '#/components/schemas/EmailAlertReceiverCreationRequest'
    AlertReceiverCreationRequestBase:
      title: AlertReceiverCreationRequestBase
      type: object
      required:
        - organization_id
        - name
        - description
        - type
        - send_resolved
      properties:
        organization_id:
          type: string
          format: uuid
          x-stoplight:
            id: bojx2ynimjvnr
        name:
          type: string
          x-stoplight:
            id: vhcpsitoy9mm1
        description:
          type: string
          x-stoplight:
            id: lrlxf8a34veta
        type:
          $ref: '#/components/schemas/AlertReceiverType'
        send_resolved:
          type: boolean
          x-stoplight:
            id: ucf1p0q2vpohv
        owner:
          type: string
          nullable: true
        severity:
          type: string
          nullable: true
    SlackAlertReceiverCreationRequest:
      title: SlackAlertReceiverCreationRequest
      x-stoplight:
        id: awuv9zidg4qxx
      allOf:
        - $ref: '#/components/schemas/AlertReceiverCreationRequestBase'
        - type: object
          required:
            - webhook_url
          properties:
            webhook_url:
              type: string
              format: uri
              x-stoplight:
                id: dre0gsq0bs0xv
    EmailAlertReceiverCreationRequest:
      title: EmailAlertReceiverCreationRequest
      allOf:
        - $ref: '#/components/schemas/AlertReceiverCreationRequestBase'
        - type: object
          required:
            - to
            - from
            - smarthost
            - auth_password
            - require_tls
          properties:
            to:
              type: string
              format: email
              description: Recipient email address
            from:
              type: string
              format: email
              description: Sender email address
            smarthost:
              type: string
              description: 'SMTP server in format ''host:port'''
              example: 'smtp.example.com:587'
            auth_username:
              type: string
              nullable: true
              description: SMTP authentication username. Defaults to 'from' if not provided.
            auth_password:
              type: string
              format: password
              description: SMTP authentication password
            require_tls:
              type: boolean
              description: Whether to require TLS for SMTP connection
    AlertReceiverType:
      title: AlertReceiverType
      x-stoplight:
        id: 79fodqa89swh7
      enum:
        - SLACK
        - EMAIL
    AlertReceiverEditRequest:
      title: AlertReceiverEditRequest
      x-stoplight:
        id: y2od6vkbmt7yr
      oneOf:
        - $ref: '#/components/schemas/SlackAlertReceiverEditRequest'
        - $ref: '#/components/schemas/EmailAlertReceiverEditRequest'
      discriminator:
        propertyName: type
        mapping:
          SLACK: '#/components/schemas/SlackAlertReceiverEditRequest'
          EMAIL: '#/components/schemas/EmailAlertReceiverEditRequest'
    AlertReceiverEditRequestBase:
      title: AlertReceiverEditRequestBase
      type: object
      required:
        - name
        - description
        - type
        - send_resolved
      properties:
        name:
          type: string
          x-stoplight:
            id: x7yi5mef1y2le
        description:
          type: string
          x-stoplight:
            id: 0l6xifjl3s4e2
        type:
          $ref: '#/components/schemas/AlertReceiverType'
        send_resolved:
          type: boolean
          x-stoplight:
            id: hk2x1t8ixk5sf
        owner:
          type: string
          nullable: true
        severity:
          type: string
          nullable: true
    SlackAlertReceiverEditRequest:
      title: SlackAlertReceiverEditRequest
      x-stoplight:
        id: hcxf6sxx1jrv9
      allOf:
        - $ref: '#/components/schemas/AlertReceiverEditRequestBase'
        - type: object
          properties:
            webhook_url:
              type: string
              format: uri
              nullable: true
              description: 'Update webhook URL. If null, keeps existing value.'
              x-stoplight:
                id: 8c5ze7hwv90q2
    EmailAlertReceiverEditRequest:
      title: EmailAlertReceiverEditRequest
      allOf:
        - $ref: '#/components/schemas/AlertReceiverEditRequestBase'
        - type: object
          required:
            - to
            - from
            - smarthost
            - require_tls
          properties:
            to:
              type: string
              format: email
            from:
              type: string
              format: email
            smarthost:
              type: string
              description: 'SMTP server in format ''host:port'''
            auth_username:
              type: string
              nullable: true
            auth_password:
              type: string
              format: password
              nullable: true
              description: 'SMTP password. If null, keeps existing password.'
            require_tls:
              type: boolean
    AlertReceiverResponse:
      title: AlertReceiverResponse
      x-stoplight:
        id: qyrx61cvx84cz
      oneOf:
        - $ref: '#/components/schemas/SlackAlertReceiverResponse'
        - $ref: '#/components/schemas/EmailAlertReceiverResponse'
      discriminator:
        propertyName: type
        mapping:
          SLACK: '#/components/schemas/SlackAlertReceiverResponse'
          EMAIL: '#/components/schemas/EmailAlertReceiverResponse'
    SlackAlertReceiverResponse:
      title: SlackAlertReceiverResponse
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - name
            - description
            - type
            - send_resolved
          properties:
            name:
              type: string
              x-stoplight:
                id: 5zeqm4fc5c8bf
            description:
              type: string
              x-stoplight:
                id: aja5apvg882lo
            type:
              $ref: '#/components/schemas/AlertReceiverType'
            send_resolved:
              type: boolean
              x-stoplight:
                id: xpyx1p6hna34g
            owner:
              type: string
              nullable: true
            severity:
              type: string
              nullable: true
    EmailAlertReceiverResponse:
      title: EmailAlertReceiverResponse
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - name
            - description
            - type
            - send_resolved
            - to
            - from
            - smarthost
            - auth_username
            - require_tls
          properties:
            name:
              type: string
            description:
              type: string
            type:
              $ref: '#/components/schemas/AlertReceiverType'
            send_resolved:
              type: boolean
            to:
              type: string
              format: email
            from:
              type: string
              format: email
            smarthost:
              type: string
            auth_username:
              type: string
              nullable: true
            require_tls:
              type: boolean
            owner:
              type: string
              nullable: true
            severity:
              type: string
              nullable: true
    AlertReceiverList:
      title: AlertReceiverList
      x-stoplight:
        id: adq5zt8oqtve1
      type: object
      required:
        - results
      properties:
        results:
          x-stoplight:
            id: e8a6xqrax75d5
          type: array
          items:
            $ref: '#/components/schemas/AlertReceiverResponse'
    AlertPresentation:
      title: AlertPresentation
      x-stoplight:
        id: csg2krsbv2i40
      type: object
      properties:
        summary:
          type: string
          x-stoplight:
            id: 4q8s7z1uu8kvm
          nullable: true
        runbook_url:
          type: string
          x-stoplight:
            id: fe7wk13airhnu
          description: URL to runbook with remediation steps
          format: uri
          nullable: true
    AlertRuleCreationRequest:
      title: AlertRuleCreationRequest
      x-stoplight:
        id: mcgiquvv7m2vp
      type: object
      required:
        - organization_id
        - cluster_id
        - name
        - description
        - tag
        - condition
        - for_duration
        - severity
        - presentation
        - enabled
        - alert_receiver_ids
        - target
      properties:
        organization_id:
          type: string
          x-stoplight:
            id: qe8mxuqf5rerq
          format: uuid
          description: Organization identifier
        cluster_id:
          type: string
          x-stoplight:
            id: luojx47y8mgl1
          format: uuid
          description: ' Cluster identifier where the rule will be deployed'
        name:
          type: string
          x-stoplight:
            id: 7ih1egmfghew9
          description: Name of the alert rule
        description:
          type: string
          x-stoplight:
            id: jhc5u599bha5a
          description: |
            Description of what the alert monitors
        tag:
          type: string
          x-stoplight:
            id: eaisshdmo1xgi
        condition:
          $ref: '#/components/schemas/AlertRuleCondition'
        for_duration:
          type: string
          x-stoplight:
            id: 8jk0kcca7whc6
          description: Duration the condition must be true before firing (ISO-8601 duration format)
          format: duration
        severity:
          $ref: '#/components/schemas/AlertSeverity'
        presentation:
          $ref: '#/components/schemas/AlertPresentation'
        enabled:
          type: boolean
          x-stoplight:
            id: 0ksuq2b0flii5
          description: Whether the alert rule is enabled
        alert_receiver_ids:
          type: array
          x-stoplight:
            id: oy3dbybxgmvs5
          description: List of alert receiver IDs to send notifications to
          minItems: 1
          items:
            x-stoplight:
              id: cc3sm9sjduuqf
            type: string
            format: uuid
        target:
          $ref: '#/components/schemas/AlertTarget'
    AlertSeverity:
      title: AlertSeverity
      x-stoplight:
        id: 74rrc7nvxpc30
      description: |-
        Alert severity level:
                - LOW: Minor issues or informational alerts that don't require immediate attention. Can be addressed during normal business hours.
                - MEDIUM: Moderate issues that should be investigated soon but don't impact critical services. May cause degraded performance or minor service disruption.
                - HIGH: Serious issues affecting service quality or availability. Requires prompt attention and resolution within hours.
                - CRITICAL: Critical issue requiring immediate action. Service outage, data loss risk, or severe performance degradation affecting users.
      enum:
        - LOW
        - MEDIUM
        - HIGH
        - CRITICAL
    AlertRuleEditRequest:
      title: AlertRuleEditRequest
      x-stoplight:
        id: 6914x54u4sgg0
      type: object
      required:
        - name
        - description
        - tag
        - condition
        - for_duration
        - severity
        - enabled
        - alert_receiver_ids
        - presentation
      properties:
        name:
          type: string
          x-stoplight:
            id: 7zbib93n861tt
          description: Name of the alert rule
        description:
          type: string
          x-stoplight:
            id: 2xpgzz03za6jo
          description: Description of what the alert monitors
        tag:
          type: string
          x-stoplight:
            id: p754eq1nh7gqp
        condition:
          $ref: '#/components/schemas/AlertRuleCondition'
        for_duration:
          type: string
          x-stoplight:
            id: auoq20czr9ouh
          format: duration
          description: Duration the condition must be true before firing (ISO-8601 duration format)
        severity:
          $ref: '#/components/schemas/AlertSeverity'
        enabled:
          type: boolean
          x-stoplight:
            id: uayodiines5vd
          description: Whether the alert rule is enabled
        alert_receiver_ids:
          type: array
          x-stoplight:
            id: n42yd3ffbfzdq
          description: List of alert receiver IDs to send notifications to
          minItems: 1
          items:
            x-stoplight:
              id: xt3qvn76g9znl
            type: string
            format: uuid
        presentation:
          $ref: '#/components/schemas/AlertPresentation'
    AlertPresentationResponse:
      title: AlertPresentationResponse
      x-stoplight:
        id: dx514vxebudw0
      type: object
      properties:
        summary:
          type: string
          x-stoplight:
            id: z5t89ub093022
          description: ' Alert summary template'
          nullable: true
        runbook_url:
          type: string
          x-stoplight:
            id: kf94o17fes7zl
          description: URL to runbook with remediation steps
          format: uri
          nullable: true
    AlertRuleSource:
      title: AlertRuleSource
      x-stoplight:
        id: alert_rule_source_enum
      description: |-
        Source of the alert rule:
        - MANAGED: Alert rule created and managed through the Qovery API
        - GHOST: Alert rule that exists in Prometheus but has been deleted from the database
      enum:
        - MANAGED
        - GHOST
    AlertRuleResponseBase:
      title: AlertRuleResponseBase
      x-stoplight:
        id: alert_rule_response_base
      description: Base schema for alert rule responses with discriminator
      type: object
      required:
        - source
        - name
        - state
      properties:
        source:
          $ref: '#/components/schemas/AlertRuleSource'
        name:
          type: string
          x-stoplight:
            id: base_name_prop
          description: Name of the alert rule
        state:
          $ref: '#/components/schemas/AlertRuleState'
      discriminator:
        propertyName: source
        mapping:
          MANAGED: '#/components/schemas/AlertRuleResponse'
          GHOST: '#/components/schemas/GhostAlertRuleResponse'
    AlertRuleResponse:
      title: AlertRuleResponse
      x-stoplight:
        id: jsi9jy70651hv
      allOf:
        - $ref: '#/components/schemas/Base'
        - $ref: '#/components/schemas/AlertRuleResponseBase'
        - type: object
          required:
            - organization_id
            - cluster_id
            - description
            - tag
            - condition
            - for_duration
            - severity
            - enabled
            - alert_receiver_ids
            - presentation
            - target
            - is_up_to_date
          properties:
            organization_id:
              type: string
              x-stoplight:
                id: 40agisyi9s6no
              format: uuid
              description: Organization identifier
            cluster_id:
              type: string
              x-stoplight:
                id: nd3oz9h1qpa6w
              description: ' Cluster identifier'
              format: uuid
            description:
              type: string
              x-stoplight:
                id: r728dl0e8ef6x
              description: Description of what the alert monitors
            tag:
              type: string
              x-stoplight:
                id: kloew25gqdxqt
            condition:
              $ref: '#/components/schemas/AlertRuleCondition'
            for_duration:
              type: string
              x-stoplight:
                id: 3aceb4kbdv4pz
              format: duration
              description: Duration the condition must be true before firing (ISO-8601 duration format)
            severity:
              $ref: '#/components/schemas/AlertSeverity'
            enabled:
              type: boolean
              x-stoplight:
                id: du2v3ss6fb66f
              description: Whether the alert rule is enabled
            alert_receiver_ids:
              type: array
              x-stoplight:
                id: 7lerayyele2ss
              description: List of alert receiver IDs to send notifications to
              items:
                x-stoplight:
                  id: xdka1kakao7s0
                type: string
                format: uuid
            presentation:
              $ref: '#/components/schemas/AlertPresentationResponse'
            target:
              $ref: '#/components/schemas/AlertTarget'
            is_up_to_date:
              type: boolean
              x-stoplight:
                id: 4nfaupf2l1668
              description: |-
                Indicates whether the current version of the alert has been synced with the alerting system.
                If false, an outdated version is currently deployed.
            starts_at:
              type: string
              x-stoplight:
                id: 9r76f8pipu6y5
              description: when the alert starts firing
              format: date-time
    GhostAlertRuleResponse:
      title: GhostAlertRuleResponse
      x-stoplight:
        id: ghost_alert_rule_response
      description: Response for ghost alerts that exist in Prometheus but have been deleted from the database
      allOf:
        - $ref: '#/components/schemas/AlertRuleResponseBase'
        - type: object
          properties:
            target:
              allOf:
                - $ref: '#/components/schemas/AlertTarget'
                - nullable: true
              description: May be null if target info couldn't be extracted from Prometheus
            starts_at:
              type: string
              x-stoplight:
                id: ghost_starts_at
              description: When the ghost alert started firing
              format: date-time
              nullable: true
    AlertTargetType:
      title: AlertTargetType
      x-stoplight:
        id: y45ivkwhr7wb4
      enum:
        - ' CLUSTER'
        - ENVIRONMENT
        - APPLICATION
        - CONTAINER
        - JOB
        - CRONJOB
        - HELM
        - TERRAFORM
      description: The target of an alert
    AlertTarget:
      title: AlertTarget
      x-stoplight:
        id: rv11vyq7cy4dn
      type: object
      required:
        - target_type
        - target_id
      properties:
        target_type:
          $ref: '#/components/schemas/AlertTargetType'
        target_id:
          type: string
          x-stoplight:
            id: 8begp36fsknxq
          format: uuid
        service:
          $ref: '#/components/schemas/ServiceLightResponse'
          description: 'Service details when target_type is APPLICATION, CONTAINER, JOB, CRONJOB, HELM or TERRAFORM'
    AlertRuleState:
      title: AlertRuleState
      x-stoplight:
        id: 05u4rv9rrfvcp
      enum:
        - UNDEPLOYED
        - OK
        - TRIGGERED
        - PENDING_NOTIFICATION
        - NOTIFIED
        - SUPPRESSED
        - UNROUTED
    AlertRuleList:
      title: AlertRuleList
      x-stoplight:
        id: hawsqfl98nqlz
      type: object
      required:
        - results
      properties:
        results:
          type: array
          x-stoplight:
            id: nsk4tfkil7yuf
          items:
            oneOf:
              - $ref: '#/components/schemas/AlertRuleResponse'
              - $ref: '#/components/schemas/GhostAlertRuleResponse'
            discriminator:
              propertyName: source
              mapping:
                MANAGED: '#/components/schemas/AlertRuleResponse'
                GHOST: '#/components/schemas/GhostAlertRuleResponse'
    ObservabilityResourceProfile:
      title: ObservabilityResourceProfile
      x-stoplight:
        id: 3a3rea0t85miz
      enum:
        - LOW
        - NORMAL
        - HIGH
    CloudWatchExportConfig:
      title: CloudWatchExportConfig
      x-stoplight:
        id: 69hi4weirghk5
      type: object
      required:
        - enabled
      properties:
        enabled:
          description: To enable the cloudwatch exporter.
          type: boolean
          x-stoplight:
            id: zxwl3n47xffu4
    InternalNetworkMonitoring:
      title: InternalNetworkMonitoring
      x-stoplight:
        id: d9zr14swvmont
      type: object
      required:
        - enabled
      properties:
        enabled:
          type: boolean
          x-stoplight:
            id: 8fvsh62tnjurc
    AlertingConfig:
      title: AlertingConfig
      x-stoplight:
        id: 079kamufdt1pm
      type: object
      required:
        - enabled
      properties:
        enabled:
          type: boolean
          x-stoplight:
            id: spv3usiee6mc9
        default_rule_labels:
          type: object
          additionalProperties:
            type: string
          nullable: true
          description: Key-value pairs of default labels to be applied to alert rules
          x-stoplight:
            id: tsp767d421sed
        spec_config_secret:
          type: string
          x-stoplight:
            id: vhloqa7s6ta17
        spec_external_url:
          type: string
          x-stoplight:
            id: 53c0p049mktbg
        config_name:
          type: string
          x-stoplight:
            id: 6ueyhx8jelz3f
    AlertRuleCondition:
      title: AlertRuleCondition
      x-stoplight:
        id: x5o1gdqlpoyei
      type: object
      required:
        - kind
        - promql
      properties:
        kind:
          $ref: '#/components/schemas/AlertRuleConditionKind'
        operator:
          $ref: '#/components/schemas/AlertRuleConditionOperator'
        threshold:
          type: number
          x-stoplight:
            id: ua0w1t89vrl0b
        function:
          $ref: '#/components/schemas/AlertRuleConditionFunction'
        promql:
          type: string
          x-stoplight:
            id: 6xaesnuka2c2q
    AlertRuleConditionKind:
      title: AlertRuleConditionKind
      x-stoplight:
        id: 275ykwbxqzr24
      enum:
        - CUSTOM
        - BUILT
    AlertRuleConditionOperator:
      title: AlertRuleConditionOperator
      x-stoplight:
        id: hpxq0ysquqnts
      enum:
        - NONE
        - ABOVE
        - BELOW
        - ABOVE_OR_EQUAL
        - BELOW_OR_EQUAL
        - EQUAL
    AlertRuleConditionFunction:
      title: AlertRuleConditionFunction
      x-stoplight:
        id: 7tp2xk2ehojvz
      enum:
        - NONE
        - AVG
        - MAX
        - MIN
        - SUM
        - COUNT
    AlertReceiverValidationRequest:
      title: AlertReceiverValidationRequest
      x-stoplight:
        id: w6fc7rel27rie
      type: object
      properties:
        message:
          type: string
          x-stoplight:
            id: fgi81witawggf
    AlertReceiverCreationValidationRequest:
      title: AlertReceiverCreationValidationRequest
      x-stoplight:
        id: xbtjouxwa280v
      type: object
      required:
        - alert_receiver
      properties:
        alert_receiver:
          $ref: '#/components/schemas/AlertReceiverCreationRequest'
        message:
          type: string
          x-stoplight:
            id: s7kbacgdp3fb4
    ClusterKeda:
      title: ClusterKeda
      x-stoplight:
        id: apznbrc98va7j
      type: object
      required:
        - enabled
      properties:
        enabled:
          type: boolean
          x-stoplight:
            id: 46c6f1rqdvu55
    AutoscalingPolicyRequest:
      title: AutoscalingPolicyRequest
      x-stoplight:
        id: ylgyx3ozik2hf
      oneOf:
        - $ref: '#/components/schemas/KedaAutoscalingRequest'
      discriminator:
        propertyName: mode
        mapping:
          KEDA: '#/components/schemas/KedaAutoscalingRequest'
    AutoscalingMode:
      title: AutoscalingMode
      x-stoplight:
        id: vmgo27882mrl3
      type: string
      enum:
        - KEDA
    KedaAutoscalingRequest:
      title: KedaAutoscalingRequest
      x-stoplight:
        id: 4vq8n2a7z3pen
      type: object
      required:
        - mode
        - scalers
      properties:
        mode:
          $ref: '#/components/schemas/AutoscalingMode'
        polling_interval_seconds:
          type: integer
          x-stoplight:
            id: wy5blh9au1d85
          format: int32
        cooldown_period_seconds:
          type: integer
          x-stoplight:
            id: zy5rt4bh9fyph
          format: int32
        scalers:
          type: array
          x-stoplight:
            id: 6oh134v1tqb28
          minItems: 1
          items:
            $ref: '#/components/schemas/KedaScalerRequest'
    KedaScalerRole:
      title: KedaScalerRole
      x-stoplight:
        id: 1sl0mlxoqzr8w
      type: string
      enum:
        - PRIMARY
        - SAFETY
    KedaAutoscalingResponse:
      title: KedaAutoscalingResponse
      x-stoplight:
        id: dgcb902szizvv
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          x-stoplight:
            id: zjlwqohiiyuwf
          required:
            - service_id
            - mode
            - polling_interval_seconds
            - cooldown_period_seconds
            - scalers
          properties:
            service_id:
              type: string
              x-stoplight:
                id: j9bxhtiyyl0iv
              format: uuid
            mode:
              $ref: '#/components/schemas/AutoscalingMode'
            polling_interval_seconds:
              type: integer
              x-stoplight:
                id: uone6zr48amok
              format: int32
            cooldown_period_seconds:
              type: integer
              x-stoplight:
                id: j2dapmjjjiafj
              format: int32
            scalers:
              type: array
              x-stoplight:
                id: oyhxgvwg36ixz
              minItems: 1
              items:
                $ref: '#/components/schemas/KedaScalerResponse'
      description: ''
    KedaTriggerAuthenticationRequest:
      title: KedaTriggerAuthenticationRequest
      x-stoplight:
        id: wp51tmturog3b
      type: object
      required:
        - name
      properties:
        name:
          type: string
          x-stoplight:
            id: ka4ltf1usuola
        config_yaml:
          type: string
          x-stoplight:
            id: 65znz6jclbew5
          description: Optional raw KEDA TriggerAuthentication YAML configuration.
    KedaTriggerAuthenticationResponse:
      title: KedaTriggerAuthenticationResponse
      x-stoplight:
        id: 7mm4a4sk9jhz3
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          x-stoplight:
            id: ssejnexbsra11
          required:
            - organization_id
            - name
          properties:
            organization_id:
              type: string
              x-stoplight:
                id: akxa3zctvjj5h
            name:
              type: string
              x-stoplight:
                id: gpvwed95xygk1
            config_yaml:
              type: string
              x-stoplight:
                id: r5lmrzakyk9o6
              description: ' Optional raw KEDA TriggerAuthentication YAML configuration.'
    KedaTriggerAuthenticationResponseList:
      title: KedaTriggerAuthenticationResponseList
      x-stoplight:
        id: dpalux2mc7v8t
      type: object
      properties:
        results:
          type: array
          x-stoplight:
            id: md92njfinutyy
          items:
            $ref: '#/components/schemas/KedaTriggerAuthenticationResponse'
    KedaScalerRequest:
      title: KedaScalerRequest
      x-stoplight:
        id: hfn4tfrtivkcs
      type: object
      required:
        - scaler_type
        - role
      properties:
        scaler_type:
          type: string
          x-stoplight:
            id: 3ba9iisjwqgsp
        enabled:
          type: boolean
          x-stoplight:
            id: 9m67trg9m0ioz
        role:
          $ref: '#/components/schemas/KedaScalerRole'
        config_json:
          type: object
          x-stoplight:
            id: si5ekni2hc6w9
        config_yaml:
          type: string
          x-stoplight:
            id: 8c7vktd7svl30
        trigger_authentication:
          $ref: '#/components/schemas/KedaTriggerAuthenticationRequest'
    KedaScalerResponse:
      title: KedaScalerResponse
      x-stoplight:
        id: gaaqg32ivl48h
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          x-stoplight:
            id: 74tt3hgf95nfe
          required:
            - scaler_type
            - enabled
            - role
          properties:
            scaler_type:
              type: string
              x-stoplight:
                id: 1ckp76ziimkg4
            enabled:
              type: boolean
              x-stoplight:
                id: 0dnjwnlkuj3kp
            role:
              $ref: '#/components/schemas/KedaScalerRole'
            config_json:
              type: object
              nullable: true
            config_yaml:
              type: string
              nullable: true
            trigger_authentication:
              $ref: '#/components/schemas/KedaTriggerAuthenticationResponse'
    AutoscalingPolicyResponse:
      title: AutoscalingPolicyResponse
      x-stoplight:
        id: mjawsx6obi237
      oneOf:
        - $ref: '#/components/schemas/KedaAutoscalingResponse'
      discriminator:
        propertyName: mode
        mapping:
          KEDA: '#/components/schemas/KedaAutoscalingResponse'
    ClusterLabelsGroup:
      title: ClusterLabelsGroup
      x-stoplight:
        id: mmho7lnvhxeqm
      type: object
      properties:
        id:
          type: string
          x-stoplight:
            id: 3b5pacfwyt1p2
          format: uuid
    ClusterLabelsGroupList:
      title: ClusterLabelsGroupList
      x-stoplight:
        id: imn8c9l4fab56
      type: array
      items:
        $ref: '#/components/schemas/ClusterLabelsGroup'

    SecretManagerAccessRequestList:
      title: SecretManagerAccessRequestList
      type: array
      items:
        $ref: '#/components/schemas/SecretManagerAccessRequest'
    SecretManagerAccessRequest:
      type: object
      required:
        - name
        - endpoint
        - authentication
      properties:
        id:
          type: string
          format: uuid
          nullable: true
        name:
          type: string
        endpoint:
          $ref: '#/components/schemas/SecretManagerEndpointConfigurationDto'
        authentication:
          $ref: '#/components/schemas/SecretManagerAuthenticationDto'
    SecretManagerAccessList:
      title: SecretManagerAccessList
      type: array
      items:
        $ref: '#/components/schemas/SecretManagerAccess'
    SecretManagerAccess:
      type: object
      required:
        - id
        - name
        - created_at
        - updated_at
        - endpoint
        - authentication
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        endpoint:
          $ref: '#/components/schemas/SecretManagerEndpointConfigurationDto'
        authentication:
          $ref: '#/components/schemas/SecretManagerAuthenticationDto'
    SecretManagerEndpointConfigurationDto:
      oneOf:
        - $ref: '#/components/schemas/AwsSecretManagerEndpointDto'
        - $ref: '#/components/schemas/AwsParameterStoreEndpointDto'
        - $ref: '#/components/schemas/GcpSecretManagerEndpointDto'
      discriminator:
        propertyName: mode
        mapping:
          AWS_SECRET_MANAGER: '#/components/schemas/AwsSecretManagerEndpointDto'
          AWS_PARAMETER_STORE: '#/components/schemas/AwsParameterStoreEndpointDto'
          GCP_SECRET_MANAGER: '#/components/schemas/GcpSecretManagerEndpointDto'
    AwsSecretManagerEndpointDto:
      type: object
      required:
        - mode
        - region
      properties:
        mode:
          type: string
          enum: [AWS_SECRET_MANAGER]
        region:
          type: string
    AwsParameterStoreEndpointDto:
      type: object
      required:
        - mode
        - region
      properties:
        mode:
          type: string
          enum: [AWS_PARAMETER_STORE]
        region:
          type: string
    GcpSecretManagerEndpointDto:
      type: object
      required:
        - mode
        - region
        - project_id
      properties:
        mode:
          type: string
          enum: [GCP_SECRET_MANAGER]
        region:
          type: string
        project_id:
          type: string
    SecretManagerAuthenticationDto:
      oneOf:
        - $ref: '#/components/schemas/AutomaticallyConfiguredAuthDto'
        - $ref: '#/components/schemas/AwsRoleArnAuthDto'
        - $ref: '#/components/schemas/AwsStaticCredentialsAuthDto'
        - $ref: '#/components/schemas/GcpJsonCredentialsAuthDto'
      discriminator:
        propertyName: mode
        mapping:
          AUTOMATICALLY_CONFIGURED: '#/components/schemas/AutomaticallyConfiguredAuthDto'
          AWS_ROLE_ARN: '#/components/schemas/AwsRoleArnAuthDto'
          AWS_STATIC_CREDENTIALS: '#/components/schemas/AwsStaticCredentialsAuthDto'
          GCP_JSON_CREDENTIALS: '#/components/schemas/GcpJsonCredentialsAuthDto'
    AutomaticallyConfiguredAuthDto:
      type: object
      required:
        - mode
      properties:
        mode:
          type: string
          enum: [AUTOMATICALLY_CONFIGURED]
    AwsRoleArnAuthDto:
      type: object
      required:
        - mode
        - role_arn
      properties:
        mode:
          type: string
          enum: [AWS_ROLE_ARN]
        role_arn:
          type: string
    AwsStaticCredentialsAuthDto:
      type: object
      required:
        - mode
        - region
        - access_key
      properties:
        mode:
          type: string
          enum: [AWS_STATIC_CREDENTIALS]
        region:
          type: string
        access_key:
          type: string
        secret_key:
          type: string
          nullable: true
    GcpJsonCredentialsAuthDto:
      type: object
      required:
        - mode
      properties:
        mode:
          type: string
          enum: [GCP_JSON_CREDENTIALS]
        json_credentials:
          type: string
          nullable: true
          description: The json must be base64 encoded

    ClusterEnvironmentResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ClusterEnvironmentResponse'
    ClusterEnvironmentResponse:
      type: object
      required:
        - environment_id
        - environment_name
        - project_id
        - project_name
        - services
      properties:
        environment_id:
          type: string
          format: uuid
        environment_name:
          type: string
        project_id:
          type: string
          format: uuid
        project_name:
          type: string
        services:
          type: array
          items:
            $ref: '#/components/schemas/ClusterEnvironmentServiceResponse'
    ClusterEnvironmentServiceResponse:
      type: object
      required:
        - id
        - name
        - type
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        type:
          $ref: '#/components/schemas/LinkedServiceTypeEnum'
    ArgocdAppResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - name
            - service_type
            - namespace
            - environment
            - environment_id
            - cluster_id
            - icon_uri
          properties:
            name:
              type: string
              description: name is case insensitive
            service_type:
              $ref: '#/components/schemas/ServiceTypeEnum'
            namespace:
              type: string
            environment:
              $ref: '#/components/schemas/ReferenceObject'
            environment_id:
              type: string
              format: uuid
            cluster_id:
              type: string
              format: uuid
            icon_uri:
              type: string
              format: uri
              default: app://qovery-console/argocd
              description: Icon URI representing the ArgoCD service.
            last_synced_at:
              type: string
              format: date-time
              nullable: true
            manifest_revision:
              type: string
              nullable: true
            git_repository:
              nullable: true
              allOf:
                - $ref: '#/components/schemas/ApplicationGitRepository'
      description: An ArgoCD service
    ArgocdAppManifestResponse:
      type: object
      required:
        - manifest_metadata
      properties:
        manifest_revision:
          type: string
          nullable: true
          description: Git revision the app is currently synced to
        manifest_metadata:
          type: object
          description: Raw enrichment data fetched from the ArgoCD managed-resources API
          properties:
            managed_resources:
              type: array
              items:
                $ref: '#/components/schemas/ArgocdManagedResource'
    ArgocdManagedResource:
      type: object
      properties:
        kind:
          type: string
          description: Kubernetes resource kind (e.g. Deployment, Service)
        name:
          type: string
        namespace:
          type: string
        targetState:
          type: string
          description: JSON-encoded desired Kubernetes manifest
        liveState:
          type: string
          description: JSON-encoded live Kubernetes manifest
    ProviderSecrets:
      type: object
      required:
        - results
      properties:
        results:
          type: array
          items:
            type: string
    ExternalSecretAssociatedServiceResponseList:
      type: object
      required:
        - results
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ExternalSecretAssociatedServiceResponse'
    ExternalSecretAssociatedServiceResponse:
      type: object
      required:
        - project_id
        - project_name
        - environment_id
        - environment_name
        - variable_name
        - external_secret_name
      properties:
        project_id:
          type: string
          format: uuid
        project_name:
          type: string
        environment_id:
          type: string
          format: uuid
        environment_name:
          type: string
        service_id:
          type: string
          format: uuid
        service_name:
          type: string
        service_type:
          $ref: '#/components/schemas/APIVariableScopeEnum'
        variable_name:
          type: string
        external_secret_name:
          type: string
    AgenticWorkflowResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - id
            - service_type
            - environment
            - name
            - slug
            - description
            - webhook_ip_allowlist
            - docker_fragment
            - enabled
            - mcp
            - outputs
            - model
            - project_repositories
            - agent_prompt
            - governance
            - resources
            - webhook
          properties:
            id:
              type: string
              format: uuid
            service_type:
              $ref: '#/components/schemas/ServiceTypeEnum'
            environment:
              $ref: '#/components/schemas/ReferenceObject'
            name:
              type: string
              description: name is case insensitive
            slug:
              type: string
              description: URL-friendly identifier derived from the name
            description:
              type: string
            webhook_ip_allowlist:
              type: array
              items:
                type: string
              description: CIDR ranges the incoming webhook request's source IP is checked against
            docker_fragment:
              type: string
            enabled:
              type: boolean
            mcp:
              type: string
              description: Raw JSON blob describing the MCP servers configured for this workflow
            outputs:
              type: array
              items:
                $ref: '#/components/schemas/AgenticWorkflowOutput'
            model:
              $ref: '#/components/schemas/AgenticWorkflowModelResponse'
            project_repositories:
              type: array
              items:
                $ref: '#/components/schemas/AgenticWorkflowProjectRepository'
            agent_prompt:
              type: string
            governance:
              $ref: '#/components/schemas/AgenticWorkflowGovernance'
            resources:
              $ref: '#/components/schemas/AgenticWorkflowResources'
            webhook:
              $ref: '#/components/schemas/AgenticWorkflowWebhook'
            icon_uri:
              type: string
              format: uri
              description: Icon URI representing the agentic workflow.
    AgenticWorkflowResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/AgenticWorkflowResponse'
    AgenticWorkflowRequest:
      allOf:
        - required:
            - name
          properties:
            name:
              type: string
              description: name is case insensitive
            description:
              type: string
              default: ''
            webhook_ip_allowlist:
              type: array
              items:
                type: string
              default: []
              description: CIDR ranges the incoming webhook request's source IP is checked against
            docker_fragment:
              type: string
              default: ''
            enabled:
              type: boolean
              default: true
            mcp:
              type: string
              default: ''
              description: Raw JSON blob describing the MCP servers configured for this workflow
            outputs:
              type: array
              items:
                $ref: '#/components/schemas/AgenticWorkflowOutput'
              default: []
            model:
              $ref: '#/components/schemas/AgenticWorkflowModelRequest'
            project_repositories:
              type: array
              items:
                $ref: '#/components/schemas/AgenticWorkflowProjectRepository'
              default: []
            agent_prompt:
              type: string
              default: ''
            governance:
              $ref: '#/components/schemas/AgenticWorkflowGovernance'
            resources:
              $ref: '#/components/schemas/AgenticWorkflowResources'
    AgenticWorkflowGovernance:
      type: object
      required:
        - host_allowlist
      properties:
        host_allowlist:
          type: array
          items:
            type: string
          default: []
          description: Hostnames the agent is allowed to reach
    AgenticWorkflowModelType:
      type: string
      enum:
        - CLAUDE
        - BEDROCK
    AgenticWorkflowModelRequest:
      type: object
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/AgenticWorkflowModelType'
        api_key:
          type: string
          default: ''
          writeOnly: true
          description: Write-only. Provider API key; accepted on create/edit but never returned in responses.
        settings:
          type: string
          default: ''
    AgenticWorkflowModelResponse:
      type: object
      required:
        - type
        - settings
      properties:
        type:
          $ref: '#/components/schemas/AgenticWorkflowModelType'
        settings:
          type: string
    AgenticWorkflowHeader:
      type: object
      required:
        - name
        - value
      properties:
        name:
          type: string
        value:
          type: string
    AgenticWorkflowOutput:
      type: object
      required:
        - name
      properties:
        name:
          type: string
        url:
          type: string
          nullable: true
        headers:
          type: array
          items:
            $ref: '#/components/schemas/AgenticWorkflowHeader'
          default: []
        instructions:
          type: string
          default: ''
    AgenticWorkflowProjectRepository:
      type: object
      required:
        - url
        - branch
      properties:
        url:
          type: string
        branch:
          type: string
        git_token_id:
          type: string
          format: uuid
          nullable: true
          description: |
            Qovery git token id used to clone the repository.
            Omit it (or send null) for a public repository, which is cloned without credentials.
    AgenticWorkflowResources:
      type: object
      required:
        - cpu_milli
        - ram_mib
        - gpu
        - storage_gib
      properties:
        cpu_milli:
          type: integer
          default: 1000
          description: CPU allocated to the workflow, in milli CPU. Used as both request and limit.
        ram_mib:
          type: integer
          default: 1024
          description: RAM allocated to the workflow, in MiB. Used as both request and limit.
        gpu:
          type: integer
          default: 0
          description: Number of GPUs. Accepted and stored, but not yet applied by the engine.
        storage_gib:
          type: integer
          default: 0
          description: Storage size in GiB. Accepted and stored, but not yet applied by the engine.
    AgenticWorkflowWebhook:
      type: object
      required:
        - url
      properties:
        url:
          type: string
  responses:
    '204':
      description: no content
    '400':
      description: Bad request
    '401':
      description: Access token is missing or invalid
    '403':
      description: Access forbidden
    '404':
      description: Resource not found
    204-deletion:
      description: The resource was deleted successfully
  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" '''
security:
  - bearerAuth: []
  - ApiKeyAuth: []
