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://raw.githubusercontent.com/Qovery/public-resources/master/qovery_new_logo_white.svg'
    altText: Qovery
tags:
  - name: Account
  - name: Account Info
  - name: Admin
  - 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: 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: 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: Cloud Provider
  - name: Cloud Provider Credentials
  - name: Clusters
  - 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 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: Terraforms
  - name: Terraform Main Calls
  - 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
x-tagGroups:
  - name: Organization
    tags:
      - Organization Main Calls
      - Organization Api Token
      - Organization Account Git Repositories
      - Organization Cluster Lock
      - Organization Webhook
      - Organization Custom Role
      - Organization Event
      - Organization Annotations Group
      - Organization Labels Group
      - Organization Enterprise Connection
      - Projects
      - Members
      - Billing
      - Clusters
      - Cloud Provider
      - Cloud Provider Credentials
      - Github App
      - Container Registries
      - Helm Repositories
  - name: Project
    tags:
      - Project Main Calls
      - Environments
      - Project Deployment Rule
      - Project Environment Variable
      - Project Secret
  - name: Environment
    tags:
      - Environment Main Calls
      - Applications
      - Containers
      - Databases
      - Jobs
      - Helms
      - Terraforms
      - Environment Actions
      - Environment Logs
      - Environment Deployment History
      - Environment Deployment Rule
      - Environment Variable
      - Environment Secret
      - Environment Export
  - name: Deployment Stage
    tags:
      - Deployment Stage Main Calls
  - name: Application
    tags:
      - Application Main Calls
      - Application Actions
      - Application Configuration
      - Application Custom Domain
      - Application Database
      - Application Logs
      - Application Deployment Restriction
      - Application Deployment History
      - Application Environment Variable
      - Application Secret
      - Application Annotations Group
  - name: Container
    tags:
      - Container Main Calls
      - Container Actions
      - Container Configuration
      - Container Custom Domain
      - Container Database
      - Container Logs
      - Container Deployment History
      - Container Environment Variable
      - Container Secret
      - Container Annotations Group
  - name: Database
    tags:
      - Database Main Calls
      - Database Actions
      - Database Applications
      - Database Deployment History
      - Database Containers
      - Database Application
      - Database Container
      - Backups
      - Database Annotations Group
  - name: Job
    tags:
      - Job Main Calls
      - Job Actions
      - Job Configuration
      - Job Custom Domain
      - Job Deployment Restriction
      - Job Deployment History
      - Job Environment Variable
      - Job Secret
      - Job Annotations Group
  - name: Helm
    tags:
      - Helm Main Calls
      - Helm Actions
      - Helm Configuration
      - Helm Custom Domain
      - Helm Deployment Restriction
      - Helm Deployment History
  - name: Terraform
    tags:
      - Terraform Main Calls
      - Terraform Actions
      - Terraform Configuration
      - Terraform Deployment Restriction
      - Terraform Deployment History
  - name: Account
    tags:
      - Account Info
      - Git repositories
      - Referral & Rewards
  - name: Git
    tags:
      - Git repositories
  - name: Variable
    tags:
      - Variable Main Calls
  - name: Lifecycle Template
    tags:
      - Lifecycle Template Main Calls
  - name: Admin
    tags:
      - User Sign Up
servers:
  - url: 'https://api.qovery.com'
