Get Started
To create a new service, you need to make following API calls:
Get a list of available topologies:
curl --request GET 'https://api.skysql.com/provisioning/v1/topologies?service_type=transactional' \\ --header "X-API-Key: $API_KEY"
Example response:
[ { "id": "b34aa182-4c05-462f-8d4e-33a98de60803", "name": "standalone", "display_name": "Single Node Transactions", "service_type": "transactional", "storage_engine": "innodb", "order": 100 } ]
Get a list of available providers:
curl --request GET 'https://api.skysql.com/provisioning/v1/providers' \\ --header "X-API-Key: $API_KEY"
Example response:
[ { "id": "5a9c1675-ca54-4b3b-9da9-2ea617e45969", "name": "aws", "display_name": "Amazon AWS", "volume_size_min_gb": 8, "volume_size_max_gb": 2000, "iops_per_gb": 1, "iops_min": 100 } ]
Get a list of available regions:
curl --request GET 'https://api.skysql.com/provisioning/v1/regions?provider=aws' \\ --header "X-API-Key: $API_KEY"
Example response:
[ { "id": "eb5b9a88-cc6c-4c12-9306-44486b335357", "name": "eu-north-1", "region": "EMEA", "default": false, "provider": "aws", "foundation_tier_maintenance_window": "1st and 3rd Sat 8:00 PM UTC" } ]
Get a list of available instance sizes:
curl --request GET 'https://api.skysql.com/provisioning/v1/sizes?topology=standalone&provider=aws&architecture=amd64' \\ --header "X-API-Key: $API_KEY"
Example response:
[ { "id": "c0666e11-4a3b-11ed-8853-b278760e6ab5", "name": "sky-2x4", "display_name": "Sky-2x4", "service_type": "transactional", "provider": "aws", "tier": "foundation", "architecture": "amd64", "cpu": "2 vCPU", "ram": "4 GB", "updated_on": "2022-10-12T14:40:00Z", "created_on": "2022-10-12T14:40:00Z", "is_active": true, "topology": "standalone" } ]
Get a list of available versions:
curl --request GET 'https://api.skysql.com/provisioning/v1/versions?topology=standalone' \\ --header "X-API-Key: $API_KEY"
Example response:
[ { "id": "d4dd2755-5716-4be5-8e9c-b1437f0d109a", "name": "10.6.11-6-1", "version": "10.6.11-6", "topology": "standalone", "product": "server", "display_name": "Enterprise Server 10.6.11-6", "is_major": true, "release_date": "0001-01-01T00:00:00Z", "release_notes_url": "https://mariadb.com/docs/release-notes/mariadb-enterprise-server-10-6/10-6-11-6/" } ]
Important: Use
name
field from the response to create a service.version
anddisplay_name
fields are for display purposes only.Create a new service:
curl --request POST 'https://api.skysql.com/provisioning/v1/services' \\ --header "X-API-Key: $API_KEY" \\ --header "Content-Type: application/json" \\ --data-raw '{ "service_type": "transactional", "topology": "standalone", "provider": "aws", "region": "us-east-2", "name": "my-first-service", "architecture": "amd64", "nodes": 1, "size": "sky-2x8", "storage": 100, "ssl_enabled": true, "version": "10.6.11-6-1", "volume_type": "gp2" }'
The operation is asynchronous. You need to poll the service status until it has status
ready
orfailed
. If you need to create a new service with access through a private link you need to pass the following parameters:"endpoint_mechanism": "privateconnect", "endpoint_allowed_accounts": [ "[AWS account ID or GCP project ID]" ]
Get a service by ID to check status:
curl --request GET 'https://api.skysql.com/provisioning/v1/services/dbdwf40820593' \\ --header "X-API-Key: $API_KEY"
Example response:
{ "id": "dbdwf40820593", "name": "my-first-service", "status": "ready", }
Get service default credentials:
curl --request GET 'https://api.skysql.com/provisioning/v1/services/dbdwf40820593/security/credentials' \\ --header "X-API-Key: $API_KEY"
Add your IP address to the IP allowlist for the service
If you are not sure of your public IP address, you can use a lookup service, such as checkip.amazonaws.com
The allowlist accepts IPv4 addresses and IPv4 netblocks.
We will place our IP address in the SKYSQL_CLIENT_IP environment variable:
export SKYSQL_CLIENT_IP=`curl -sS checkip.amazonaws.com`
add our IP address to the allowlist:
curl -sS --location --request POST \\ --header "X-API-Key: $API_KEY" \\ --header "Accept: application/json" \\ --header "Content-type: application/json" \\ --data "{ \"ip_address\": \"${SKYSQL_CLIENT_IP}/32\" }" \\ https://api.skysql.com/provisioning/v1/services/${SKYSQL_SERVICE}/security/allowlist \\ | jq .
Stop a service:
curl --request POST 'https://api.skysql.com/provisioning/v1/services/dbdwf40820593/power' \\ --header "X-API-Key: $API_KEY" \\ --header "Content-Type: application/json" \\ --data-raw '{ "is_active": false }'
Start a service:
curl --request POST 'https://api.skysql.com/provisioning/v1/services/dbdwf40820593/power' \\ --header "X-API-Key: $API_KEY" \\ --header "Content-Type: application/json" \\ --data-raw '{ "is_active": true }'
Change storage size:
curl --request PATCH 'https://api.skysql.com/provisioning/v1/services/dbdwf40820593/storage/size' \\ --header "X-API-Key: $API_KEY" \\ --header "Content-Type: application/json" \\ --data-raw '{ "size": 200 }'
Delete service
curl --request DELETE 'https://api.skysql.com/provisioning/v1/services/dbdwf40820593' \\ --header "X-API-Key: $API_KEY"
Was this helpful?