openapi: 3.0.0 info: version: 1.0.4 title: Qovery Account Info Application Custom Domain API description: '- Qovery is the fastest way to deploy your full-stack apps on any Cloud provider. - ℹ️ The API is stable and still in development. ' contact: name: Qovery Product Team url: https://www.qovery.com email: support+api+documentation@qovery.com x-logo: url: https://console.qovery.com/assets/logos/logo-white.svg altText: Qovery servers: - url: https://api.qovery.com security: - bearerAuth: [] - ApiKeyAuth: [] tags: - name: Application Custom Domain paths: /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' components: responses: '404': description: Resource not found 204-deletion: description: The resource was deleted successfully '403': description: Access forbidden '400': description: Bad request '401': description: Access token is missing or invalid parameters: customDomainId: name: customDomainId in: path description: Custom Domain ID required: true schema: type: string format: uuid applicationId: name: applicationId in: path description: Application ID required: true schema: type: string format: uuid schemas: 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 ' 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 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.\nThere are 2 successful statuses:\n * `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`\n * `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`\n * `DOMAIN_NOT_CONFIGURED`: the domain is not configured, look at the `error_details` field for more information \n * `DOMAIN_LINKED_TO_WRONG_HOST`: the domain has CNAME(s) that matches a different host than your Load Balancer one\n * `GENERIC_FAILURE`: an error occured when attempting to validate your domain, look at the `error_details` field for more information\n" CustomDomainStatusEnum: type: string enum: - VALIDATION_PENDING example: VALIDATION_PENDING CustomDomainResponseList: type: object properties: results: type: array items: $ref: '#/components/schemas/CustomDomain' 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 ' 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 CheckedCustomDomainsResponse: title: CheckedCustomDomainsResponse type: object required: - results properties: results: type: array items: $ref: '#/components/schemas/CheckedCustomDomainResponse' securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT description: 'JWT tokens should be used with OIDC account (human to machine). JWT tokens used by the Qovery console to communicate with the API have a TTL. Curl Example '' curl https://console.qovery.com/organization -H "Authorization: Bearer $qovery_token" ''' ApiKeyAuth: type: apiKey in: header name: Authorization description: 'Token API are generated by Qovery to manage machine to machine interaction and do not have a TTL. Curl Example '' curl https://console.qovery.com/organization -H "Authorization: Token $qovery_token" ''' x-tagGroups: - name: Organization tags: - Organization Main Calls - Organization Api Token - Organization Account Git Repositories - Organization Cluster Lock - Organization Webhook - Organization Custom Role - Organization Event - Organization Annotations Group - Organization Labels Group - Organization Enterprise Connection - Projects - Members - Billing - Clusters - Cloud Provider - Cloud Provider Credentials - Github App - Container Registries - Helm Repositories - name: Project tags: - Project Main Calls - Environments - Project Deployment Rule - Project Environment Variable - Project Secret - name: Environment tags: - Environment Main Calls - Applications - Containers - Databases - Jobs - Helms - Terraforms - Environment Actions - Environment Logs - Environment Deployment History - Environment Deployment Rule - Environment Variable - Environment Secret - Environment Export - name: Deployment Stage tags: - Deployment Stage Main Calls - name: Application tags: - Application Main Calls - Application Actions - Application Configuration - Application Custom Domain - Application Database - Application Logs - Application Deployment Restriction - Application Deployment History - Application Environment Variable - Application Secret - Application Annotations Group - name: Container tags: - Container Main Calls - Container Actions - Container Configuration - Container Custom Domain - Container Database - Container Logs - Container Deployment History - Container Environment Variable - Container Secret - Container Annotations Group - name: Database tags: - Database Main Calls - Database Actions - Database Applications - Database Deployment History - Database Containers - Database Application - Database Container - Backups - Database Annotations Group - name: Job tags: - Job Main Calls - Job Actions - Job Configuration - Job Custom Domain - Job Deployment Restriction - Job Deployment History - Job Environment Variable - Job Secret - Job Annotations Group - name: Helm tags: - Helm Main Calls - Helm Actions - Helm Configuration - Helm Custom Domain - Helm Deployment Restriction - Helm Deployment History - name: Terraform tags: - Terraform Main Calls - Terraform Actions - Terraform Configuration - Terraform Deployment Restriction - Terraform Deployment History - name: Account tags: - Account Info - Git repositories - Referral & Rewards - name: Git tags: - Git repositories - name: Variable tags: - Variable Main Calls - name: Lifecycle Template tags: - Lifecycle Template Main Calls - name: Admin tags: - User Sign Up - name: Alerting tags: - Alert Receivers - Alert Rules