paths:
  /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}/apiToken':
    get:
      summary: List organization api tokens
      description: List organization api tokens
      operationId: listOrganizationApiTokens
      parameters:
        - $ref: '#/components/parameters/organizationId'
      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}/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}/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'
      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}/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'
      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'
  '/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'
  '/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}/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'
      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
      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
      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
      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'
  '/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'
  '/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'
      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
      operationId: AttachServiceToDeploymentStage
      parameters:
        - $ref: '#/components/parameters/deploymentStageId'
        - $ref: '#/components/parameters/serviceId'
      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'
      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}/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'
      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'
      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'
      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'
      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'
      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'
      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'
      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'
  /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: []
      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
  '/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'
                      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'
      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}/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'
  '/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}/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:
        - schema:
            type: boolean
          in: query
          name: delete_resources_only
  '/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'
      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/{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
  '/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
  '/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'
components:
  parameters:
    applicationId:
      name: applicationId
      in: path
      description: Application 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
    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
  schemas:
    TerraformBackend:
      oneOf:
        - type: object
          required:
            - kubernetes
          properties:
            kubernetes:
              $ref: '#/components/schemas/TerraformBackendKubernetes'
        - type: object
          required:
            - user_provided
          properties:
            user_provided:
              $ref: '#/components/schemas/TerraformBackendUserProvided'
      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
    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.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)
        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"}'
        hpa.cpu.average_utilization_percent:
          type: integer
          description: Percentage value of cpu 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
            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
    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
            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
              nullable: true
              description: Specify if the application will be automatically updated after receiving a new commit.
            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
    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
            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
    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'
    AwsStaticCredentialsRequest:
      required:
        - name
        - access_key_id
        - secret_access_key
      properties:
        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:
        - name
        - role_arn
      properties:
        name:
          type: string
        role_arn:
          type: string
          x-stoplight:
            id: my3ry04bqibxp
    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
            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'
    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
    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/AzureStaticClusterCredentials'
        - $ref: '#/components/schemas/GcpStaticClusterCredentials'
      discriminator:
        propertyName: object_type
        mapping:
          AWS: '#/components/schemas/AwsStaticClusterCredentials'
          AWS_ROLE: '#/components/schemas/AwsRoleClusterCredentials'
          SCW: '#/components/schemas/ScalewayClusterCredentials'
          OTHER: '#/components/schemas/GenericClusterCredentials'
          AZURE: '#/components/schemas/AzureStaticClusterCredentials'
          GCP: '#/components/schemas/GcpStaticClusterCredentials'
    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
    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'
          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'
        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
    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'
    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
    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
    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
    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
        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'
        metrics_parameters:
          $ref: '#/components/schemas/MetricsParameters'
        infrastructure_charts_parameters:
          $ref: '#/components/schemas/ClusterInfrastructureChartsParameters'
    ClusterResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Cluster'
    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
      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
          example: f73e3833-922a-48a5-9dbd-6163f43f9143-1656410242
        cluster_lock:
          $ref: '#/components/schemas/ClusterLock'
        last_deployment_date:
          type: string
          format: date-time
          example: '2022-06-22T14:20:17.733084815Z'
    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"
        loki.log_retention_in_week:
          type: integer
          description: For how long in week loki is going to keep logs of your applications
        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.
        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
        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
        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'
    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.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.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.
        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`
            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
                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
                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`.
    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
            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
    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
            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'
    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
    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.'
            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.
    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
        - 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
      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
          properties:
            commit:
              $ref: '#/components/schemas/Commit'
        - 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
        - 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'
    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'
    EnvironmentStatsResponseList:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/EnvironmentStats'
    EnvironmentStatuses:
      type: object
      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
        - 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 or BUIT_IN)
      enum:
        - VALUE
        - ALIAS
        - OVERRIDE
        - BUILT_IN
        - FILE
    GcpCredentialsRequest:
      type: object
      required:
        - name
        - gcp_credentials
      properties:
        name:
          type: string
        gcp_credentials:
          type: string
    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, ...)'
    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
            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
            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)
        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
    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'
    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
    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
        - 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
    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'
    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
      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
        - TERRAFORM_PROVIDER
      example: API
    OrganizationEventSubTargetType:
      type: string
      description: Type of the organization event
      nullable: true
      enum:
        - ADVANCED_SETTINGS
        - API_TOKEN
        - BILLING_INFO
        - 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
        - MEMBER_ROLE
        - PLAN
        - SECRET
        - 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
        - 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_FORCE_UNLOCK_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
        - FORCE_UNLOCK_STATE_SUCCEEDED
        - DEPLOY_FAILED
        - STOP_FAILED
        - DELETE_FAILED
        - UNINSTALL_FAILED
        - RESTART_FAILED
        - DEPLOYED_DRY_RUN_FAILED
        - FORCE_RUN_FAILED
        - FORCE_UNLOCK_STATE_FAILED
        - SHELL
        - SSO
        - 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
    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'
    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
        - 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'
    OrganizationLabelsGroupResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - name
            - labels
          properties:
            name:
              type: string
            labels:
              type: array
              items:
                $ref: '#/components/schemas/Label'
    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: BUSINESS & PROFESSIONAL are deprecated
      enum:
        - FREE
        - TEAM
        - TEAM_YEARLY
        - ENTERPRISE
        - ENTERPRISE_YEARLY
        - PROFESSIONAL
        - BUSINESS
    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
              properties:
                command:
                  type: array
                  items:
                    type: string
            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
          properties:
            name:
              type: string
            description:
              type: string
            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
    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
        - WAITING_DELETING
        - WAITING_RESTARTING
        - WAITING_RUNNING
        - WAITING_STOPPING
    ServiceActionEnum:
      type: string
      enum:
        - DEPLOY
        - DELETE
        - RESTART
        - STOP
        - UNKNOWN
    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
      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
      properties:
        action:
          $ref: '#/components/schemas/ServiceActionEnum'
        status:
          $ref: '#/components/schemas/ServiceActionStatusEnum'
    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
    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
    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
    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:
        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
      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:
        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:
        - QUEUEING
        - PROVISION_BUILDER
      description: |
        The name of the deployment step at the stage level:
        - 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
            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'
                - 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
    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
          x-stoplight:
            id: nwpjqw3bf7px0
        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
    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'
    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'
    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'
    KarpenterDefaultNodePoolOverride:
      title: KarpenterDefaultNodePoolOverride
      type: object
      properties:
        limits:
          $ref: '#/components/schemas/KarpenterNodePoolLimits'
    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
      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)'
    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
      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
        job_type:
          x-stoplight:
            id: jwtmqb1fq5a6m
          enum:
            - CRON
            - LIFECYCLE
    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
    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
    GkeInfrastructureOutputs:
      type: object
      required:
        - kind
        - cluster_name
        - cluster_self_link
      properties:
        kind:
          enum:
            - GKE
        cluster_name:
          type: string
        cluster_self_link:
          type: string
    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
    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
    TerraformRequest:
      title: TerraformRequest
      x-stoplight:
        id: 7ujl5rx7sd38b
      type: object
      required:
        - name
        - description
        - auto_approve
        - auto_deploy
        - terraform_files_source
        - terraform_variables_source
        - backend
        - provider
        - provider_version
        - job_resources
      properties:
        name:
          type: string
          x-stoplight:
            id: 6mlmgpyzwe46t
        description:
          type: string
          x-stoplight:
            id: ltvpnbhjz1oho
        auto_approve:
          type: boolean
          x-stoplight:
            id: zxy6gcsq4q6bc
        auto_deploy:
          type: boolean
          x-stoplight:
            id: 38iixcrw933wy
        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'
        provider:
          x-stoplight:
            id: w8o05dpbvcxp1
          enum:
            - TERRAFORM
        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
    TerraformResponse:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - name
            - timeout_sec
            - auto_approve
            - auto_deploy
            - icon_uri
            - service_type
            - terraform_variables_source
            - provider
            - 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_approve:
              type: boolean
            auto_deploy:
              type: boolean
            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'
            provider:
              x-stoplight:
                id: d2ykapq57se4s
              enum:
                - TERRAFORM
            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
      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
      properties:
        key:
          type: string
          description: The name of the variable
        sensitive:
          type: boolean
          description: Whether the variable is marked as sensitive
        default:
          type: string
          nullable: true
          description: 'The default value of the variable, or null if no default is provided'
    TerraformFilesSourceRequest:
      title: TerraformFilesSourceRequest
      x-stoplight:
        id: n91jcyroi7kt4
      type: object
      properties:
        id:
          type: string
          x-stoplight:
            id: vtpiblf7t37xq
    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
      properties:
        tf_var_file_paths:
          type: array
          x-stoplight:
            id: ua5d71it2yiu5
          items:
            x-stoplight:
              id: qsy17gz9fl3n3
            type: string
    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'
    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
        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.
        dry_run:
          type: boolean
          description: 'Deprecated: use action=PLAN instead.'
        force_unlock_state:
          type: boolean
          nullable: true
          description: 'Deprecated: use action=FORCE_UNLOCK instead.'
        action:
          type: string
          nullable: true
          description: Terraform action to execute.
          enum:
            - PLAN
            - PLAN_AND_APPLY
            - FORCE_UNLOCK
            - DESTROY
    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'
    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
    EnterpriseConnectionDto:
      title: EnterpriseConnectionDto
      type: object
      required:
        - default_role
        - enforce_group_sync
        - group_mappings
      properties:
        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
  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. Prefix your token with "Token ". Curl Example: curl https://console.qovery.com/organization -H "Authorization: Token $qovery_token"'
security:
  - ApiKeyAuth: []
  - bearerAuth: []
