openapi: 3.1.0
info:
title: Managed Database for PostgreSQL and MySQL Access Control List Domains API
description: "Managed Database for PostgreSQL and MySQL provides fully-managed relational Database Instances, with MySQL or PostgreSQL as database engines. The resource allows you to focus on development rather than administration or configuration. It comes with a high-availability mode, data replication, and automatic backups.\n\nCompared to traditional database management, which requires customers to provide their infrastructure and resources to manage their databases, Managed Database for PostgreSQL and MySQL Instance offers the user access to Database Instances without setting up the hardware or configuring the software. Scaleway handles the provisioning, manages the configuration, and provides useful features as high availability, automated backup, user management, and more.\n\n\n\n\n## Concepts\n\nRefer to our [dedicated concepts page](https://www.scaleway.com/en/docs/managed-databases-for-postgresql-and-mysql/concepts/) to find definitions of the different terms referring to Managed Database for PostgreSQL and MySQL.\n\n\n\n\n## Quickstart\n\n1. Configure your environment variables.\n \n This is an optional step that seeks to simplify your usage of the APIs.\n \n\n ```bash\n export SCW_ACCESS_KEY=\"\"\n export SCW_SECRET_KEY=\"\"\n export SCW_REGION=\"\"\n ```\n2. Edit the POST request payload you will use to create your Database Instance. Replace the parameters in the following example:\n ```json\n '{\n \"project_id\": \"d8e65f2b-cce9-40b7-80fc-6a2902db6826\",\n \"name\": \"myDB\",\n \"engine\": \"PostgreSQL-15\",\n \"tags\": [\"donnerstag\"],\n \"is_ha_cluster\": true,\n \"node_type\": \"db-pro2-xxs\",\n \"disable_backup\": false,\n \"user_name\": \"my_initial_user\",\n \"password\": \"thiZ_is_v0ry_s3cret\",\n \"volume_type\": \"sbs_5k\",\n \"volume_size\": \"30000000000\"\n }'\n ```\n\n | Parameter | Description |\n | :--------------- |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n | `project_id` | The ID of the Project you want to create your Database Instance in. To find your Project ID you can **[list the projects](/api/account/project-api/#path-projects-list-all-projects-of-an-organization)** or consult the **[Scaleway console](https://console.scaleway.com/project/settings)**. |\n | `engine` | **REQUIRED** Version ID of the database engine. To check the list of available engines you can use the following endpoint: `https://api.scaleway.com/rdb/v1/regions/$SCW_REGION/database-engines` |\n | `name` | Name of the Database Instance |\n | `node_type` | **REQUIRED** The node type. To check the list of available node types you can use the following endpoint: `https://api.scaleway.com/rdb/v1/regions/$SCW_REGION/node-types` |\n | `is_ha_cluster` | **BOOLEAN** Defines whether High Availability is enabled for the Database Instance |\n | `disable_backup` | **BOOLEAN** Defines whether automated backups are disabled for the Database Instance |\n | `tags` | The list of tags `[\"tag1\", \"tag2\", ...]` that will be associated with the Database Instance. Tags can be appended to the query of the [List Database Instances](#path-database-instances-list-database-instances) call to show results for only the Database Instances using a specific tag. You can also combine tags to list Database Instances that possess all the appended tags. |\n | `user_name` | **REQUIRED** Identifier of the default user, which is created concurrently with the Database Instance |\n | `password` | **REQUIRED** Password for the default user |\n | `volume_type` | Type of volume where data is stored. You can specify either local volume (`lssd`) or block volume (`bssd`, `sbs_5k` or `sbs_15k`). The default value is `lssd` |\n | `volume_size` | Volume size when volume_type is `bssd`, `sbs_5k` or `sbs_15k`. The value should be expressed in bytes. For example 30GB is expressed as 30000000000 |\n3. Create a Database Instance by running the following command. Make sure you include the payload you edited in the previous step.\n ```bash\n curl -X POST \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n \"Content-Type: application/json\" \\\n https://api.scaleway.com/rdb/v1/regions/$SCW_REGION/instances \\\n -d '{\n \"project_id\": \"d8e65f2b-cce9-40b7-80fc-6a2902db6826\",\n \"name\": \"myDB\",\n \"engine\": \"PostgreSQL-15\",\n \"tags\": [\"donnerstag\"],\n \"is_ha_cluster\": true,\n \"node_type\": \"db-pro2-xxs\",\n \"disable_backup\": false,\n \"user_name\": \"my_initial_user\",\n \"password\": \"thiZ_is_v0ry_s3cret\",\n \"volume_type\": \"sbs_5k\",\n \"volume_size\": \"30000000000\"\n }'\n ```\n4. List your Database Instances.\n ```bash\n curl -X GET \\\n -H \"Content-Type: application/json\" \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" https://api.scaleway.com/rdb/v1/regions/$SCW_REGION/instances\n ```\n\n You should get a response like the following:\n\n \n This is a response example, the UUIDs and IP address displayed are not real.\n \n\n ```json\n {\n \"id\": \"f5122f66-fb50-4cef-aa02-487ef4fc1af0\",\n \"name\": \"myDB\",\n \"organization_id\": \"895693aa-3915-4896-8761-c2923b008be7\",\n \"project_id\": \"d8e65f2b-cce9-40b7-80fc-6a2902db6826\",\n \"status\": \"ready\",\n \"engine\": \"PostgreSQL-15\",\n \"endpoint\": {\n \"ip\": \"198.51.100.0\",\n \"port\": 22245,\n \"name\": null\n },\n \"tags\": [\n \"donnerstag\"\n ],\n \"settings\": [],\n \"backup_schedule\": {\n \"frequency\": 24,\n \"retention\": 7,\n \"disabled\": true\n },\n \"is_ha_cluster\": true,\n \"read_replicas\": [],\n \"node_type\": \"db-pro2-xxs\",\n \"volume\": {\n \"type\": \"sbs_5k\",\n \"size\": 30000000000\n }\n \"created_at\": \"2019-04-19T16:24:52.591417Z\",\n \"region\": \"fr-par\"\n }\n ```\n5. Retrieve your Database Instance IP and port from the response.\n \n In the example above, the IP and port are `198.51.100.0` and `22245`, respectively.\n \n6. Connect to your Database Instance with the database client of the engine you selected.\n For MySQL, run the following command:\n ```bash\n mysql -h --port -p -u \n ```\n\n For PostgreSQL, run:\n ```bash\n psql -h -p -U -d rdb\n ```\n\n For the recurring example, the command would look like:\n\n ```bash\n psql -h 198.51.100.0 -p 22245 -U my_initial_user -d rdb\n ```\n7. Enter the database password that you defined upon creation.\n\nYou are now connected to your Managed Database.\n\n\n\nTo perform the following steps, you must first ensure that:\n - you have an account and are logged into the [Scaleway console](https://console.scaleway.com/organization)\n - you have created an [API key](https://www.scaleway.com/en/docs/iam/how-to/create-api-keys/) and that the API key has sufficient [IAM permissions](https://www.scaleway.com/en/docs/iam/reference-content/permission-sets/) to perform the actions described on this page.\n - you have [installed `curl`](https://curl.se/download.html)\n\n\n\n## Technical Information\n\n### Regions\n\nScaleway's infrastructure is spread across different [regions and Availability Zones](https://www.scaleway.com/en/docs/account/reference-content/products-availability/).\n\nManaged Database for PostgreSQL and MySQL is available in the Paris, Amsterdam and Warsaw regions, which are represented by the following path parameters:\n\n- `fr-par`\n- `nl-ams`\n- `pl-waw`\n\n### PostgreSQL specifications\n\n#### Versions\n\nScaleway Database for PostgreSQL supports PostgreSQL versions 11, 12, 13, 14 and 15.\n\n#### System\n\nDifferent modules are available for installation, including TimescaleDB and PostGIS. Refer to the [Managed Database for PostgreSQL and MySQL FAQ page](https://www.scaleway.com/en/docs/managed-databases-for-postgresql-and-mysql/faq/#which-postgresql-extensions-are-available) for an extensive list of PostgreSQL extensions.\n\n#### Database Management\n\nYou can create logical databases through the Scaleway console, the Scaleway APIs or SQL.\n\n- databases created using the Scaleway console or the API are owned by an internal system user. These are called \"managed databases\".\n- databases created using SQL will be owned by the creator. These are called \"unmanaged databases\".\n\n### MySQL specifications\n\n#### Versions\n\nScaleway Database for MySQL supports MySQL 8.\n\n#### System\n\n- only the [InnoDB engine](https://dev.mysql.com/doc/refman/8.0/en/innodb-storage-engine.html) is supported\n- the [Global Transaction Identifier (GTID)](https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-concepts.html) is enabled.\n- [`mysql_native_password`](https://dev.mysql.com/doc/refman/8.0/en/native-pluggable-authentication.html) (default) and [`caching_sha2_password`](https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html) authentication are supported.\n\n#### User Management\n\n- users with an `admin` role have access to all logical databases and can create new ones.\n- users created via the API are authenticated using the default authentication plugin, which can be changed in the settings.\n\n## Technical Limitations\n\n### PostgreSQL\n\n#### User Management\n\n- users with an `admin` role have `CREATEROLE` and `CREATEDB` privileges.\n- users do NOT have `SUPERUSER` nor `REPLICATION` privileges.\n- permission management through the Scaleway console or API is only possible for the \"managed databases\".\n\n#### Backup and restoration\n\nDatabases that have been backed up and then restored retain the user permission settings in use at the time of backup. If you delete users after backup and then restore your backup in the same database, or if you restore a backup to a different database with different or no users, the permissions configured for them continue to exist, but with no associated owner. This error will put a stop to the restoration process.\n\nTo avoid this issue, we recommend you re-create the users you deleted. In the occasion you restore the backup to a new database, you must create new users with the same names.\n\n## Going Further\n\nFor more information about Managed Database for PostgreSQL and MySQL, you can check out the following pages:\n\n* [Managed Database for PostgreSQL and MySQL Documentation](https://www.scaleway.com/en/docs/managed-databases/postgresql-and-mysql/)\n* [Managed Database for PostgreSQL and MySQL FAQ](https://www.scaleway.com/en/docs/managed-databases-for-postgresql-and-mysql/faq/)\n* [Scaleway Slack Community](https://scaleway-community.slack.com/) join the #database channel\n* [Contact our support team](https://console.scaleway.com/support/tickets)\n\n### How to migrate a database\n\nIf you wish to migrate existing databases to a Managed Database for PostgreSQL or MySQL, you can refer to the [Migrating existing databases to a Database Instance](https://www.scaleway.com/en/docs/tutorials/migrate-databases-instance/) tutorial page.\n\n### Troubleshoooting\n\n#### Disk full status\n\nIf your Database Instance uses local storage, your local volume might eventually approach full capacity and shift to `disk_full` mode. This mode grants you enough space to either [upgrade your node type](https://www.scaleway.com/en/docs/managed-databases-for-postgresql-and-mysql/how-to/upgrade-version/#how-to-change-the-node-type) or [clear out space in your volume](https://www.scaleway.com/en/docs/managed-databases-for-postgresql-and-mysql/troubleshooting/disk-full/)."
version: v1
servers:
- url: https://api.scaleway.com
tags:
- name: Domains
description: "A container is provided with an automatically generated domain through which it is accessible.\n \nAlternatively, custom domains can be assigned to containers in order to facilitate their use.\n"
paths:
/containers/v1/regions/{region}/domains:
get:
tags:
- Domains
operationId: ListDomains
summary: List all custom domains the caller can access (read permission).
description: "By default, the custom domains listed are ordered by creation date in ascending order. This can be modified via the `order_by` field.\n \nAdditional parameters can be set in the query to filter the output, such as `organization_id`, `project_id`, `namespace_id`, or `container_id`."
parameters:
- in: path
name: region
description: The region you want to target
required: true
schema:
type: string
enum:
- fr-par
- nl-ams
- pl-waw
- in: query
name: page
schema:
type: integer
format: int32
- in: query
name: page_size
schema:
type: integer
format: uint32
- in: query
name: order_by
schema:
$ref: '#/components/schemas/scaleway.containers.v1.ListDomainsRequest.OrderBy'
- in: query
name: organization_id
schema:
type: string
- in: query
name: project_id
schema:
type: string
- in: query
name: namespace_id
schema:
type: string
- in: query
name: container_id
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/scaleway.containers.v1.ListDomainsResponse'
security:
- scaleway: []
x-codeSamples:
- lang: cURL
source: "curl -X GET \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n \"https://api.scaleway.com/containers/v1/regions/{region}/domains\""
- lang: HTTPie
source: "http GET \"https://api.scaleway.com/containers/v1/regions/{region}/domains\" \\\n X-Auth-Token:$SCW_SECRET_KEY"
post:
tags:
- Domains
operationId: CreateDomain
summary: Create a new custom domain for the container with the specified ID.
parameters:
- in: path
name: region
description: The region you want to target
required: true
schema:
type: string
enum:
- fr-par
- nl-ams
- pl-waw
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/scaleway.containers.v1.Domain'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
container_id:
type: string
description: Unique ID of the container the domain will be assigned to.
hostname:
type: string
description: Domain assigned to the container.
tags:
type: array
description: A list of arbitrary tags associated with the domain.
items:
type: string
required:
- container_id
- hostname
x-properties-order:
- container_id
- hostname
- tags
security:
- scaleway: []
x-codeSamples:
- lang: cURL
source: "curl -X POST \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"container_id\":\"string\",\"hostname\":\"string\"}' \\\n \"https://api.scaleway.com/containers/v1/regions/{region}/domains\""
- lang: HTTPie
source: "http POST \"https://api.scaleway.com/containers/v1/regions/{region}/domains\" \\\n X-Auth-Token:$SCW_SECRET_KEY \\\n container_id=\"string\" \\\n hostname=\"string\""
/containers/v1/regions/{region}/domains/{domain_id}:
get:
tags:
- Domains
operationId: GetDomain
summary: Get the custom domain associated with the specified ID.
parameters:
- in: path
name: region
description: The region you want to target
required: true
schema:
type: string
enum:
- fr-par
- nl-ams
- pl-waw
- in: path
name: domain_id
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/scaleway.containers.v1.Domain'
security:
- scaleway: []
x-codeSamples:
- lang: cURL
source: "curl -X GET \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n \"https://api.scaleway.com/containers/v1/regions/{region}/domains/{domain_id}\""
- lang: HTTPie
source: "http GET \"https://api.scaleway.com/containers/v1/regions/{region}/domains/{domain_id}\" \\\n X-Auth-Token:$SCW_SECRET_KEY"
patch:
tags:
- Domains
operationId: UpdateDomain
summary: Update the domain associated with the specified ID.
description: Only fields present in the request are updated; others are left untouched.
parameters:
- in: path
name: region
description: The region you want to target
required: true
schema:
type: string
enum:
- fr-par
- nl-ams
- pl-waw
- in: path
name: domain_id
description: UUID of the domain to update.
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/scaleway.containers.v1.Domain'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
tags:
type: array
description: A list of arbitrary tags associated with the domain.
nullable: true
items:
type: string
x-properties-order:
- tags
security:
- scaleway: []
x-codeSamples:
- lang: cURL
source: "curl -X PATCH \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{}' \\\n \"https://api.scaleway.com/containers/v1/regions/{region}/domains/{domain_id}\""
- lang: HTTPie
source: "http PATCH \"https://api.scaleway.com/containers/v1/regions/{region}/domains/{domain_id}\" \\\n X-Auth-Token:$SCW_SECRET_KEY"
delete:
tags:
- Domains
operationId: DeleteDomain
summary: Delete the custom domain associated with the specified ID.
parameters:
- in: path
name: region
description: The region you want to target
required: true
schema:
type: string
enum:
- fr-par
- nl-ams
- pl-waw
- in: path
name: domain_id
description: UUID of the domain to delete.
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/scaleway.containers.v1.Domain'
security:
- scaleway: []
x-codeSamples:
- lang: cURL
source: "curl -X DELETE \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n \"https://api.scaleway.com/containers/v1/regions/{region}/domains/{domain_id}\""
- lang: HTTPie
source: "http DELETE \"https://api.scaleway.com/containers/v1/regions/{region}/domains/{domain_id}\" \\\n X-Auth-Token:$SCW_SECRET_KEY"
/functions/v1beta1/regions/{region}/domains:
get:
tags:
- Domains
operationId: ListDomains
summary: List all domain name bindings
description: List all domain name bindings in a specified region.
parameters:
- in: path
name: region
description: The region you want to target
required: true
schema:
type: string
enum:
- fr-par
- nl-ams
- pl-waw
- in: query
name: page
description: Page number.
schema:
type: integer
format: int32
- in: query
name: page_size
description: Number of domains per page.
schema:
type: integer
format: uint32
- in: query
name: order_by
description: Order of the domains.
schema:
type: string
enum:
- created_at_asc
- created_at_desc
- hostname_asc
- hostname_desc
default: created_at_asc
- in: query
name: function_id
description: UUID of the function the domain is associated with.
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/scaleway.functions.v1beta1.ListDomainsResponse'
security:
- scaleway: []
x-codeSamples:
- lang: cURL
source: "curl -X GET \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n \"https://api.scaleway.com/functions/v1beta1/regions/{region}/domains?function_id=string\""
- lang: HTTPie
source: "http GET \"https://api.scaleway.com/functions/v1beta1/regions/{region}/domains\" \\\n X-Auth-Token:$SCW_SECRET_KEY \\\n function_id==string"
post:
tags:
- Domains
operationId: CreateDomain
summary: Create a domain name binding
description: Create a domain name binding for the function with the specified ID.
parameters:
- in: path
name: region
description: The region you want to target
required: true
schema:
type: string
enum:
- fr-par
- nl-ams
- pl-waw
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/scaleway.functions.v1beta1.Domain'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
hostname:
type: string
description: Hostname to create.
function_id:
type: string
description: UUID of the function to associate the domain with.
x-properties-order:
- hostname
- function_id
security:
- scaleway: []
x-codeSamples:
- lang: cURL
source: "curl -X POST \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"function_id\":\"string\",\"hostname\":\"string\"}' \\\n \"https://api.scaleway.com/functions/v1beta1/regions/{region}/domains\""
- lang: HTTPie
source: "http POST \"https://api.scaleway.com/functions/v1beta1/regions/{region}/domains\" \\\n X-Auth-Token:$SCW_SECRET_KEY \\\n function_id=\"string\" \\\n hostname=\"string\""
/functions/v1beta1/regions/{region}/domains/{domain_id}:
get:
tags:
- Domains
operationId: GetDomain
summary: Get a domain name binding
description: Get a domain name binding for the function with the specified ID.
parameters:
- in: path
name: region
description: The region you want to target
required: true
schema:
type: string
enum:
- fr-par
- nl-ams
- pl-waw
- in: path
name: domain_id
description: UUID of the domain to get.
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/scaleway.functions.v1beta1.Domain'
security:
- scaleway: []
x-codeSamples:
- lang: cURL
source: "curl -X GET \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n \"https://api.scaleway.com/functions/v1beta1/regions/{region}/domains/{domain_id}\""
- lang: HTTPie
source: "http GET \"https://api.scaleway.com/functions/v1beta1/regions/{region}/domains/{domain_id}\" \\\n X-Auth-Token:$SCW_SECRET_KEY"
delete:
tags:
- Domains
operationId: DeleteDomain
summary: Delete a domain name binding
description: Delete a domain name binding for the function with the specified ID.
parameters:
- in: path
name: region
description: The region you want to target
required: true
schema:
type: string
enum:
- fr-par
- nl-ams
- pl-waw
- in: path
name: domain_id
description: UUID of the domain to delete.
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/scaleway.functions.v1beta1.Domain'
security:
- scaleway: []
x-codeSamples:
- lang: cURL
source: "curl -X DELETE \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n \"https://api.scaleway.com/functions/v1beta1/regions/{region}/domains/{domain_id}\""
- lang: HTTPie
source: "http DELETE \"https://api.scaleway.com/functions/v1beta1/regions/{region}/domains/{domain_id}\" \\\n X-Auth-Token:$SCW_SECRET_KEY"
/transactional-email/v1alpha1/regions/{region}/domains:
get:
tags:
- Domains
operationId: ListDomains
summary: List domains
description: Retrieve domains in a specific Project or in a specific Organization using the `region` parameter.
parameters:
- in: path
name: region
description: The region you want to target
required: true
schema:
type: string
enum:
- fr-par
- in: query
name: page
description: Requested page number. Value must be greater or equal to 1.
schema:
type: integer
format: int32
- in: query
name: page_size
description: Requested page size. Value must be between 1 and 1000.
schema:
type: integer
format: uint32
- in: query
name: project_id
description: (Optional) ID of the Project in which to list the domains. (UUID format)
schema:
type: string
example: 6170692e-7363-616c-6577-61792e636f6d
- in: query
name: status
description: (Optional) List domains under specific statuses.
schema:
type: array
items:
$ref: '#/components/schemas/scaleway.transactional_email.v1alpha1.Domain.Status'
- in: query
name: organization_id
description: (Optional) ID of the Organization in which to list the domains. (UUID format)
schema:
type: string
example: 6170692e-7363-616c-6577-61792e636f6d
- in: query
name: name
description: (Optional) Names of the domains to list.
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/scaleway.transactional_email.v1alpha1.ListDomainsResponse'
security:
- scaleway: []
x-codeSamples:
- lang: cURL
source: "curl -X GET \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n \"https://api.scaleway.com/transactional-email/v1alpha1/regions/{region}/domains\""
- lang: HTTPie
source: "http GET \"https://api.scaleway.com/transactional-email/v1alpha1/regions/{region}/domains\" \\\n X-Auth-Token:$SCW_SECRET_KEY"
post:
tags:
- Domains
operationId: CreateDomain
summary: Register a domain in a project
description: You must specify the `region`, `project_id` and `domain_name` to register a domain in a specific Project.
parameters:
- in: path
name: region
description: The region you want to target
required: true
schema:
type: string
enum:
- fr-par
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/scaleway.transactional_email.v1alpha1.Domain'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
project_id:
type: string
description: ID of the project to which the domain belongs. (UUID format)
example: 6170692e-7363-616c-6577-61792e636f6d
domain_name:
type: string
description: Fully qualified domain dame.
accept_tos:
type: boolean
description: Deprecated. Accept Scaleway's Terms of Service.
deprecated: true
autoconfig:
type: boolean
description: Activate auto-configuration of the domain's DNS zone.
x-properties-order:
- project_id
- domain_name
- accept_tos
- autoconfig
security:
- scaleway: []
x-codeSamples:
- lang: cURL
source: "curl -X POST \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"accept_tos\": false,\n \"autoconfig\": false,\n \"domain_name\": \"string\",\n \"project_id\": \"6170692e-7363-616c-6577-61792e636f6d\"\n }' \\\n \"https://api.scaleway.com/transactional-email/v1alpha1/regions/{region}/domains\""
- lang: HTTPie
source: "http POST \"https://api.scaleway.com/transactional-email/v1alpha1/regions/{region}/domains\" \\\n X-Auth-Token:$SCW_SECRET_KEY \\\n accept_tos:=false \\\n autoconfig:=false \\\n domain_name=\"string\" \\\n project_id=\"6170692e-7363-616c-6577-61792e636f6d\""
/transactional-email/v1alpha1/regions/{region}/domains/{domain_id}:
get:
tags:
- Domains
operationId: GetDomain
summary: Get information about a domain
description: Retrieve information about a specific domain using the `region` and `domain_id` parameters. Monitor your domain's reputation and improve **average** and **bad** reputation statuses, using your domain's **Email activity** tab on the [Scaleway console](https://console.scaleway.com/transactional-email/domains) to get a more detailed report. Check out our [dedicated documentation](https://www.scaleway.com/en/docs/managed-services/transactional-email/reference-content/understanding-tem-reputation-score/) to improve your domain's reputation.
parameters:
- in: path
name: region
description: The region you want to target
required: true
schema:
type: string
enum:
- fr-par
- in: path
name: domain_id
description: ID of the domain. (UUID format)
required: true
schema:
type: string
example: 6170692e-7363-616c-6577-61792e636f6d
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/scaleway.transactional_email.v1alpha1.Domain'
security:
- scaleway: []
x-codeSamples:
- lang: cURL
source: "curl -X GET \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n \"https://api.scaleway.com/transactional-email/v1alpha1/regions/{region}/domains/{domain_id}\""
- lang: HTTPie
source: "http GET \"https://api.scaleway.com/transactional-email/v1alpha1/regions/{region}/domains/{domain_id}\" \\\n X-Auth-Token:$SCW_SECRET_KEY"
patch:
tags:
- Domains
operationId: UpdateDomain
summary: Update a domain
description: Update a domain auto-configuration.
parameters:
- in: path
name: region
description: The region you want to target
required: true
schema:
type: string
enum:
- fr-par
- in: path
name: domain_id
description: ID of the domain to update. (UUID format)
required: true
schema:
type: string
example: 6170692e-7363-616c-6577-61792e636f6d
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/scaleway.transactional_email.v1alpha1.Domain'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
autoconfig:
type: boolean
description: (Optional) If set to true, activate auto-configuration of the domain's DNS zone.
nullable: true
x-properties-order:
- autoconfig
security:
- scaleway: []
x-codeSamples:
- lang: cURL
source: "curl -X PATCH \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{}' \\\n \"https://api.scaleway.com/transactional-email/v1alpha1/regions/{region}/domains/{domain_id}\""
- lang: HTTPie
source: "http PATCH \"https://api.scaleway.com/transactional-email/v1alpha1/regions/{region}/domains/{domain_id}\" \\\n X-Auth-Token:$SCW_SECRET_KEY"
/transactional-email/v1alpha1/regions/{region}/domains/{domain_id}/check:
post:
tags:
- Domains
operationId: CheckDomain
summary: Domain DNS check
description: Perform an immediate DNS check of a domain using the `region` and `domain_id` parameters.
parameters:
- in: path
name: region
description: The region you want to target
required: true
schema:
type: string
enum:
- fr-par
- in: path
name: domain_id
description: ID of the domain to check. (UUID format)
required: true
schema:
type: string
example: 6170692e-7363-616c-6577-61792e636f6d
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/scaleway.transactional_email.v1alpha1.Domain'
requestBody:
required: true
content:
application/json:
schema:
type: object
security:
- scaleway: []
x-codeSamples:
- lang: cURL
source: "curl -X POST \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{}' \\\n \"https://api.scaleway.com/transactional-email/v1alpha1/regions/{region}/domains/{domain_id}/check\""
- lang: HTTPie
source: "http POST \"https://api.scaleway.com/transactional-email/v1alpha1/regions/{region}/domains/{domain_id}/check\" \\\n X-Auth-Token:$SCW_SECRET_KEY"
/transactional-email/v1alpha1/regions/{region}/domains/{domain_id}/revoke:
post:
tags:
- Domains
operationId: RevokeDomain
summary: Delete a domain
description: You must specify the domain you want to delete by the `region` and `domain_id`. Deleting a domain is permanent and cannot be undone.
parameters:
- in: path
name: region
description: The region you want to target
required: true
schema:
type: string
enum:
- fr-par
- in: path
name: domain_id
description: ID of the domain to delete. (UUID format)
required: true
schema:
type: string
example: 6170692e-7363-616c-6577-61792e636f6d
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/scaleway.transactional_email.v1alpha1.Domain'
requestBody:
required: true
content:
application/json:
schema:
type: object
security:
- scaleway: []
x-codeSamples:
- lang: cURL
source: "curl -X POST \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{}' \\\n \"https://api.scaleway.com/transactional-email/v1alpha1/regions/{region}/domains/{domain_id}/revoke\""
- lang: HTTPie
source: "http POST \"https://api.scaleway.com/transactional-email/v1alpha1/regions/{region}/domains/{domain_id}/revoke\" \\\n X-Auth-Token:$SCW_SECRET_KEY"
/transactional-email/v1alpha1/regions/{region}/domains/{domain_id}/verification:
get:
tags:
- Domains
operationId: GetDomainLastStatus
summary: Display SPF, DKIM, DMARC and MX records status and potential errors
description: Display SPF, DKIM, DMARC and MX records status and potential errors, including the found records to make debugging easier.
parameters:
- in: path
name: region
description: The region you want to target
required: true
schema:
type: string
enum:
- fr-par
- in: path
name: domain_id
description: ID of the domain to get records status. (UUID format)
required: true
schema:
type: string
example: 6170692e-7363-616c-6577-61792e636f6d
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/scaleway.transactional_email.v1alpha1.DomainLastStatus'
security:
- scaleway: []
x-codeSamples:
- lang: cURL
source: "curl -X GET \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n \"https://api.scaleway.com/transactional-email/v1alpha1/regions/{region}/domains/{domain_id}/verification\""
- lang: HTTPie
source: "http GET \"https://api.scaleway.com/transactional-email/v1alpha1/regions/{region}/domains/{domain_id}/verification\" \\\n X-Auth-Token:$SCW_SECRET_KEY"
components:
schemas:
scaleway.transactional_email.v1alpha1.Domain:
type: object
properties:
id:
type: string
description: ID of the domain.
organization_id:
type: string
description: ID of the domain's Organization.
project_id:
type: string
description: ID of the domain's Project.
name:
type: string
description: Domain name (example.com).
status:
type: string
description: Status of the domain.
enum:
- unknown
- checked
- unchecked
- invalid
- locked
- revoked
- pending
- autoconfiguring
x-enum-descriptions:
values:
unknown: If unspecified, the status of the domain is unknown by default
checked: The domain is checked
unchecked: The domain is unchecked
invalid: The domain is invalid
locked: The domain is locked
revoked: The domain is revoked
pending: The domain is pending, waiting to be checked
autoconfiguring: The domain is in process of auto-configuration of the domain's DNS zone
default: unknown
created_at:
type: string
description: Date and time of domain creation. (RFC 3339 format)
format: date-time
example: '2022-03-22T12:34:56.123456Z'
nullable: true
next_check_at:
type: string
description: Date and time of the next scheduled check. (RFC 3339 format)
format: date-time
example: '2022-03-22T12:34:56.123456Z'
nullable: true
last_valid_at:
type: string
description: Date and time the domain was last valid. (RFC 3339 format)
format: date-time
example: '2022-03-22T12:34:56.123456Z'
nullable: true
revoked_at:
type: string
description: Date and time of the domain's deletion. (RFC 3339 format)
format: date-time
example: '2022-03-22T12:34:56.123456Z'
nullable: true
last_error:
type: string
description: Deprecated. Error message returned if the last check failed.
deprecated: true
nullable: true
spf_config:
type: string
description: Snippet of the SPF record to register in the DNS zone.
dkim_config:
type: string
description: DKIM public key to record in the DNS zone.
statistics:
type: object
description: Domain's statistics.
properties:
total_count:
type: integer
format: uint32
sent_count:
type: integer
format: uint32
failed_count:
type: integer
format: uint32
canceled_count:
type: integer
format: uint32
x-properties-order:
- total_count
- sent_count
- failed_count
- canceled_count
reputation:
type: object
description: The domain's reputation is available when your domain is checked and has sent enough emails.
properties:
status:
type: string
description: Status of your domain's reputation.
enum:
- unknown_status
- excellent
- good
- average
- bad
x-enum-descriptions:
values:
unknown_status: If unspecified, the status of the domain's reputation is unknown by default
excellent: The domain has an excellent reputation
good: The domain has a good reputation
average: The domain has an average reputation.
bad: The domain has a bad reputation.
default: unknown_status
score:
type: integer
description: A range from 0 to 100 that determines your domain's reputation score. A score of `0` means a bad domain reputation and a score of `100` means an excellent domain reputation.
format: uint32
scored_at:
type: string
description: Time and date the score was calculated. (RFC 3339 format)
format: date-time
example: '2022-03-22T12:34:56.123456Z'
nullable: true
previous_score:
type: integer
description: The previously-calculated domain's reputation score.
format: uint32
nullable: true
previous_scored_at:
type: string
description: Time and date the previous reputation score was calculated. (RFC 3339 format)
format: date-time
example: '2022-03-22T12:34:56.123456Z'
nullable: true
x-properties-order:
- status
- score
- scored_at
- previous_score
- previous_scored_at
records:
type: object
description: List of records to configure to validate a domain.
properties:
dmarc:
type: object
description: DMARC TXT record specification.
properties:
name:
type: string
description: Name of the DMARC TXT record.
value:
type: string
description: Value of the DMARC TXT record.
x-properties-order:
- name
- value
dkim:
type: object
description: DKIM TXT record specification.
properties:
name:
type: string
description: Name of the DKIM TXT record.
value:
type: string
description: Value of the DKIM TXT record.
x-properties-order:
- name
- value
spf:
type: object
description: SPF TXT record specification.
properties:
name:
type: string
description: Name of the SPF TXT record.
value:
type: string
description: Value of the SPF TXT record.
x-properties-order:
- name
- value
mx:
type: object
description: MX record specification.
properties:
name:
type: string
description: Name of the MX record.
value:
type: string
description: Value of the MX record.
x-properties-order:
- name
- value
x-properties-order:
- dmarc
- dkim
- spf
- mx
autoconfig:
type: boolean
description: Status of auto-configuration for the domain's DNS zone.
region:
type: string
description: The region you want to target
x-properties-order:
- id
- organization_id
- project_id
- name
- status
- created_at
- next_check_at
- last_valid_at
- revoked_at
- last_error
- spf_config
- dkim_config
- statistics
- reputation
- records
- autoconfig
- region
scaleway.containers.v1.ListDomainsResponse:
type: object
properties:
domains:
type: array
items:
$ref: '#/components/schemas/scaleway.containers.v1.Domain'
total_count:
type: integer
format: uint64
x-properties-order:
- domains
- total_count
scaleway.functions.v1beta1.ListDomainsResponse:
type: object
properties:
domains:
type: array
description: Array of domains.
items:
$ref: '#/components/schemas/scaleway.functions.v1beta1.Domain'
total_count:
type: integer
description: Total number of domains.
format: uint32
x-properties-order:
- domains
- total_count
scaleway.transactional_email.v1alpha1.ListDomainsResponse:
type: object
properties:
total_count:
type: integer
description: Number of domains that match the request (without pagination).
format: uint32
domains:
type: array
description: Single page of domains matching the requested criteria.
items:
$ref: '#/components/schemas/scaleway.transactional_email.v1alpha1.Domain'
x-properties-order:
- total_count
- domains
scaleway.functions.v1beta1.Domain:
type: object
properties:
id:
type: string
description: UUID of the domain.
hostname:
type: string
description: Hostname associated with the function.
function_id:
type: string
description: UUID of the function the domain is associated with.
url:
type: string
description: URL of the function.
status:
type: string
description: State of the domain.
enum:
- unknown
- ready
- deleting
- error
- creating
- pending
default: unknown
error_message:
type: string
description: Error message if the domain is in "error" state.
nullable: true
x-properties-order:
- id
- hostname
- function_id
- url
- status
- error_message
scaleway.transactional_email.v1alpha1.DomainLastStatus:
type: object
properties:
domain_id:
type: string
description: The ID of the domain.
domain_name:
type: string
description: The domain name (example.com).
spf_record:
type: object
description: The SPF record verification data.
properties:
status:
type: string
description: Status of the SPF record's configuration.
enum:
- unknown_record_status
- valid
- invalid
- not_found
x-enum-descriptions:
values:
unknown_record_status: If unspecified, the status of the domain's record is unknown by default
valid: The record is valid
invalid: The record is invalid
not_found: The record was not found
default: unknown_record_status
last_valid_at:
type: string
description: Time and date the SPF record was last valid. (RFC 3339 format)
format: date-time
example: '2022-03-22T12:34:56.123456Z'
nullable: true
error:
type: string
description: An error text displays in case the record is not valid.
nullable: true
x-properties-order:
- status
- last_valid_at
- error
dkim_record:
type: object
description: The DKIM record verification data.
properties:
status:
type: string
description: Status of the DKIM record's configuration.
enum:
- unknown_record_status
- valid
- invalid
- not_found
x-enum-descriptions:
values:
unknown_record_status: If unspecified, the status of the domain's record is unknown by default
valid: The record is valid
invalid: The record is invalid
not_found: The record was not found
default: unknown_record_status
last_valid_at:
type: string
description: Time and date the DKIM record was last valid. (RFC 3339 format)
format: date-time
example: '2022-03-22T12:34:56.123456Z'
nullable: true
error:
type: string
description: An error text displays in case the record is not valid.
nullable: true
x-properties-order:
- status
- last_valid_at
- error
dmarc_record:
type: object
description: The DMARC record verification data.
properties:
status:
type: string
description: Status of the DMARC record's configuration.
enum:
- unknown_record_status
- valid
- invalid
- not_found
x-enum-descriptions:
values:
unknown_record_status: If unspecified, the status of the domain's record is unknown by default
valid: The record is valid
invalid: The record is invalid
not_found: The record was not found
default: unknown_record_status
last_valid_at:
type: string
description: Time and date the DMARC record was last valid. (RFC 3339 format)
format: date-time
example: '2022-03-22T12:34:56.123456Z'
nullable: true
error:
type: string
description: An error text displays in case the record is not valid.
nullable: true
x-properties-order:
- status
- last_valid_at
- error
mx_record:
type: object
description: The MX record verification data.
properties:
status:
type: string
description: 'Status of the MX record''s configuration.
Status of the MX record''s configuration. This record is optional to validate a domain, but highly recommended.'
enum:
- unknown_record_status
- valid
- invalid
- not_found
x-enum-descriptions:
values:
unknown_record_status: If unspecified, the status of the domain's record is unknown by default
valid: The record is valid
invalid: The record is invalid
not_found: The record was not found
default: unknown_record_status
last_valid_at:
type: string
description: Time and date the MX record was last valid. (RFC 3339 format)
format: date-time
example: '2022-03-22T12:34:56.123456Z'
nullable: true
error:
type: string
description: An error text displays in case the record is not valid.
nullable: true
x-properties-order:
- status
- last_valid_at
- error
autoconfig_state:
type: object
description: The verification state of domain auto-configuration.
properties:
enabled:
type: boolean
description: Enable or disable the auto-configuration of domain DNS records.
autoconfigurable:
type: boolean
description: Whether the domain can be auto-configured or not.
reason:
type: string
description: The reason that the domain cannot be auto-configurable.
enum:
- unknown_reason
- permission_denied
- domain_not_found
x-enum-descriptions:
values:
unknown_reason: If not specified, the auto-configuration state is unknown by default
permission_denied: The token doesn't have the necessary permissions to manage the domain's DNS records
domain_not_found: The domain does not exist or isn't manageable by the token
default: unknown_reason
x-properties-order:
- enabled
- autoconfigurable
- reason
x-properties-order:
- domain_id
- domain_name
- spf_record
- dkim_record
- dmarc_record
- mx_record
- autoconfig_state
scaleway.containers.v1.ListDomainsRequest.OrderBy:
type: string
enum:
- created_at_asc
- created_at_desc
- hostname_asc
- hostname_desc
default: created_at_asc
scaleway.containers.v1.Domain:
type: object
properties:
id:
type: string
description: Domain unique ID. (UUID format)
example: 6170692e-7363-616c-6577-61792e636f6d
container_id:
type: string
description: Unique ID of the container the domain is assigned to. (UUID format)
example: 6170692e-7363-616c-6577-61792e636f6d
hostname:
type: string
description: Domain assigned to the container.
status:
type: string
description: Domain status.
enum:
- unknown_status
- creating
- updating
- deleting
- ready
- error
- locked
- locking
- upgrading
x-enum-descriptions:
values:
unknown_status: Unknown status
creating: Creating status. Resource is being created
updating: Updating status. Resource is being redeployed to match the desired configuration
deleting: Deleting status
ready: Ready status
error: Error status
locked: Locked status. Resource cannot be modified
locking: Locking status
upgrading: Upgrading status. Resource is being upgraded as part of a planned maintenance. No downtime is expected
default: unknown_status
error_message:
type: string
description: Domain last error message.
created_at:
type: string
description: Domain creation date. (RFC 3339 format)
format: date-time
example: '2022-03-22T12:34:56.123456Z'
nullable: true
updated_at:
type: string
description: Domain last update date. (RFC 3339 format)
format: date-time
example: '2022-03-22T12:34:56.123456Z'
nullable: true
tags:
type: array
description: A list of arbitrary tags associated with the domain.
items:
type: string
x-properties-order:
- id
- container_id
- hostname
- status
- error_message
- created_at
- updated_at
- tags
scaleway.transactional_email.v1alpha1.Domain.Status:
type: string
enum:
- unknown
- checked
- unchecked
- invalid
- locked
- revoked
- pending
- autoconfiguring
x-enum-descriptions:
values:
unknown: If unspecified, the status of the domain is unknown by default
checked: The domain is checked
unchecked: The domain is unchecked
invalid: The domain is invalid
locked: The domain is locked
revoked: The domain is revoked
pending: The domain is pending, waiting to be checked
autoconfiguring: The domain is in process of auto-configuration of the domain's DNS zone
default: unknown
securitySchemes:
scaleway:
in: header
name: X-Auth-Token
type: apiKey