https://api.transip.nl/v6
/ Introduction ¶
Welcome to the API documentation.
REST API V6
With the new REST API, you can manage all of your products in a RESTful way, this means that for most products we allow simple create, update, delete HTTP requests to manage this product collection.
This API provides a number of products or actions on sub-products, which we will call resources, an example of such a resource could be the Vps Backup resource, accessible at the following endpoint:
/v6/vps/{vpsName}/backups
Each resource can host a number of different actions which are accessible by different HTTP methods. Every resource action has documentation in which you can find using the panel on the left.
All requests and responses use JSON objects and arrays as data format.
Requests
Every API call can be made using HTTP request to the resource URL and the desired HTTP method. All requests should be made using the HTTPS protocol.
Methods
Method | Description |
---|---|
GET | Used for retrieving one or more resources, the response attributes can be used to modify the resource. |
POST | Used for creating new resources, see the documentation for the required and optional attributes. |
PUT | Used for updating a resource with new data, all existing data will be removed. |
PATCH | Used for partially updating a resource or calling a resource action like reverting a backup. |
DELETE | Used for deleting resources. |
If a GET action specifies request attributes, these could be put behind the URL using the http query syntax like:
?tags=test
Responses
Every response uses an HTTP status code, indicating the success or failure of your request.
HTTP statuses
In general, when a request succeeds, a 2xx HTTP status code is returned.
Code | Reason | Description |
---|---|---|
200 | OK | GET request succeeded. |
201 | Created | Resource is created using a POST request. The response contains an empty body. |
204 | No content | PUT, PATCH or DELETE request succeeded. The response contains an empty body. |
In case of an error, the following status codes could be returned.
Code | Reason | Description |
---|---|---|
400 | Bad Request | The API version or URL is invalid. |
401 | Unauthorized | There is something wrong with your authentication |
403 | Forbidden | You don’t have the necessary permissions to perform an operation. |
404 | Not Found | A resource was not found. |
405 | Method Not Allowed | You’re using an HTTP method on a resource which does not support it. |
406 | Not Acceptable | One or more required parameters are missing in the request. |
408 | Request Timeout | The request gets a timeout. |
409 | Conflict | Modification is not permitted at the moment. E.g. when a VPS is locked. |
422 | Unprocessable Entity | The input attributes are invalid, e.g. malformed JSON. |
429 | Too Many Request | The rate limit is exceeded. |
500 | Internal Server Error | There is a server error. |
501 | Not Implemented | The endpoint is not implemented. |
Links
GET requests may include additional links that can be used to navigate to related resources or pages.
Pages
Some resources allow pagination on their list requests. These would be GET request without a resource identifier, like /vps
or /domains
.
The default page size is unlimited. On the resources that support pagination, you can override this by setting using the pageSize
parameter.
For example: /vps?pageSize=100
When pagination is used, the following links will be shown:
-
first: The first page of the result set.
-
previous: The previous page of the result set.
-
next: The next page of the result set.
-
last: The last page of the result set.
These links will only be set when applicable. E.g. when the current page is the last, no ‘next’ and ‘last’ links will be present.
For example, the links section in a response for the first page could look like this:
{
"_links": {
"pages": [
{
"rel": "next",
"link": "https://api.transip.nl/v6/domains?pageSize=25&page=2"
},
{
"rel": "last",
"link": "https://api.transip.nl/v6/domains?pageSize=25&page=9"
}
]
}
}
Related resources
Responses of GET requests with an identifier may return additional links to related resources.
For example, when retrieving info about a domain, the following links will be rendered:
{
"_links": [
{
"rel": "self",
"link": "https://api.transip.nl/v6/domains/example.com"
},
{
"rel": "branding",
"link": "https://api.transip.nl/v6/domains/example.com/branding"
},
{
"rel": "contacts",
"link": "https://api.transip.nl/v6/domains/example.com/contacts"
},
{
"rel": "dns",
"link": "https://api.transip.nl/v6/domains/example.com/dns"
},
{
"rel": "nameservers",
"link": "https://api.transip.nl/v6/domains/example.com/nameservers"
},
{
"rel": "actions",
"link": "https://api.transip.nl/v6/domains/example.com/actions"
}
]
}
Authentication
In order to authenticate a request we make use of access tokens. These access tokens make use of the JSON Web Token standard.
To get an access token, you should first generate a key pair using the control panel. Then download the PHP authentication class, and put in your login username and private key.
You can also do this process manually by sending an HTTP POST request to ’https://api.transip.nl/v6/auth’ with a body containing your login and a nonce (any random string), and a signature header. The signature header should consist of a sha512 asn.1 hash of the full request body, sign using a private key that was generated in the control panel and base64 encode the generated signature.
Steps to create a signature
-
json encode the request body (example request body below)
-
sign the json encoded request body (openssl dgst -sha512 -sign)
-
base64 encode the signature that openssl generated
-
make a request to ’https://api.transip.nl/v6/auth’ with the header and body like the examples below
Example signature header
Signature: W+alqMNFaKxNjRpRzGcjrk5q1PXf50usve85PMHqXDPcDZTmZksVkqAFyR30XtJAXELbg2bukUrckPe7fBR10LvMY55cCHLfKf4sA6tpC8Ck5HcT7uLN27XGiJH3i2oDe/Kb93pU2q9kP+vDIQYJX28xFEHWOibXYgcMksHSH3YiyCWcBiQFS65Jsg5M/XhyU3qMISD7icHmk7/WPw1tSYGiMqJZVjaovIqzskXQcu5iC22wZA+5evj3rlSPj9UGZsDjg+TdP69gGJ2y4nrG3qbM2BhMpUs4E3FDHJW1ZZ3VUko0rwfBBoltAT94NQrA5LCP6pXLyA9eszyouBs8ywQ==
Example request body
{
"login": "test-user",
"nonce": "98475920834",
"read_only": false,
"expiration_time": "30 minutes",
"label": "add description",
"global_key": true
}
Setting the property global_key
to false will generate a token that can only be used by whitelisted IP’s
Access tokens have a default expiration time of 30 minutes.
You can override this by setting the expiration_time
property.
This has a maximum of 1 month.
The following example values are valid for the expiration_time
property:
-
3600 seconds
-
120 minutes
-
1 hour
-
48 hours
-
1 day
-
15 days
-
1 week
-
4 weeks
You can add a custom name to your access tokens by setting the label
property.
All your active access tokens can be managed in the control panel. You can revoke your tokens and generate new ones.
Use a header containing your access token in every request:
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImN3MiFSbDU2eDNoUnkjelM4YmdOIn0.eyJpc3MiOiJhcGkudHJhbnNpcC5ubCIsImF1ZCI6ImFwaS50cmFuc2lwLm5sIiwianRpIjoiY3cyIVJsNTZ4M2hSeSN6UzhiZ04iLCJpYXQiOjE1ODIyMDE1NTAsIm5iZiI6MTU4MjIwMTU1MCwiZXhwIjoyMTE4NzQ1NTUwLCJjaWQiOiI2MDQ0OSIsInJvIjpmYWxzZSwiZ2siOmZhbHNlLCJrdiI6dHJ1ZX0.fYBWV4O5WPXxGuWG-vcrFWqmRHBm9yp0PHiYh_oAWxWxCaZX2Rf6WJfc13AxEeZ67-lY0TA2kSaOCp0PggBb_MGj73t4cH8gdwDJzANVxkiPL1Saqiw2NgZ3IHASJnisUWNnZp8HnrhLLe5ficvb1D9WOUOItmFC2ZgfGObNhlL2y-AMNLT4X7oNgrNTGm-mespo0jD_qH9dK5_evSzS3K8o03gu6p19jxfsnIh8TIVRvNdluYC2wo4qDl5EW5BEZ8OSuJ121ncOT1oRpzXB0cVZ9e5_UVAEr9X3f26_Eomg52-PjrgcRJ_jPIUYbrlo06KjjX2h0fzMr21ZE023Gw
Rate limit
The rate limit for this API uses a sliding window of 15 minutes. Within this window, a maximum of 1000 requests can be made per user.
Every request returns the following headers, indicating the number of requests made within this window, the amount of requests remaining and the reset timestamp.
X-Rate-Limit-Limit: 1000
X-Rate-Limit-Remaining: 650
X-Rate-Limit-Reset: 1485875578
When this rate limit is exceeded, the response contains an error with HTTP status code: 429: Too many requests
.
Test mode
In test mode every GET
request is allowed, but all modification requests are fake, they are validated, but the actual modification is skipped.
This means that you are able to test your api calls without doing any modification to your production environment.
There are two different ways to test the api, you could use our test mode token or you could provide a test parameter using your own token (and thus play with your own data).
Demo token
If you use the following authorization header, you authenticate yourself as the demo user in test mode.
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImN3MiFSbDU2eDNoUnkjelM4YmdOIn0.eyJpc3MiOiJhcGkudHJhbnNpcC5ubCIsImF1ZCI6ImFwaS50cmFuc2lwLm5sIiwianRpIjoiY3cyIVJsNTZ4M2hSeSN6UzhiZ04iLCJpYXQiOjE1ODIyMDE1NTAsIm5iZiI6MTU4MjIwMTU1MCwiZXhwIjoyMTE4NzQ1NTUwLCJjaWQiOiI2MDQ0OSIsInJvIjpmYWxzZSwiZ2siOmZhbHNlLCJrdiI6dHJ1ZX0.fYBWV4O5WPXxGuWG-vcrFWqmRHBm9yp0PHiYh_oAWxWxCaZX2Rf6WJfc13AxEeZ67-lY0TA2kSaOCp0PggBb_MGj73t4cH8gdwDJzANVxkiPL1Saqiw2NgZ3IHASJnisUWNnZp8HnrhLLe5ficvb1D9WOUOItmFC2ZgfGObNhlL2y-AMNLT4X7oNgrNTGm-mespo0jD_qH9dK5_evSzS3K8o03gu6p19jxfsnIh8TIVRvNdluYC2wo4qDl5EW5BEZ8OSuJ121ncOT1oRpzXB0cVZ9e5_UVAEr9X3f26_Eomg52-PjrgcRJ_jPIUYbrlo06KjjX2h0fzMr21ZE023Gw
Test parameter
By providing the test parameter on any of your requests you can use the test mode while you are authenticated as your own user.
To give you an example, when you request a DELETE
on a vps with the following url /v6/vps/test-vps2?test=1 the actual delete is skipped. The same goes for any other type of modification.
Order requests
Some API calls, as the pre-generated would automatically be accepted, will generate an invoice. In case direct debit is activated on the customer account associated with the API key, payment will occur at a later stage. This is mostly the case with products and add-ons with automatic provisioning. In order to prevent accidental orders, each API call that generates an invoice has a warning outlined below its description in this API documentation.
Api specification
This documentation was generated from a api blueprint file. Download the raw APIB or OpenAPI specification
/ General ¶
Products ¶
This is the API endpoint for products.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/products"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"products": {
"vps": [
{
"name": "example-product-name",
"description": "This is an example product",
"price": 499,
"recurringPrice": 799
}
],
"vpsAddon": [
{
"name": "example-product-name",
"description": "This is an example product",
"price": 499,
"recurringPrice": 799
}
],
"haip": [
{
"name": "example-product-name",
"description": "This is an example product",
"price": 499,
"recurringPrice": 799
}
],
"bigStorage": [
{
"name": "example-product-name",
"description": "This is an example product",
"price": 499,
"recurringPrice": 799
}
],
"privateNetworks": [
{
"name": "example-product-name",
"description": "This is an example product",
"price": 499,
"recurringPrice": 799
}
]
}
}
List all products
GET/products
This endpoint returns a list of products with their name, description and price.
These product names can be used upon creating certain resources as it specifies which type of that resource you would like, for example, a certain type of HA-IP or Vps.
- products
- vps
A list of vps products
- name
Name of the product
- description
Describes this product
- price
Price in cents
- recurringPrice
The recurring price for the product in cents
- vpsAddon
A list of vps addons
- name
Name of the product
- description
Describes this product
- price
Price in cents
- recurringPrice
The recurring price for the product in cents
- haip
A list of haip products
- name
Name of the product
- description
Describes this product
- price
Price in cents
- recurringPrice
The recurring price for the product in cents
- bigStorage
A list of big storage products
- name
Name of the product
- description
Describes this product
- price
Price in cents
- recurringPrice
The recurring price for the product in cents
- privateNetworks
A list of private network products
- name
Name of the product
- description
Describes this product
- price
Price in cents
- recurringPrice
The recurring price for the product in cents
Elements ¶
This is the API endpoint for productsElements.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/products/vps-bladevps-x4/elements"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"productElements": [
{
"name": "ipv4Addresses",
"description": "amount of ipv4Addresses for a vps",
"amount": 1
}
]
}
List specifications for product
GET/products/{productName}/elements
Get the specifications for a product.
This will list all the different elements for a product with the amount that it comes with. e.g. a vps-bladevps-x4
has 2 CPU-core elements.
- productName
string
(required) Example: vps-bladevps-x4Product
- productElements
- name
Name of the product element
- description
Describes this product element
- amount
Amount
AvailabilityZone ¶
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/availability-zones"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"availabilityZones": [
{
"name": "ams0",
"country": "nl",
"isDefault": true
}
]
}
List available AvailabilityZones
GET/availability-zones
Lists the available AvailabilityZones.
- availabilityZones
- name
Name of AvailabilityZone
- country
The 2 letter code for the country the AvailabilityZone is in
- isDefault
If true this is the default zone new VPSes and clones are created in
ApiTest ¶
This is the API endpoint to do a simple token or application test
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/api-test"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"ping": "pong"
}
API Test
GET/api-test
Returns pong. A simple test resource to make sure everything is working
- ping
/ Account ¶
Invoices ¶
This is the API endpoint for invoices.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/invoices"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"invoices": [
{
"invoiceNumber": "F0000.1911.0000.0004",
"creationDate": "2020-01-01",
"payDate": "2020-01-01",
"dueDate": "2020-02-01",
"invoiceStatus": "waitsforpayment",
"currency": "EUR",
"totalAmount": 1000,
"totalAmountInclVat": 1240
}
]
}
List all invoices
GET/invoices
Returns a list of all invoices attached to your account.
This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.
- invoices
- invoiceNumber
Invoice number
- creationDate
Invoice creation date
- payDate
Invoice paid date
- dueDate
Invoice deadline
- invoiceStatus
Invoice status
- currency
Currency used for this invoice
- totalAmount
Invoice total (displayed in cents)
- totalAmountInclVat
Invoice total including VAT (displayed in cents)
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/invoices/F0000.1911.0000.0004"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"invoice": {
"invoiceNumber": "F0000.1911.0000.0004",
"creationDate": "2020-01-01",
"payDate": "2020-01-01",
"dueDate": "2020-02-01",
"invoiceStatus": "waitsforpayment",
"currency": "EUR",
"totalAmount": 1000,
"totalAmountInclVat": 1240
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Invoice with number 'F0000.1911.0000.0004' not found"
}
List a single invoice
GET/invoices/{invoiceNumber}
Returns only the requested invoice.
- invoiceNumber
string
(required) Example: F0000.1911.0000.0004The Invoice number
- invoice
- invoiceNumber
Invoice number
- creationDate
Invoice creation date
- payDate
Invoice paid date
- dueDate
Invoice deadline
- invoiceStatus
Invoice status
- currency
Currency used for this invoice
- totalAmount
Invoice total (displayed in cents)
- totalAmountInclVat
Invoice total including VAT (displayed in cents)
InvoiceItems ¶
This is the API endpoint for InvoiceItems
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/invoices/F0000.1911.0000.0004/invoice-items"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"invoiceItems": [
{
"product": "Big Storage Disk 2000 GB",
"description": "Big Storage Disk 2000 GB (example-bigstorage)",
"isRecurring": false,
"date": "2020-01-01",
"quantity": 1,
"price": 1000,
"priceInclVat": 1210,
"vat": 210,
"vatPercentage": 21,
"discounts": [
{
"description": "Korting (20% Black Friday)",
"amount": -500,
"discountedPrice": -500,
"discountedPriceInclVat": -605,
"discountedVat": 105
}
]
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Invoice with number 'F0000.1911.0000.0004' not found"
}
List invoice items by InvoiceNumber
GET/invoices/{invoiceNumber}/invoice-items
Each invoice consists of one or multiple invoice items, detailing what specific products or services are on this invoice.
An invoiceItem can optionally contain one or multiple discounts.
- invoiceNumber
string
(required) Example: F0000.1911.0000.0004The Invoice number
- invoiceItems
- product
Product name
- description
Product description
- isRecurring
Payment is recurring
- date
Date when the order line item was up for invoicing
- quantity
Quantity
- price
Price excluding VAT (displayed in cents)
- priceInclVat
Price including VAT (displayed in cents)
- vat
Amount of VAT charged
- vatPercentage
Percentage used to calculate the VAT
- discounts
Applied discounts
- description
Applied discount description
- amount
Discounted amount (in cents)
- discountedPrice
Discount amount excluding VAT (in cents)
- discountedPriceInclVat
Discount amount including VAT (in cents)
- discountedVat
Vat amount (in cents)
Pdf ¶
This is the API endpoint for PDF invoices.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/invoices/F0000.1911.0000.0004/pdf"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"pdf": "Y205elpYTWdZWEpsSUhKbFpDd2dabXh2ZDJWeWN5QmhjbVVnWW14MVpTd2dkR2hsY21VZ2MyaHZkV3hrSUdKbElHRWdjR1JtSUdobGNtVWdZblYwSUdsMElHbHpJR2RzZFdVdQ==="
}
Response headers
Content-Type: application/json
Response body
{
"error": "Invoice with number 'F0000.1911.0000.0004' not found"
}
Retrieve an invoice as PDF file
GET/invoices/{invoiceNumber}/pdf
Retrieve the PDF data of an invoice with the given invoice number.
The response returns a string that is Base64 encoded. Decode this string before saving to a PDF file.
- invoiceNumber
string
(required) Example: F0000.1911.0000.0004The Invoice number
- pdf
SSH Keys ¶
Manage the SSH Keys in your account, these can be used to embed into your VPS at the time of its creation.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/ssh-keys"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"sshKeys": [
{
"id": 123,
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDf2pxWX/yhUBDyk2LPhvRtI0LnVO8PyR5Zt6AHrnhtLGqK+8YG9EMlWbCCWrASR+Q1hFQG example",
"description": "Jim key",
"creationDate": "2020-12-01 15:25:01",
"fingerprint": "bb:22:43:69:2b:0d:3e:16:58:91:27:8a:62:29:97:d1",
"isDefault": true
}
]
}
List all SSH keys
GET/ssh-keys
List all SSH keys in your account.
This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.
- sshKeys
- id
SSH key identifier
- key
SSH key
- description
SSH key description (max 255 chars)
- creationDate
Date when this SSH key was added (TimeZone: Europe/Amsterdam)
- fingerprint
MD5 fingerprint of SSH key
- isDefault
Whether or not the key is flagged as default
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/ssh-keys/123"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"sshKey": {
"id": 123,
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDf2pxWX/yhUBDyk2LPhvRtI0LnVO8PyR5Zt6AHrnhtLGqK+8YG9EMlWbCCWrASR+Q1hFQG example",
"description": "Jim key",
"creationDate": "2020-12-01 15:25:01",
"fingerprint": "bb:22:43:69:2b:0d:3e:16:58:91:27:8a:62:29:97:d1",
"isDefault": true
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "SSH Key with id '123' not found"
}
Get SSH key by id
GET/ssh-keys/{id}
Request information about an existing SSH key from your account.
- id
string
(required) Example: 123SSH key identifier
- sshKey
- id
SSH key identifier
- key
SSH key
- description
SSH key description (max 255 chars)
- creationDate
Date when this SSH key was added (TimeZone: Europe/Amsterdam)
- fingerprint
MD5 fingerprint of SSH key
- isDefault
Whether or not the key is flagged as default
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"sshKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDf2pxWX/yhUBDyk2LPhvRtI0LnVO8PyR5Zt6AHrnhtLGqK+8YG9EMlWbCCWrASR+Q1hFQG example",
"description": "Jim key",
"isDefault": true
}
' \
"https://api.transip.nl/v6/ssh-keys"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"sshKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDf2pxWX/yhUBDyk2LPhvRtI0LnVO8PyR5Zt6AHrnhtLGqK+8YG9EMlWbCCWrASR+Q1hFQG example",
"description": "Jim key",
"isDefault": true
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided SSH key already exists"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided SSH key 'ssh-rsa AAAAB3NzaC_INVALIDKEY_1yc2EAAAADAQA' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'description' can be 255 characters maximum"
}
Add a new SSH key
POST/ssh-keys
Add a new SSH key to your account.
- sshKey
SSH key
- description
SSH key description
- isDefault
SSH key isDefault
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"sshKey": {
"id": 123,
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDf2pxWX/yhUBDyk2LPhvRtI0LnVO8PyR5Zt6AHrnhtLGqK+8YG9EMlWbCCWrASR+Q1hFQG example",
"description": "Jim key",
"creationDate": "2020-12-01 15:25:01",
"fingerprint": "bb:22:43:69:2b:0d:3e:16:58:91:27:8a:62:29:97:d1",
"isDefault": true
}
}
' \
"https://api.transip.nl/v6/ssh-keys/123"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"sshKey": {
"id": 123,
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDf2pxWX/yhUBDyk2LPhvRtI0LnVO8PyR5Zt6AHrnhtLGqK+8YG9EMlWbCCWrASR+Q1hFQG example",
"description": "Jim key",
"creationDate": "2020-12-01 15:25:01",
"fingerprint": "bb:22:43:69:2b:0d:3e:16:58:91:27:8a:62:29:97:d1",
"isDefault": true
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "SSH Key with id '123' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'description' can be 255 characters maximum"
}
Update an SSH key
PUT/ssh-keys/{id}
Rename the description or change the isDefault attribute for an SSH key.
In this request you need to specify values for the isDefault and description attribute, you cannot leave them empty.
Except for the description and isDefault, all attributes are read only.
- id
string
(required) Example: 123SSH key identifier
- sshKey
- id
SSH key identifier
- key
SSH key
- description
SSH key description (max 255 chars)
- creationDate
Date when this SSH key was added (TimeZone: Europe/Amsterdam)
- fingerprint
MD5 fingerprint of SSH key
- isDefault
Whether or not the key is flagged as default
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/ssh-keys/123"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "SSH Key with id '123' not found"
}
Delete an SSH key
DELETE/ssh-keys/{id}
Delete an existing SSH key from your account.
- id
string
(required) Example: 123SSH key identifier
ContactKey ¶
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/contact-key"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"key": "123456"
}
/ Domains ¶
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"tags": "/domains?tags=customTag,anotherTag",
"include": "/domains?include=nameservers,contacts,goneDomains"
}
' \
"https://api.transip.nl/v6/domains"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"tags": "/domains?tags=customTag,anotherTag",
"include": "/domains?include=nameservers,contacts,goneDomains"
}
Response headers
Content-Type: application/json
Response body
{
"domains": [
{
"name": "example.com",
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
],
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
],
"authCode": "kJqfuOXNOYQKqh/jO4bYSn54YDqgAt1ksCe+ZG4Ud4nfpzw8qBsfR2JqAj7Ce12SxKcGD09v+yXd6lrm",
"isTransferLocked": false,
"registrationDate": "2016-01-01",
"renewalDate": "2020-01-01",
"isWhitelabel": false,
"cancellationDate": "2020-01-01 12:00:00",
"cancellationStatus": "signed",
"isDnsOnly": false,
"tags": [
"customTag",
"anotherTag"
],
"canEditDns": true,
"hasAutoDns": true,
"hasDnsSec": true,
"status": "registered"
}
]
}
List all domains
GET/domains
This API call allows you to list all domain names in your TransIP account.
Should you want to filter the domains list by a custom tag, set the tag
parameter and only domains with the tag will be returned like https://api.transip.nl/v6/domains?tag=customTag,anotherTag
This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.
- tags
Tags to filter by, separated by a comma.
- include
Extra Data to include, separated by a comma. (Can be nameservers,contacts,goneDomains)
- domains
- name
The name, including the tld of this domain
- nameservers
The list of nameservers (with optional gluerecords) for this domain (Only included if asked for via the relevant call)
- hostname
The hostname of this nameserver
- ipv4
Optional ipv4 glue record for this nameserver
- ipv6
Optional ipv6 glue record for this nameserver
- contacts
The list of WhoisContacts for this domain (Only included if asked for via the relevant call)
- type
The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’
- firstName
The firstName of this Contact
- lastName
The lastName of this Contact
- companyName
The companyName of this Contact, in case of a company
- companyKvk
The kvk number of this Contact, in case of a company
- companyType
The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’
- street
The street of the address of this Contact
- number
The number part of the address of this Contact
- postalCode
The postalCode part of the address of this Contact
- city
The city part of the address of this Contact
- phoneNumber
The phoneNumber of this Contact
- faxNumber
The faxNumber of this Contact
- email
The email address of this Contact
- country
The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.
- authCode
The authcode for this domain as generated by the registry.
- isTransferLocked
If this domain supports transfer locking, this flag is true when the domains ability to transfer is locked at the registry.
- registrationDate
Registration date of the domain, in YYYY-mm-dd format.
- renewalDate
Next renewal date of the domain, in YYYY-mm-dd format.
- isWhitelabel
If this domain is added to your whitelabel.
- cancellationDate
Cancellation data, in YYYY-mm-dd h:i:s format, null if the domain is active.
- cancellationStatus
Cancellation status, null if the domain is active, ‘cancelled’ when the domain is cancelled.
- isDnsOnly
Whether this domain is DNS only
- tags
The custom tags added to this domain.
- canEditDns
Whether dns changes propagate to the nameservers.
- hasAutoDns
Whether autoDNS is enabled for this domain. Dns entries will be automatically updated when for example a webhosting packages is ordered.
- hasDnsSec
Whether DNSSEC is active for this domain.
- status
The status of a domain (Can be one of:
registered
,gone
,dnsonly
,inprogress
,dropinprogress
)
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"domain": {
"name": "example.com",
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
],
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
],
"authCode": "kJqfuOXNOYQKqh/jO4bYSn54YDqgAt1ksCe+ZG4Ud4nfpzw8qBsfR2JqAj7Ce12SxKcGD09v+yXd6lrm",
"isTransferLocked": false,
"registrationDate": "2016-01-01",
"renewalDate": "2020-01-01",
"isWhitelabel": false,
"cancellationDate": "2020-01-01 12:00:00",
"cancellationStatus": "signed",
"isDnsOnly": false,
"tags": [
"customTag",
"anotherTag"
],
"canEditDns": true,
"hasAutoDns": true,
"hasDnsSec": true,
"status": "registered"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Retrieve an existing domain
GET/domains/{domainName}
Show information about a specific domain name.
- domainName
string
(required) Example: example.comDomain name
- include
string
(optional)Comma seperated list of data to include (nameservers,contacts)
- domain
- name
The name, including the tld of this domain
- nameservers
The list of nameservers (with optional gluerecords) for this domain (Only included if asked for via the relevant call)
- hostname
The hostname of this nameserver
- ipv4
Optional ipv4 glue record for this nameserver
- ipv6
Optional ipv6 glue record for this nameserver
- contacts
The list of WhoisContacts for this domain (Only included if asked for via the relevant call)
- type
The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’
- firstName
The firstName of this Contact
- lastName
The lastName of this Contact
- companyName
The companyName of this Contact, in case of a company
- companyKvk
The kvk number of this Contact, in case of a company
- companyType
The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’
- street
The street of the address of this Contact
- number
The number part of the address of this Contact
- postalCode
The postalCode part of the address of this Contact
- city
The city part of the address of this Contact
- phoneNumber
The phoneNumber of this Contact
- faxNumber
The faxNumber of this Contact
- email
The email address of this Contact
- country
The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.
- authCode
The authcode for this domain as generated by the registry.
- isTransferLocked
If this domain supports transfer locking, this flag is true when the domains ability to transfer is locked at the registry.
- registrationDate
Registration date of the domain, in YYYY-mm-dd format.
- renewalDate
Next renewal date of the domain, in YYYY-mm-dd format.
- isWhitelabel
If this domain is added to your whitelabel.
- cancellationDate
Cancellation data, in YYYY-mm-dd h:i:s format, null if the domain is active.
- cancellationStatus
Cancellation status, null if the domain is active, ‘cancelled’ when the domain is cancelled.
- isDnsOnly
Whether this domain is DNS only
- tags
The custom tags added to this domain.
- canEditDns
Whether dns changes propagate to the nameservers.
- hasAutoDns
Whether autoDNS is enabled for this domain. Dns entries will be automatically updated when for example a webhosting packages is ordered.
- hasDnsSec
Whether DNSSEC is active for this domain.
- status
The status of a domain (Can be one of:
registered
,gone
,dnsonly
,inprogress
,dropinprogress
)
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"domainName": "example.com",
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
],
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
],
"dnsEntries": [
{
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
]
}
' \
"https://api.transip.nl/v6/domains"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"domainName": "example.com",
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
],
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
],
"dnsEntries": [
{
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "The domain 'example.com' is not free and thus cannot be registered"
}
Register a new domain
POST/domains
Register a new domain. Note that in most cases, promotions or discounts do not apply to registrations through the TransIP API.
You can set the contacts, nameservers and DNS entries immediately, but it’s not mandatory for registration.
Warning: This API call will create an invoice!
- domainName
- contacts
- type
The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’
- firstName
The firstName of this Contact
- lastName
The lastName of this Contact
- companyName
The companyName of this Contact, in case of a company
- companyKvk
The kvk number of this Contact, in case of a company
- companyType
The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’
- street
The street of the address of this Contact
- number
The number part of the address of this Contact
- postalCode
The postalCode part of the address of this Contact
- city
The city part of the address of this Contact
- phoneNumber
The phoneNumber of this Contact
- faxNumber
The faxNumber of this Contact
- email
The email address of this Contact
- country
The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.
- nameservers
- hostname
The hostname of this nameserver
- ipv4
Optional ipv4 glue record for this nameserver
- ipv6
Optional ipv6 glue record for this nameserver
- dnsEntries
- name
The name of the dns entry, for example ‘@’ or ‘www’
- expire
The expiration period of the dns entry, in seconds. For example 86400 for a day of expiration
- type
The type of dns entry. Possbible types are ‘A’, ‘AAAA’, ‘CNAME’, ‘MX’, ‘NS’, ‘TXT’, ‘SRV’, ‘SSHFP’, ‘TLSA’, ‘CAA’ and ‘NAPTR’
- content
The content of of the dns entry, for example ‘10 mail’, ‘127.0.0.1’ or ‘www’
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"domainName": "example.com",
"authCode": "CYPMaVH+9MRjXGBc3InzHs7vNSUBPOjwpZm3GO+iDLHnFLtiP7sOKqW5JD1WeUpevZM6q1qS5YH9dGSp",
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
],
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
],
"dnsEntries": [
{
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
]
}
' \
"https://api.transip.nl/v6/domains"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"domainName": "example.com",
"authCode": "CYPMaVH+9MRjXGBc3InzHs7vNSUBPOjwpZm3GO+iDLHnFLtiP7sOKqW5JD1WeUpevZM6q1qS5YH9dGSp",
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
],
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
],
"dnsEntries": [
{
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "The domain 'example.com' is already available in your account, thus cannot be transferred"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The domain 'example.com' is not registered and thus cannot be transferred"
}
Transfer a domain
POST/domains
Transfer a domain to TransIP using its transfer key (or ‘EPP code’) by specifying it in the authCode
parameter.
You can override the contacts, nameservers and DNS entries immediately, but is not mandatory.
Warning: This API call will create an invoice!
- domainName
- authCode
The auth code of the domain.
- contacts
- type
The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’
- firstName
The firstName of this Contact
- lastName
The lastName of this Contact
- companyName
The companyName of this Contact, in case of a company
- companyKvk
The kvk number of this Contact, in case of a company
- companyType
The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’
- street
The street of the address of this Contact
- number
The number part of the address of this Contact
- postalCode
The postalCode part of the address of this Contact
- city
The city part of the address of this Contact
- phoneNumber
The phoneNumber of this Contact
- faxNumber
The faxNumber of this Contact
- email
The email address of this Contact
- country
The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.
- nameservers
- hostname
The hostname of this nameserver
- ipv4
Optional ipv4 glue record for this nameserver
- ipv6
Optional ipv6 glue record for this nameserver
- dnsEntries
- name
The name of the dns entry, for example ‘@’ or ‘www’
- expire
The expiration period of the dns entry, in seconds. For example 86400 for a day of expiration
- type
The type of dns entry. Possbible types are ‘A’, ‘AAAA’, ‘CNAME’, ‘MX’, ‘NS’, ‘TXT’, ‘SRV’, ‘SSHFP’, ‘TLSA’, ‘CAA’ and ‘NAPTR’
- content
The content of of the dns entry, for example ‘10 mail’, ‘127.0.0.1’ or ‘www’
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"domain": {
"name": "example.com",
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
],
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
],
"authCode": "kJqfuOXNOYQKqh/jO4bYSn54YDqgAt1ksCe+ZG4Ud4nfpzw8qBsfR2JqAj7Ce12SxKcGD09v+yXd6lrm",
"isTransferLocked": false,
"registrationDate": "2016-01-01",
"renewalDate": "2020-01-01",
"isWhitelabel": false,
"cancellationDate": "2020-01-01 12:00:00",
"cancellationStatus": "signed",
"isDnsOnly": false,
"tags": [
"customTag",
"anotherTag"
],
"canEditDns": true,
"hasAutoDns": true,
"hasDnsSec": true,
"status": "registered"
}
}
' \
"https://api.transip.nl/v6/domains/example.com"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"domain": {
"name": "example.com",
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
],
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
],
"authCode": "kJqfuOXNOYQKqh/jO4bYSn54YDqgAt1ksCe+ZG4Ud4nfpzw8qBsfR2JqAj7Ce12SxKcGD09v+yXd6lrm",
"isTransferLocked": false,
"registrationDate": "2016-01-01",
"renewalDate": "2020-01-01",
"isWhitelabel": false,
"cancellationDate": "2020-01-01 12:00:00",
"cancellationStatus": "signed",
"isDnsOnly": false,
"tags": [
"customTag",
"anotherTag"
],
"canEditDns": true,
"hasAutoDns": true,
"hasDnsSec": true,
"status": "registered"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "You do not have a whitelabel account yet, please order one first"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain 'example.com' has action 'changeNameservers' running, no modification is allowed"
}
Update a domain
PUT/domains/{domainName}
Update an existing domain. To apply or release a lock, change the isTransferLocked
attribute. To change tags, update the tags
attribute. To enable or disable AutoDNS, change the hasAutoDns
attribute.
You’re able to add the domain name under a whitelabel account. Note this whitelabel functionality is available only for .nl domains. Furthermore, the whitelabel account must be activated first at regular charge. Upon activating, newly registered domains with the isWhitelabel
attribute set to ‘true’ will be shown under a whitelabel registrar name.
For more information about whitelabel domain name registration at TransIP, please see the documentation regarding whitelabel.
Warning: When adding the domain to your whitelabel, it cannot be reverted!
Warning: Can Only be done when status is registered
- domainName
string
(required) Example: example.comDomain name
- domain
- name
The name, including the tld of this domain
- nameservers
The list of nameservers (with optional gluerecords) for this domain (Only included if asked for via the relevant call)
- hostname
The hostname of this nameserver
- ipv4
Optional ipv4 glue record for this nameserver
- ipv6
Optional ipv6 glue record for this nameserver
- contacts
The list of WhoisContacts for this domain (Only included if asked for via the relevant call)
- type
The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’
- firstName
The firstName of this Contact
- lastName
The lastName of this Contact
- companyName
The companyName of this Contact, in case of a company
- companyKvk
The kvk number of this Contact, in case of a company
- companyType
The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’
- street
The street of the address of this Contact
- number
The number part of the address of this Contact
- postalCode
The postalCode part of the address of this Contact
- city
The city part of the address of this Contact
- phoneNumber
The phoneNumber of this Contact
- faxNumber
The faxNumber of this Contact
- email
The email address of this Contact
- country
The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.
- authCode
The authcode for this domain as generated by the registry.
- isTransferLocked
If this domain supports transfer locking, this flag is true when the domains ability to transfer is locked at the registry.
- registrationDate
Registration date of the domain, in YYYY-mm-dd format.
- renewalDate
Next renewal date of the domain, in YYYY-mm-dd format.
- isWhitelabel
If this domain is added to your whitelabel.
- cancellationDate
Cancellation data, in YYYY-mm-dd h:i:s format, null if the domain is active.
- cancellationStatus
Cancellation status, null if the domain is active, ‘cancelled’ when the domain is cancelled.
- isDnsOnly
Whether this domain is DNS only
- tags
The custom tags added to this domain.
- canEditDns
Whether dns changes propagate to the nameservers.
- hasAutoDns
Whether autoDNS is enabled for this domain. Dns entries will be automatically updated when for example a webhosting packages is ordered.
- hasDnsSec
Whether DNSSEC is active for this domain.
- status
The status of a domain (Can be one of:
registered
,gone
,dnsonly
,inprogress
,dropinprogress
)
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"endTime": "end"
}
' \
"https://api.transip.nl/v6/domains/example.com"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"endTime": "end"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The domain 'example.com' has additional products attached, and thus can't be cancelled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid cancellation time: 'now', please use either 'end' or 'immediately'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The domain 'example.com' is inactive, and thus can't be cancelled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "A domain add-on for 'example.com' is inactive, and thus the domain itself can't be cancelled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The domain 'example.com' already has a cancellation pending"
}
Cancel a domain
DELETE/domains/{domainName}
Cancels the specified domain. Depending on the time you want to cancel the domain, specify ‘end’ or ‘immediately’ for the endTime
attribute.
Upon canceling a domain name (or any other product) it will be shown under cancellations in the TransIP control panel. By using the API method outlined above (Retrieve an existing domain) you’ll be able to see if the domain name has been canceled yet.
- domainName
string
(required) Example: example.comDomain name
- endTime
Cancellation time, either ‘end’ or ‘immediately’
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "handover",
"targetCustomerName": "example2"
}
' \
"https://api.transip.nl/v6/domains/example.com"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "handover",
"targetCustomerName": "example2"
}
Response headers
Content-Type: application/json
Response body
{
"error": "domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "domain 'example.com' has a transfer lock and thus cannot be transferred"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on domain 'example.com' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Error Processing Handover, One or more items are already being handovered"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Target user 'example2' is not capable of receiving handover"
}
Handover a domain
PATCH/domains/{domainName}
Handover a domain to another TransIP Account. This call will initiate the handover process. the actual handover will be done when the target customer accepts the handover.
- domainName
string
(required) Example: example.comDomain name
- action
- targetCustomerName
Branding ¶
TransIP allows for multiple ways to whitelabel domains. Among others, this includes changing ‘banners’ shown in the WHOIS. For example, for some TLDs, the company name and URL can be specified.
Aside from this, you can place your .nl domain names in a whitelabel account so the registrar for .nl domain names is changed to a neutral name.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/branding"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"branding": {
"companyName": "Example B.V.",
"supportEmail": "admin@example.com",
"companyUrl": "www.example.com",
"termsOfUsageUrl": "www.example.com/tou",
"bannerLine1": "Example B.V.",
"bannerLine2": "Example",
"bannerLine3": "http://www.example.com/products"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Get domain branding
GET/domains/{domainName}/branding
Get domain branding information for a given domain name.
Please note this API call does not return the whitelabel account status (just the branding).
Branding options can be altered from the TransIP control panel or by using the API call outlined below.
- domainName
string
(required) Example: example.comDomain name
- branding
- companyName
The company name displayed in transfer-branded e-mails
- supportEmail
The support email used for transfer-branded e-mails
- companyUrl
The company url displayed in transfer-branded e-mails
- termsOfUsageUrl
The terms of usage url as displayed in transfer-branded e-mails
- bannerLine1
The first generic bannerLine displayed in whois-branded whois output.
- bannerLine2
The second generic bannerLine displayed in whois-branded whois output.
- bannerLine3
The third generic bannerLine displayed in whois-branded whois output.
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"branding": {
"companyName": "Example B.V.",
"supportEmail": "admin@example.com",
"companyUrl": "www.example.com",
"termsOfUsageUrl": "www.example.com/tou",
"bannerLine1": "Example B.V.",
"bannerLine2": "Example",
"bannerLine3": "http://www.example.com/products"
}
}
' \
"https://api.transip.nl/v6/domains/example.com/branding"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"branding": {
"companyName": "Example B.V.",
"supportEmail": "admin@example.com",
"companyUrl": "www.example.com",
"termsOfUsageUrl": "www.example.com/tou",
"bannerLine1": "Example B.V.",
"bannerLine2": "Example",
"bannerLine3": "http://www.example.com/products"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain TLD doesn't support branding"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain 'example.com' has action 'changeNameservers' running, no modification is allowed"
}
Update domain branding
PUT/domains/{domainName}/branding
Domain name branding can be set or altered using this API call. Among others, you can set your own company name and company URL, replacing the default values which are usually TransIP contact details.
Changes will not apply to previously registered domain names. The new settings will, in most cases, only show up for newly registered domain names after the changes were made.
- domainName
string
(required) Example: example.comDomain name
- branding
- companyName
The company name displayed in transfer-branded e-mails
- supportEmail
The support email used for transfer-branded e-mails
- companyUrl
The company url displayed in transfer-branded e-mails
- termsOfUsageUrl
The terms of usage url as displayed in transfer-branded e-mails
- bannerLine1
The first generic bannerLine displayed in whois-branded whois output.
- bannerLine2
The second generic bannerLine displayed in whois-branded whois output.
- bannerLine3
The third generic bannerLine displayed in whois-branded whois output.
Contacts ¶
Domain names are registered using multiple contacts, each fulfilling a role related to the domain name and its underlying infrastructure. Contacts can be one of the following: owner, administrative contact and technical contact. These can be the same.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/contacts"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
List all contacts for a domain
GET/domains/{domainName}/contacts
Returns a list of all contacts for a domain. One or multiple of the following contacts will be shown:
-
Domain name owner;
-
Administrative contact;
-
Technical contact.
- domainName
string
(required) Example: example.comDomain name
- contacts
- type
The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’
- firstName
The firstName of this Contact
- lastName
The lastName of this Contact
- companyName
The companyName of this Contact, in case of a company
- companyKvk
The kvk number of this Contact, in case of a company
- companyType
The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’
- street
The street of the address of this Contact
- number
The number part of the address of this Contact
- postalCode
The postalCode part of the address of this Contact
- city
The city part of the address of this Contact
- phoneNumber
The phoneNumber of this Contact
- faxNumber
The faxNumber of this Contact
- email
The email address of this Contact
- country
The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
]
}
' \
"https://api.transip.nl/v6/domains/example.com/contacts"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain TLD doesn't support 'x' capability"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain 'example.com' is locked, no modification is allowed"
}
Update contacts for a domain
PUT/domains/{domainName}/contacts
Use this API call in case you want to alter domain name contacts after the registration of a domain name.
- Some TLD do not support changing all the fields like the AddressData. This will throw an error with a
406
http status code.
- domainName
string
(required) Example: example.comDomain name
- contacts
- type
The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’
- firstName
The firstName of this Contact
- lastName
The lastName of this Contact
- companyName
The companyName of this Contact, in case of a company
- companyKvk
The kvk number of this Contact, in case of a company
- companyType
The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’
- street
The street of the address of this Contact
- number
The number part of the address of this Contact
- postalCode
The postalCode part of the address of this Contact
- city
The city part of the address of this Contact
- phoneNumber
The phoneNumber of this Contact
- faxNumber
The faxNumber of this Contact
- email
The email address of this Contact
- country
The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.
Default Contacts ¶
This is the API endpoint for default domain contacts.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domain-defaults/contacts"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "No default domain contacts were found for this account"
}
List all default domain contacts for your account
GET/domain-defaults/contacts
Returns a list of all contacts for an account. One or multiple of the following contacts will be shown:
-
Registrant contact;
-
Administrative contact;
-
Technical contact.
- contacts
- type
The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’
- firstName
The firstName of this Contact
- lastName
The lastName of this Contact
- companyName
The companyName of this Contact, in case of a company
- companyKvk
The kvk number of this Contact, in case of a company
- companyType
The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’
- street
The street of the address of this Contact
- number
The number part of the address of this Contact
- postalCode
The postalCode part of the address of this Contact
- city
The city part of the address of this Contact
- phoneNumber
The phoneNumber of this Contact
- faxNumber
The faxNumber of this Contact
- email
The email address of this Contact
- country
The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
]
}
' \
"https://api.transip.nl/v6/domain-defaults/contacts"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "No default domain contacts were found for this account"
}
Update contacts for a account
PUT/domain-defaults/contacts
Use this API call in case you want to alter default domain contacts for your account.
- contacts
- type
The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’
- firstName
The firstName of this Contact
- lastName
The lastName of this Contact
- companyName
The companyName of this Contact, in case of a company
- companyKvk
The kvk number of this Contact, in case of a company
- companyType
The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’
- street
The street of the address of this Contact
- number
The number part of the address of this Contact
- postalCode
The postalCode part of the address of this Contact
- city
The city part of the address of this Contact
- phoneNumber
The phoneNumber of this Contact
- faxNumber
The faxNumber of this Contact
- email
The email address of this Contact
- country
The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.
DNS ¶
This is the API endpoint for changing DNS records. Any changes made here will be pushed to the TransIP nameservers.
DNS entries altered, added or removed here will only be propagated when the nameservers for a domain name are set to TransIP’s.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/dns"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"dnsEntries": [
{
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
List all DNS entries for a domain
GET/domains/{domainName}/dns
List all DNS entries for a domain
- domainName
string
(required) Example: example.comDomain name
- dnsEntries
- name
The name of the dns entry, for example ‘@’ or ‘www’
- expire
The expiration period of the dns entry, in seconds. For example 86400 for a day of expiration
- type
The type of dns entry. Possbible types are ‘A’, ‘AAAA’, ‘CNAME’, ‘MX’, ‘NS’, ‘TXT’, ‘SRV’, ‘SSHFP’, ‘TLSA’, ‘CAA’ and ‘NAPTR’
- content
The content of of the dns entry, for example ‘10 mail’, ‘127.0.0.1’ or ‘www’
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"dnsEntry": {
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
}
' \
"https://api.transip.nl/v6/domains/example.com/dns"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"dnsEntry": {
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "DNS Entry changes have temporarily been disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Invalid DNS entry type 'B'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Error fetching Dns Entries: DNS Entries are currently being saved"
}
Add a new single DNS entry to a domain
POST/domains/{domainName}/dns
Add a single DNS entry to the existing zone file.
In case you want to overwrite the entire zone, please use the method below.
- domainName
string
(required) Example: example.comDomain name
- dnsEntry
- name
The name of the dns entry, for example ‘@’ or ‘www’
- expire
The expiration period of the dns entry, in seconds. For example 86400 for a day of expiration
- type
The type of dns entry. Possbible types are ‘A’, ‘AAAA’, ‘CNAME’, ‘MX’, ‘NS’, ‘TXT’, ‘SRV’, ‘SSHFP’, ‘TLSA’, ‘CAA’ and ‘NAPTR’
- content
The content of of the dns entry, for example ‘10 mail’, ‘127.0.0.1’ or ‘www’
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"dnsEntry": {
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
}
' \
"https://api.transip.nl/v6/domains/example.com/dns"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"dnsEntry": {
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "DNS Entry changes have temporarily been disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'mieperm@ns.nl'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Invalid DNS entry type 'B'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Could not find match for DNS entry 'test 300 A'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Multiple matches found for DNS entry 'test 300 A'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Error fetching Dns Entries: DNS Entries are currently being saved"
}
Update single DNS entry
PATCH/domains/{domainName}/dns
Update the content of a single DNS entry, identified by the name
, expire
and type
attributes.
When multiple or none of the current DNS entries matches, the response will be an error with http status code 406
.
- domainName
string
(required) Example: example.comDomain name
- dnsEntry
- name
The name of the dns entry, for example ‘@’ or ‘www’
- expire
The expiration period of the dns entry, in seconds. For example 86400 for a day of expiration
- type
The type of dns entry. Possbible types are ‘A’, ‘AAAA’, ‘CNAME’, ‘MX’, ‘NS’, ‘TXT’, ‘SRV’, ‘SSHFP’, ‘TLSA’, ‘CAA’ and ‘NAPTR’
- content
The content of of the dns entry, for example ‘10 mail’, ‘127.0.0.1’ or ‘www’
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"dnsEntries": [
{
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
]
}
' \
"https://api.transip.nl/v6/domains/example.com/dns"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"dnsEntries": [
{
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "DNS Entry changes have temporarily been disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Error setting Dns Entries"
}
Update all DNS entries for a domain
PUT/domains/{domainName}/dns
This method will wipe the entire DNS zone file and replace it with the given records. Please note that data is not recoverable using an integrated method in the API, so make sure to use this with care.
There is no hard limit as to the amount of DNS entries that can be added at once.
Warning: all current entries will be replaced!
- domainName
string
(required) Example: example.comDomain name
- dnsEntries
- name
The name of the dns entry, for example ‘@’ or ‘www’
- expire
The expiration period of the dns entry, in seconds. For example 86400 for a day of expiration
- type
The type of dns entry. Possbible types are ‘A’, ‘AAAA’, ‘CNAME’, ‘MX’, ‘NS’, ‘TXT’, ‘SRV’, ‘SSHFP’, ‘TLSA’, ‘CAA’ and ‘NAPTR’
- content
The content of of the dns entry, for example ‘10 mail’, ‘127.0.0.1’ or ‘www’
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"dnsEntry": {
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
}
' \
"https://api.transip.nl/v6/domains/example.com/dns"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"dnsEntry": {
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "DNS Entry changes have temporarily been disabled."
}
Response headers
Content-Type: application/json
Response body
{
"error": "DNS Entry not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Error fetching Dns Entries: DNS Entries are currently being saved"
}
Remove a DNS entry from a domain
DELETE/domains/{domainName}/dns
Remove a single DNS entry from a domain specified by the dnsEntry
parameter.
If there are duplicate DNS entries found then a single entry will be removed when performing this action.
- domainName
string
(required) Example: example.comDomain name
- dnsEntry
- name
The name of the dns entry, for example ‘@’ or ‘www’
- expire
The expiration period of the dns entry, in seconds. For example 86400 for a day of expiration
- type
The type of dns entry. Possbible types are ‘A’, ‘AAAA’, ‘CNAME’, ‘MX’, ‘NS’, ‘TXT’, ‘SRV’, ‘SSHFP’, ‘TLSA’, ‘CAA’ and ‘NAPTR’
- content
The content of of the dns entry, for example ‘10 mail’, ‘127.0.0.1’ or ‘www’
DNSSEC ¶
By utilizing DNSSEC, DNS resolvers ask for authentication first. Notably, DNSSEC is based on the use of DNSSEC keys registered at the registry.
For DNSSEC to work, the appropriate information must be set at the registrar; in this case TransIP.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/dnssec"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"dnsSecEntries": [
{
"keyTag": 67239,
"flags": 1,
"algorithm": 8,
"publicKey": "AwEAAc31XDE3QWphFz6CR77Hp3ZjDRx7zqe1AXx1QMvqFKzrEKrX4oj2nv8zDquCotbQ1ObHI4KGLRf3ycaq0fYslXFJ1JxLxJUl/lpGvE8OkqdhGW3vj3YS9Mlbf0yYC2bNUY875UgDNRLqWtVSEXO/PCcqr3RIzpngu+6JF/1bfQB7ituFHxoanhAiWOpc24ZAnrhmyIsDwyy1k0iyvVTSyPugnYD/bF7CR7ObQCiuucjwCkSBHJ4gcihHvyPDU/DlsSJeEO/G31zFxzXwHjr3h3mdJE4mQuceS11e5/c9hht6rUL0PEGve1Ygknz+0ruAinlhFYnny2uxES5M9r0FIM="
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
List DNSSEC entries
GET/domains/{domainName}/dnssec
This API call lists all DNSSEC entries for a domain once set. This includes the key tag, flags, algorithm and public key.
- domainName
string
(required) Example: example.comDomain name
- dnsSecEntries
- keyTag
A 5-digit key of the Zonesigner
- flags
The signing key number, either 256 (Zone Signing Key) or 257 (Key Signing Key)
- algorithm
The algorithm type that is used, click here to see the possible options.
- publicKey
The public key
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"dnsSecEntries": [
{
"keyTag": 67239,
"flags": 1,
"algorithm": 8,
"publicKey": "AwEAAc31XDE3QWphFz6CR77Hp3ZjDRx7zqe1AXx1QMvqFKzrEKrX4oj2nv8zDquCotbQ1ObHI4KGLRf3ycaq0fYslXFJ1JxLxJUl/lpGvE8OkqdhGW3vj3YS9Mlbf0yYC2bNUY875UgDNRLqWtVSEXO/PCcqr3RIzpngu+6JF/1bfQB7ituFHxoanhAiWOpc24ZAnrhmyIsDwyy1k0iyvVTSyPugnYD/bF7CR7ObQCiuucjwCkSBHJ4gcihHvyPDU/DlsSJeEO/G31zFxzXwHjr3h3mdJE4mQuceS11e5/c9hht6rUL0PEGve1Ygknz+0ruAinlhFYnny2uxES5M9r0FIM="
}
]
}
' \
"https://api.transip.nl/v6/domains/example.com/dnssec"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"dnsSecEntries": [
{
"keyTag": 67239,
"flags": 1,
"algorithm": 8,
"publicKey": "AwEAAc31XDE3QWphFz6CR77Hp3ZjDRx7zqe1AXx1QMvqFKzrEKrX4oj2nv8zDquCotbQ1ObHI4KGLRf3ycaq0fYslXFJ1JxLxJUl/lpGvE8OkqdhGW3vj3YS9Mlbf0yYC2bNUY875UgDNRLqWtVSEXO/PCcqr3RIzpngu+6JF/1bfQB7ituFHxoanhAiWOpc24ZAnrhmyIsDwyy1k0iyvVTSyPugnYD/bF7CR7ObQCiuucjwCkSBHJ4gcihHvyPDU/DlsSJeEO/G31zFxzXwHjr3h3mdJE4mQuceS11e5/c9hht6rUL0PEGve1Ygknz+0ruAinlhFYnny2uxES5M9r0FIM="
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Key tag '0906' is invalid, please supply a number containing 5 digits"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Invalid algorithm 'CYBER', please supply one of the following algorithm: ..."
}
Response headers
Content-Type: application/json
Response body
{
"error": "Invalid flag '255', please supply one of the following flags: ..."
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "DNSSEC Entries for domain 'example.com' cannot be edited."
}
Update all DNSSEC entries
PUT/domains/{domainName}/dnssec
This method will replace all DNSSEC entries with the ones that are provided via the dnsSecEntries
parameter.
Warning: all current entries will be replaced!
- domainName
string
(required) Example: example.comDomain name
- dnsSecEntries
- keyTag
A 5-digit key of the Zonesigner
- flags
The signing key number, either 256 (Zone Signing Key) or 257 (Key Signing Key)
- algorithm
The algorithm type that is used, click here to see the possible options.
- publicKey
The public key
Nameservers ¶
This is the API endpoint for changing nameservers. The default nameservers can be set through the API or via the TransIP control panel.
In case the nameservers have not specifically been set, the whitelabel TransIP nameservers will be used for a whitelabel domain name registration and the non-whitelabeled TransIP nameservers will be used by default.
The TransIP nameservers (non-whitelabeled) are as follows:
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/nameservers"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
List nameservers for a domain
GET/domains/{domainName}/nameservers
This method will list all nameservers currently set for a domain.
- domainName
string
(required) Example: example.comDomain name
- nameservers
- hostname
The hostname of this nameserver
- ipv4
Optional ipv4 glue record for this nameserver
- ipv6
Optional ipv6 glue record for this nameserver
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
]
}
' \
"https://api.transip.nl/v6/domains/example.com/nameservers"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Update nameservers for a domain
PUT/domains/{domainName}/nameservers
Change the nameservers for a domain.
- domainName
string
(required) Example: example.comDomain name
- nameservers
- hostname
The hostname of this nameserver
- ipv4
Optional ipv4 glue record for this nameserver
- ipv6
Optional ipv6 glue record for this nameserver
Actions ¶
This is the API endpoint for managing domain actions.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/actions"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"action": {
"name": "changeNameservers",
"message": "success",
"hasFailed": false
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Get current domain action
GET/domains/{domainName}/actions
Domain actions are kept track of by TransIP. Domain actions include, for example, changing nameservers.
When no action is running the action’s name
parameter will be null
.
The action message will contain a failure message, please provide the information to fix this using the method below.
- domainName
string
(required) Example: example.comDomain name
- action
- name
The name of this DomainAction.
- message
If this action has failed, this field will contain an descriptive message.
- hasFailed
If this action has failed, this field will be true.
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"authCode": "",
"dnsEntries": [
{
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
],
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
],
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
]
}
' \
"https://api.transip.nl/v6/domains/example.com/actions"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"authCode": "",
"dnsEntries": [
{
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
],
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
],
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain 'example.com' has action 'changeNameservers' running, no modification is allowed."
}
Retry domain action
PATCH/domains/{domainName}/actions
Domain actions can fail due to wrong information, this method allows you to retry an action. You only have to specify information that is required for the action.
- domainName
string
(required) Example: example.comDomain name
- authCode
- dnsEntries
- name
The name of the dns entry, for example ‘@’ or ‘www’
- expire
The expiration period of the dns entry, in seconds. For example 86400 for a day of expiration
- type
The type of dns entry. Possbible types are ‘A’, ‘AAAA’, ‘CNAME’, ‘MX’, ‘NS’, ‘TXT’, ‘SRV’, ‘SSHFP’, ‘TLSA’, ‘CAA’ and ‘NAPTR’
- content
The content of of the dns entry, for example ‘10 mail’, ‘127.0.0.1’ or ‘www’
- nameservers
- hostname
The hostname of this nameserver
- ipv4
Optional ipv4 glue record for this nameserver
- ipv6
Optional ipv6 glue record for this nameserver
- contacts
- type
The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’
- firstName
The firstName of this Contact
- lastName
The lastName of this Contact
- companyName
The companyName of this Contact, in case of a company
- companyKvk
The kvk number of this Contact, in case of a company
- companyType
The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’
- street
The street of the address of this Contact
- number
The number part of the address of this Contact
- postalCode
The postalCode part of the address of this Contact
- city
The city part of the address of this Contact
- phoneNumber
The phoneNumber of this Contact
- faxNumber
The faxNumber of this Contact
- email
The email address of this Contact
- country
The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/actions"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Unable to cancel the running action for 'example.com' at this time"
}
Cancel domain action
DELETE/domains/{domainName}/actions
With this method you are able to cancel a domain action while it is still pending or being processed.
- domainName
string
(required) Example: example.comDomain name
Ssl ¶
This is the API endpoint for SSL services on a domain.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/ssl"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"certificates": [
{
"certificateId": 12358,
"commonName": "example.com",
"expirationDate": "2019-10-24 12:59:59",
"status": "active",
"canReissue": "true"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
List all SSL certificates
GET/domains/{domainName}/ssl
Retrieves a list of all SSL certificates for a domain.
- domainName
string
(required) Example: example.comDomain name
- certificates
- certificateId
The id of the certificate, can be used to retrieve additional info
- commonName
The domain name that the SSL certificate is added to. Start with ‘*.’ when the certificate is a wildcard.
- expirationDate
Expiration date
- status
The current status, either ‘active’, ‘inactive’, ‘busy’ or ‘expired’
Active: Certificate is not expired and can be used
Inactive: Certificate is being processed
Busy: Order is in progress
Expired: Certificate is malformed or gone.- canReissue
Whether the certificate can be reissued
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/ssl/12358"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"certificate": {
"certificateId": 12358,
"commonName": "example.com",
"expirationDate": "2019-10-24 12:59:59",
"status": "active",
"canReissue": "true"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Certificate with id '1337' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Get SSL certificate by id
GET/domains/{domainName}/ssl/{certificateId}
Retrieves a single SSL certificate by id.
- domainName
string
(required) Example: example.comDomain name
- certificateId
number
(required) Example: 12358The id of the SSL certificate
- certificate
- certificateId
The id of the certificate, can be used to retrieve additional info
- commonName
The domain name that the SSL certificate is added to. Start with ‘*.’ when the certificate is a wildcard.
- expirationDate
Expiration date
- status
The current status, either ‘active’, ‘inactive’, ‘busy’ or ‘expired’
Active: Certificate is not expired and can be used
Inactive: Certificate is being processed
Busy: Order is in progress
Expired: Certificate is malformed or gone.- canReissue
Whether the certificate can be reissued
AuthCode ¶
This is the API endpoint for obtaining domain auth-codes
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/auth-code"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"authCode": ""
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Tld '.be' does not allow this action"
}
Get auth-code of a domain name
GET/domains/{domainName}/auth-code
Returns the auth-code for a domain name.
Certain TLDs (like .be and .eu) do not provide direct access to the auth code and will send it to the email address of the current registrant upon request. To request the registry of this TLD to send the auth code, use the POST method instead.
- domainName
string
(required) Example: example.comDomain name
- authCode
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/auth-code"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Tld '.com' does not allow this action"
}
Request an auth code for a domain name
POST/domains/{domainName}/auth-code
Request the auth-code for a domain name.
This method will request the registry to email the auth code to the current registrant’s email address. This option is only supported for certain TLDs (like .be and .eu), where the registries do not provide direct access to the auth codes. For all other TLDs, you can use the GET method to instantly retrieve the code.
- domainName
string
(required) Example: example.comDomain name
Whois ¶
This is the API endpoint for executing whois domain lookups.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/whois"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"whois": ""
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Get WHOIS information for a domain name
GET/domains/{domainName}/whois
This method will return the WHOIS information for a domain name.
- domainName
string
(required) Example: example.comDomain name
- whois
Whitelabel ¶
Whitelabel accounts are used in order to hide the TransIP registrar details in a WHOIS lookup for a domain name. When a domain name is registered under a whitelabel account, the registrar will be an alternative whitelabel company, not offering domain name registration services on its own.
Whitelabel accounts are charged at an additional rate. Already registered domain names will be registered again, as they’re technically transfered to the new whitelabel registrar. This means existing domain names are charged in order to add them to your whitelabel account (though at a discounted rate).
Currently, TransIP’s whitelabeling service is available exclusively for .nl
domains.
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/whitelabel"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "You already have a whitelabel account."
}
Order a whitelabel account
POST/whitelabel
Order a whitelabel account from the API. Note that you do not need to order a whitelabel account for every registered domain name.
Please check the TransIP control panel to view the cost for a whitelabel account.
Warning: This API call will create an invoice!
Availability ¶
Check availability for domain names.
Response can be ‘inyouraccount’, ‘unavailable’, ‘notfree’, ‘free’, ‘internalpull’ or ‘internalpush’.
-
inyouraccount: The domain name is already in your account;
-
unavailable: The domain name is currently unavailable and can not be registered due to unknown reasons. In most cases, this has to do with registry policy (eg. the domain name is too short);
-
notfree: The domain name has already been registered;
-
free: The domain name is available and can be registered;
-
internalpull: The domain name is currently registered at TransIP and is available to be pulled from another account to yours;
-
internalpush: The domain name is currently registered at TransIP in your account and is available to be pushed to another account.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domain-availability/example.com"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"availability": {
"domainName": "example.com",
"status": "free",
"actions": [
"register"
]
}
}
Check availability for a domain name
GET/domain-availability/{domainName}
This method allows you to check the availability for a domain name.
- domainName
string
(required) Example: example.comDomain name
- availability
- domainName
The name of the domain
- status
The status for this domain. Possible statuses are: ‘inyouraccount’, ‘unavailable’, ‘notfree’, ‘free’, ‘internalpull’ and ‘internalpush’
- actions
List of available actions to perform on this domain. Possible actions are: ‘register’, ‘transfer’, ‘internalpull’ and ‘internalpush’
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"domainNames": [
"example.com",
"example.nl"
]
}
' \
"https://api.transip.nl/v6/domain-availability"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"domainNames": [
"example.com",
"example.nl"
]
}
Response headers
Content-Type: application/json
Response body
{
"availability": [
{
"domainName": "example.com",
"status": "free",
"actions": [
"register"
]
}
]
}
Check the availability for multiple domain names
GET/domain-availability
Check the availability for multiple domain names.
- domainNames
array of domainNames to check
- availability
- domainName
The name of the domain
- status
The status for this domain. Possible statuses are: ‘inyouraccount’, ‘unavailable’, ‘notfree’, ‘free’, ‘internalpull’ and ‘internalpush’
- actions
List of available actions to perform on this domain. Possible actions are: ‘register’, ‘transfer’, ‘internalpull’ and ‘internalpush’
Tlds ¶
This is the API endpoint for TLD services.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/tlds"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"tlds": [
{
"name": ".nl",
"price": 399,
"recurringPrice": 749,
"capabilities": [
"canRegister"
],
"minLength": 2,
"maxLength": 63,
"registrationPeriodLength": 12,
"cancelTimeFrame": 1
}
]
}
List all TLDs
GET/tlds
This method will return a list of all available TLDs currently offered by TransIP.
- tlds
- name
The name of this TLD, including the starting dot. E.g. .nl or .com.
- price
Price of the TLD in cents
- recurringPrice
Price for renewing the TLD in cents
- capabilities
A list of the capabilities that this Tld has (the things that can be done with a domain under this tld). Possible capabilities are: ‘requiresAuthCode’, ‘canRegister’, ‘canTransferWithOwnerChange’, ‘canTransferWithoutOwnerChange’, ‘canSetLock’, ‘canSetOwner’, ‘canSetContacts’, ‘canSetNameservers’, ‘supportsDnsSec’
- minLength
The minimum amount of characters need for registering a domain under this TLD.
- maxLength
The maximum amount of characters need for registering a domain under this TLD.
- registrationPeriodLength
Length in months of each registration or renewal period.
- cancelTimeFrame
Number of days a domain needs to be canceled before the renewal date.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/tlds/.nl"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"tld": {
"name": ".nl",
"price": 399,
"recurringPrice": 749,
"capabilities": [
"canRegister"
],
"minLength": 2,
"maxLength": 63,
"registrationPeriodLength": 12,
"cancelTimeFrame": 1
}
}
Get info for a TLD
GET/tlds/{tld}
Get information about a specific TLD. General details such as price, renewal price and minimum registration length are outlined in the output.
- tld
string
(required) Example: .nlTop Level Domain.
- tld
- name
The name of this TLD, including the starting dot. E.g. .nl or .com.
- price
Price of the TLD in cents
- recurringPrice
Price for renewing the TLD in cents
- capabilities
A list of the capabilities that this Tld has (the things that can be done with a domain under this tld). Possible capabilities are: ‘requiresAuthCode’, ‘canRegister’, ‘canTransferWithOwnerChange’, ‘canTransferWithoutOwnerChange’, ‘canSetLock’, ‘canSetOwner’, ‘canSetContacts’, ‘canSetNameservers’, ‘supportsDnsSec’
- minLength
The minimum amount of characters need for registering a domain under this TLD.
- maxLength
The maximum amount of characters need for registering a domain under this TLD.
- registrationPeriodLength
Length in months of each registration or renewal period.
- cancelTimeFrame
Number of days a domain needs to be canceled before the renewal date.
/ VPS ¶
VPS ¶
The API endpoint for VPS services allows you to manage all VPS services in your account.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"vpss": [
{
"name": "example-vps",
"uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
"description": "example VPS",
"productName": "vps-bladevps-x1",
"operatingSystem": "ubuntu-18.04",
"diskSize": 157286400,
"memorySize": 4194304,
"cpus": 2,
"status": "running",
"flavor": "shared",
"ipAddress": "37.97.254.6",
"macAddress": "52:54:00:3b:52:65",
"currentSnapshots": 1,
"maxSnapshots": 10,
"isLocked": false,
"isBlocked": false,
"isCustomerLocked": false,
"availabilityZone": "ams0",
"tags": [
"customTag",
"anotherTag"
],
"createdAt": "2024-01-01 23:59:59"
}
]
}
List all VPSs
GET/vps
Returns a list of all VPSs in the account.
This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.
- tags
string
(optional) Example: /vps?tags=customTag,anotherTagTags to filter by, separated by a comma.
- vpss
- name
The unique VPS name
- uuid
The unique identifier for the VPS
- description
The name that can be set by customer
- productName
The product name
- operatingSystem
The VPS OperatingSystem
- diskSize
The VPS disk size in kB
- memorySize
The VPS memory size in kB
- cpus
The VPS cpu count
- status
The VPS status, either ‘created’, ‘installing’, ‘running’, ‘stopped’ or ‘paused’
- flavor
The VPS flavor, either ‘dedicated’, ‘shared’ or ‘flexible’
- ipAddress
The VPS main ipAddress
- macAddress
The VPS macaddress
- currentSnapshots
The amount of snapshots that is used on this VPS
- maxSnapshots
The maximum amount of snapshots for this VPS
- isLocked
Whether or not another process is already doing stuff with this VPS
- isBlocked
If the VPS is administratively blocked
- isCustomerLocked
If this VPS is locked by the customer
- availabilityZone
The name of the availability zone the VPS is in
- tags
The custom tags added to this VPS
- createdAt
The VPS creation datetime (UTC)
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"vps": {
"name": "example-vps",
"uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
"description": "example VPS",
"productName": "vps-bladevps-x1",
"operatingSystem": "ubuntu-18.04",
"diskSize": 157286400,
"memorySize": 4194304,
"cpus": 2,
"status": "running",
"flavor": "shared",
"ipAddress": "37.97.254.6",
"macAddress": "52:54:00:3b:52:65",
"currentSnapshots": 1,
"maxSnapshots": 10,
"isLocked": false,
"isBlocked": false,
"isCustomerLocked": false,
"availabilityZone": "ams0",
"tags": [
"customTag",
"anotherTag"
],
"createdAt": "2024-01-01 23:59:59"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with identifier 'example-vps' not found"
}
Get VPS by identifier
GET/vps/{vpsIdentifier}
Get information on specific VPS by identifier (name or uuid).
Note: for vpsIdentifier
, use the provided name (format: username-vpsXX) or uuid.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- vps
- name
The unique VPS name
- uuid
The unique identifier for the VPS
- description
The name that can be set by customer
- productName
The product name
- operatingSystem
The VPS OperatingSystem
- diskSize
The VPS disk size in kB
- memorySize
The VPS memory size in kB
- cpus
The VPS cpu count
- status
The VPS status, either ‘created’, ‘installing’, ‘running’, ‘stopped’ or ‘paused’
- flavor
The VPS flavor, either ‘dedicated’, ‘shared’ or ‘flexible’
- ipAddress
The VPS main ipAddress
- macAddress
The VPS macaddress
- currentSnapshots
The amount of snapshots that is used on this VPS
- maxSnapshots
The maximum amount of snapshots for this VPS
- isLocked
Whether or not another process is already doing stuff with this VPS
- isBlocked
If the VPS is administratively blocked
- isCustomerLocked
If this VPS is locked by the customer
- availabilityZone
The name of the availability zone the VPS is in
- tags
The custom tags added to this VPS
- createdAt
The VPS creation datetime (UTC)
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"productName": "vps-bladevps-x8",
"addons": [
"vps-addon-1-extra-cpu-core"
],
"availabilityZone": "ams0",
"description": "example vps description",
"operatingSystem": "ubuntu-18.04",
"installFlavour": "installer",
"hostname": "server01.example.com",
"username": "linus",
"hashedPassword": "$2y$10$kDwnrkGedxn4HtdAPl86D..sdtnW5aLeHzPuJ8UbAWOOiSiBDXYkm",
"sshKeys": [
"ssh-rsa AAAAB3NzaC1yc2EAAA...",
"ssh-ed25519 AAAAC3NzaC1l..."
],
"base64InstallText": "",
"licenses": [
"cpanel-premier-200"
]
}
' \
"https://api.transip.nl/v6/vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"productName": "vps-bladevps-x8",
"addons": [
"vps-addon-1-extra-cpu-core"
],
"availabilityZone": "ams0",
"description": "example vps description",
"operatingSystem": "ubuntu-18.04",
"installFlavour": "installer",
"hostname": "server01.example.com",
"username": "linus",
"hashedPassword": "$2y$10$kDwnrkGedxn4HtdAPl86D..sdtnW5aLeHzPuJ8UbAWOOiSiBDXYkm",
"sshKeys": [
"ssh-rsa AAAAB3NzaC1yc2EAAA...",
"ssh-ed25519 AAAAC3NzaC1l..."
],
"base64InstallText": "",
"licenses": [
"cpanel-premier-200"
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "No valid payment information found. Please add your payment information through the Controlpanel on the website."
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS product 'vps-bladevps-x1337' is not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS product addon 'vps-addon-extra-pie' is not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "OperatingSystem with name 'windows-xp' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The availability zone 'wtf1' is not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The availability zone 'ams0' is not available"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid hostname: 'ex@mple.test.nl'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "InstallText not base64 encoded"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The decoded base64InstallText is over 49152 bytes (48 KiB) long"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided SSH key 'ssh-rsa AAAAB3NzaC_INVALIDKEY_1yc2EAAAADAQA' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Provided installFlavour 'strawberry' not supported for this operatingsystem, available flavours are: installer"
}
Response headers
Content-Type: application/json
Response body
{
"error": "OperatingSystem 'WindowsServer2022Standard' is not supported on the specifications of the provided Vps"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'username' can be 32 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'description' can be 32 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
"error": "License 'plesk-co-op-50' is invalid for operating system 'CPanel-alma8-latest'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Only one operating system license should be provided"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Field 'licenses' with value 'cpanel-premier-200!' contains a symbol, this is now allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Currently we only support setting the hashed password for the root user"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Given password is not hashed with the bcrypt algorithm"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Parameter 'hashedPassword' can only be set in combination with the cloudinit installation flavour"
}
Order a new VPS
POST/vps
Using this API call, you are able to order a new VPS. Values associated to the newly delivered VPS will be returned in a new call respectively. When the new VPS is delivered it will be added to the output of the VPS list method above.
-
You can specify additional add-ons in an array (not required) to customize the specifications of your VPS;
-
To get a list of available add-ons, please use the List all VPS products call;
-
When a hostname is provided, the first 32 chars of this will be used as the description of the VPS. The hostname will be validated when ordering a preinstallable web controlpanel like cPanel.
Provide a installFlavour to choose whether a operatingSystem should be deployed with a regular installer or a preinstalled cloudinit image. Check the GET OperatingSystems function to see what flavours are available for you operatingSystem.
When choosing installer
the base64InstallText
will be interpreted as a preseed or kickstart file, when choosing cloudinit
it will be interpreted as cloudinit UserData.
SSHKeys are optional for a cloudinit
installation, when no keys are provided a OneTimePassword will be generated and emailed to you.
Warning: This API call will create an invoice!
- productName
Name of the product
- addons
Array with additional addons
- availabilityZone
The name of the availability zone where the vps should be created
- description
The description of the VPS
- operatingSystem
The name of the operating system to install
- installFlavour
The flavour of OS installation
installer
,preinstallable
orcloudinit
check GET OperatingSystem to see what flavours your OS supports- hostname
The name for the host, only needed for installing a preinstallable control panel image
- username
Username used for account creating during cloudinit installation (max 32 chars)
- hashedPassword
password used for cloud init installation account.
- sshKeys
array of public ssh key’s to use for account creating during installation
- base64InstallText
Base64 encoded preseed / kickstart / cloudinit instructions, when installing unattended. The decoded string may be up to 49152 bytes (48 KiB) long.
- licenses
Licenses you want to add to your
preinstallable
installation flavor
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"vpss": [
{
"productName": "vps-bladevps-x8",
"addons": [
"vps-addon-1-extra-cpu-core"
],
"availabilityZone": "ams0",
"description": "example vps description",
"operatingSystem": "ubuntu-18.04",
"installFlavour": "installer",
"hostname": "",
"username": "ubuntu-user",
"hashedPassword": "$2y$10$kDwnrkGedxn4HtdAPl86D..sdtnW5aLeHzPuJ8UbAWOOiSiBDXYkm",
"sshKeys": [
"ssh-rsa AAAAB3NzaC1yc2EAAA...",
"ssh-ed25519 AAAAC3NzaC1l..."
],
"base64InstallText": "",
"licenses": [
"cpanel-premier-200",
"cpanel-premier-500"
]
},
{
"productName": "vps-bladevps-x8",
"addons": [
"vps-addon-1-extra-cpu-core"
],
"availabilityZone": "ams0",
"description": "example vps description",
"operatingSystem": "ubuntu-18.04",
"installFlavour": "installer",
"hostname": "",
"username": "ubuntu-user",
"hashedPassword": "$2y$10$kDwnrkGedxn4HtdAPl86D..sdtnW5aLeHzPuJ8UbAWOOiSiBDXYkm",
"sshKeys": [
"ssh-rsa AAAAB3NzaC1yc2EAAA...",
"ssh-ed25519 AAAAC3NzaC1l..."
],
"base64InstallText": "",
"licenses": [
"cpanel-premier-200",
"cpanel-premier-500"
]
}
]
}
' \
"https://api.transip.nl/v6/vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"vpss": [
{
"productName": "vps-bladevps-x8",
"addons": [
"vps-addon-1-extra-cpu-core"
],
"availabilityZone": "ams0",
"description": "example vps description",
"operatingSystem": "ubuntu-18.04",
"installFlavour": "installer",
"hostname": "",
"username": "ubuntu-user",
"hashedPassword": "$2y$10$kDwnrkGedxn4HtdAPl86D..sdtnW5aLeHzPuJ8UbAWOOiSiBDXYkm",
"sshKeys": [
"ssh-rsa AAAAB3NzaC1yc2EAAA...",
"ssh-ed25519 AAAAC3NzaC1l..."
],
"base64InstallText": "",
"licenses": [
"cpanel-premier-200",
"cpanel-premier-500"
]
},
{
"productName": "vps-bladevps-x8",
"addons": [
"vps-addon-1-extra-cpu-core"
],
"availabilityZone": "ams0",
"description": "example vps description",
"operatingSystem": "ubuntu-18.04",
"installFlavour": "installer",
"hostname": "",
"username": "ubuntu-user",
"hashedPassword": "$2y$10$kDwnrkGedxn4HtdAPl86D..sdtnW5aLeHzPuJ8UbAWOOiSiBDXYkm",
"sshKeys": [
"ssh-rsa AAAAB3NzaC1yc2EAAA...",
"ssh-ed25519 AAAAC3NzaC1l..."
],
"base64InstallText": "",
"licenses": [
"cpanel-premier-200",
"cpanel-premier-500"
]
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "No valid payment information found. Please add your payment information through the Controlpanel on the website."
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS product 'vps-bladevps-x1337' is not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS product addon 'vps-addon-extra-pie' is not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "OperatingSystem with name 'windows-xp' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The availability zone 'wtf1' is not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The availability zone 'ams0' is not available"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid hostname: 'ex@mple.test.nl'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided SSH key 'ssh-rsa AAAAB3NzaC_INVALIDKEY_1yc2EAAAADAQA' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Provided installFlavour 'strawberry' not supported for this operatingsystem, available flavours are: installer"
}
Response headers
Content-Type: application/json
Response body
{
"error": "OperatingSystem 'WindowsServer2022Standard' is not supported on the specifications of the provided Vps"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'username' can be 32 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'description' can be 32 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
"error": "License 'plesk-co-op-50' is invalid for operating system 'CPanel-alma8-latest'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Only one operating system license should be provided"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Field 'licenses' with value 'cpanel-premier-200!' contains a symbol, this is now allowed"
}
Order multiple VPSs
POST/vps
When ordering multiple VPSs at once, specify the VPS specs as in the order function but wrapped in an array.
Warning: This API call will create an invoice!
- vpss
Array with multiple VPS specs
- productName
Name of the product
- addons
Array with additional addons
- availabilityZone
The name of the availability zone where the vps should be created
- description
The description of the VPS
- operatingSystem
The name of the operating system to install
- installFlavour
The flavour of OS installation
installer
,preinstallable
orcloudinit
check GET OperatingSystem to see what flavours your OS supports- hostname
The name for the host, only needed for installing a preinstallable control panel image
- username
VPS User
- hashedPassword
The hashedPassword for the specified user
- sshKeys
Array of public ssh key’s to use for account creating during installation
- base64InstallText
Base64 encoded preseed / kickstart instructions, when installing unattended. The decoded string may be up to 49152 bytes (48 KiB) long.
- licenses
Licenses you want to add to your
preinstallable
installation flavor
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"vpsName": "example-vps",
"targetProductName": "vps-bladevps-x8",
"availabilityZone": "ams0"
}
' \
"https://api.transip.nl/v6/vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"vpsName": "example-vps",
"targetProductName": "vps-bladevps-x8",
"availabilityZone": "ams0"
}
Response headers
Content-Type: application/json
Response body
{
"error": "No valid payment information found. Please add your payment information through the Controlpanel on the website."
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with identifier 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Administrative error, unable to clone VPS"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Clone a VPS
POST/vps
Use this API call in order to clone an existing VPS. There are a few things to take into account when you want to clone an existing VPS to a new VPS:
-
If the original VPS (which you’re going to clone) is currently locked, the clone will fail;
-
Cloned control panels can be used on the VPS, but as the IP address changes, this does require you to synchronise the new license on the new VPS (licenses are often IP-based);
-
If you choose a target product name and such product doesn’t have enough disk space to fit the current VPS, the clone will fail;
-
You cannot clone a PerformanceVPS or BladeVPS to a SandboxVPS;
-
Possibly, your VPS has its network interface(s) configured using (a) static IP(‘s) rather than a dynamic allocation using DHCP. If this is the case, you have to configure the new IP(‘s) on the new VPS. Do note that this is not the case with our pre-installed control panel images;
-
VPS add-ons such as Big Storage aren’t affected by cloning - these will stay attached to the original VPS and can’t be swapped automatically
Warning: As cloning is a paid service, an invoice will be generated
- vpsName
The vps name of the VPS to clone.
- targetProductName
Name of the product used by the cloned VPS
- availabilityZone
The name of the availability zone where the clone should be created
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"vps": {
"name": "example-vps",
"uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
"description": "example VPS",
"productName": "vps-bladevps-x1",
"operatingSystem": "ubuntu-18.04",
"diskSize": 157286400,
"memorySize": 4194304,
"cpus": 2,
"status": "running",
"flavor": "shared",
"ipAddress": "37.97.254.6",
"macAddress": "52:54:00:3b:52:65",
"currentSnapshots": 1,
"maxSnapshots": 10,
"isLocked": false,
"isBlocked": false,
"isCustomerLocked": false,
"availabilityZone": "ams0",
"tags": [
"customTag",
"anotherTag"
],
"createdAt": "2024-01-01 23:59:59"
}
}
' \
"https://api.transip.nl/v6/vps/example-vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"vps": {
"name": "example-vps",
"uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
"description": "example VPS",
"productName": "vps-bladevps-x1",
"operatingSystem": "ubuntu-18.04",
"diskSize": 157286400,
"memorySize": 4194304,
"cpus": 2,
"status": "running",
"flavor": "shared",
"ipAddress": "37.97.254.6",
"macAddress": "52:54:00:3b:52:65",
"currentSnapshots": 1,
"maxSnapshots": 10,
"isLocked": false,
"isBlocked": false,
"isCustomerLocked": false,
"availabilityZone": "ams0",
"tags": [
"customTag",
"anotherTag"
],
"createdAt": "2024-01-01 23:59:59"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with identifier 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'description' can be 32 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Update a VPS
PUT/vps/{vpsIdentifier}
In this API call you can lock/unlock a VPS, update VPS description, and add/remove tags.
Locking a VPS
Locking a VPS prevents accidental execution of API calls and manual actions through the control panel.
For locking the VPS, set isCustomerLocked
to true
. Set the value to false
for unlocking the VPS.
Change a VPS description
You can change your VPS description by simply changing the description
attribute. Note that the identifier key name
will not be changed. The description can be maximum 32 character longs
VPS Tags
To add/remove tags, you must update the tags
attribute. Every time you make a call with a changed tags attribute, the existing tags are overridden.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- vps
- name
The unique VPS name
- uuid
The unique identifier for the VPS
- description
The name that can be set by customer
- productName
The product name
- operatingSystem
The VPS OperatingSystem
- diskSize
The VPS disk size in kB
- memorySize
The VPS memory size in kB
- cpus
The VPS cpu count
- status
The VPS status, either ‘created’, ‘installing’, ‘running’, ‘stopped’ or ‘paused’
- flavor
The VPS flavor, either ‘dedicated’, ‘shared’ or ‘flexible’
- ipAddress
The VPS main ipAddress
- macAddress
The VPS macaddress
- currentSnapshots
The amount of snapshots that is used on this VPS
- maxSnapshots
The maximum amount of snapshots for this VPS
- isLocked
Whether or not another process is already doing stuff with this VPS
- isBlocked
If the VPS is administratively blocked
- isCustomerLocked
If this VPS is locked by the customer
- availabilityZone
The name of the availability zone the VPS is in
- tags
The custom tags added to this VPS
- createdAt
The VPS creation datetime (UTC)
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "start"
}
' \
"https://api.transip.nl/v6/vps/example-vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "start"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with identifier 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Start a VPS
PATCH/vps/{vpsIdentifier}
This API call allows you to start a VPS, given that it’s currently in a stopped state.
To start a VPS, send a PATCH request with the action
attribute set to start
.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- action
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "stop"
}
' \
"https://api.transip.nl/v6/vps/example-vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "stop"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with identifier 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Stop a VPS
PATCH/vps/{vpsIdentifier}
By setting the action
attribute to stop
, you can put the specified VPS in a stopped state.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- action
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "reset"
}
' \
"https://api.transip.nl/v6/vps/example-vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "reset"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with identifier 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Reset a VPS
PATCH/vps/{vpsIdentifier}
This API call will reset the specified VPS. A reset is essentially the stop and start command combined into one
To reset a VPS, send a PATCH request with the action
attribute set to reset
.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- action
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "handover",
"targetCustomerName": "example2"
}
' \
"https://api.transip.nl/v6/vps/example-vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "handover",
"targetCustomerName": "example2"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with identifier 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Target user 'example2' does not exist"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Error Processing Handover, One or more items are already being handovered"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Target user 'example2' is not capable of receiving handover"
}
Handover a VPS
PATCH/vps/{vpsIdentifier}
Handover a VPS to another Account. This call will initiate the handover process. the actual handover will be done when the target customer accepts the handover.
Note: the VPS will be shut down in order to handover.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- action
- targetCustomerName
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"endTime": "end"
}
' \
"https://api.transip.nl/v6/vps/example-vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"endTime": "end"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with identifier 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid cancellation time: 'now', please use either 'end' or 'immediately'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Product already has cancellation pending"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Cancel a VPS
DELETE/vps/{vpsIdentifier}
Using the DELETE method on a VPS will cancel the VPS, thus deleting it.
Upon cancellation This will wipe all data on the VPS and permanently destroy it.
You can set the endTime
attribute to ‘end’ or ‘immediately’, this has the following implications:
-
end: The VPS will be terminated from the end date of the agreement as can be found in the applicable quote;
-
immediately: The VPS will be terminated immediately.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- endTime
Cancellation time, either ‘end’ (default) or ‘immediately’
Usage ¶
This is the API endpoint for VPS usage data.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"types": "cpu,disk,network",
"dateTimeStart": 1500538995,
"dateTimeEnd": 1500542619
}
' \
"https://api.transip.nl/v6/vps/example-vps/usage"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"types": "cpu,disk,network",
"dateTimeStart": 1500538995,
"dateTimeEnd": 1500542619
}
Response headers
Content-Type: application/json
Response body
{
"usage": {
"cpu": [
{
"percentage": 3.11,
"date": 1574783109
}
],
"disk": [
{
"iopsRead": 0.27,
"iopsWrite": 0.13,
"date": 1574783109
}
],
"network": [
{
"mbitOut": 100.2,
"mbitIn": 249.93,
"date": 1574783109
}
]
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The parameter 'dateTimeStart' is not a number."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The timestamp 'dateTimeEnd' cannot be negative."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The timestamp 'dateTimeEnd' cannot be in the future."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The time period is too large, it should not be bigger than one month."
}
Response headers
Content-Type: application/json
Response body
{
"error": "These are invalid usage types: invalid, type."
}
Get usage data for a VPS
GET/vps/{vpsIdentifier}/usage
Use this API call to retrieve usage data for a specific VPS. Make sure to specify the dateTimeStart
and dateTimeEnd
parameters in UNIX timestamp format.
Please take the following into account:
-
The
dateTimeStart
anddateTimeEnd
parameters allow for gathering information about a specific time period, when not specified the output will contain data for the past 24 hours; -
The difference between
dateTimeStart
anddateTimeEnd
parameters may not exceed one month.
For traffic-related information and statistics, use the Get traffic information for a VPS API call.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- types
The types of statistics that can be returned,
cpu
,disk
andnetwork
can be specified in a comma seperated way. If not specified, all data will be returned.- dateTimeStart
The start date of the usage statistics
- dateTimeEnd
The end date of the usage statistics
- usage
- cpu
- percentage
The percentage of CPU usage for this entry
- date
Date of the entry, by default in UNIX timestamp format
- disk
- iopsRead
The read IOPS for this entry
- iopsWrite
The write IOPS for this entry
- date
Date of the entry, by default in UNIX timestamp format
- network
- mbitOut
The amount of outbound traffic in Mbps for this usage entry
- mbitIn
The amount of inbound traffic in Mbps for this usage entry
- date
Date of the entry, by default in UNIX timestamp format
VPS VNC Data ¶
This is the API endpoint for VPS VNC data
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/vnc-data"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"vncData": {
"host": "vncproxy.transip.nl",
"path": "websockify?token=esco024gzqwyeeb5nexayi2gve09paw9dytumyxqzurxj5t642o5p6myzisn5gch",
"url": "https://vncproxy.transip.nl/websockify?token=esco024gzqwyeeb5nexayi2gve09paw9dytumyxqzurxj5t642o5p6myzisn5gch",
"token": "esco024gzqwyeeb5nexayi2gve09paw9dytumyxqzurxj5t642o5p6myzisn5gch",
"password": "fVpTyDrhMiuYBXxn"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS console for 'example-vps' is currently unavailable"
}
Get VNC data for a VPS
GET/vps/{vpsIdentifier}/vnc-data
Get the location, token and password in order to connect directly to the VNC console of your VPS.
Please note, you cannot directly connect to the proxy using a VNC client, use a client that supports websockets like https://github.com/novnc/noVNC
Use the information as URL query parameters, or use the URL in the url parameter directly. Then enter the password. See the link below for an example of how to provide URL query parameters to a hosted novnc instance.
By default novnc understands the following url parameters:
-
host the host hosting the vnc proxy, this should be
vncproxy.transip.nl
-
path the path to request on the host,
websockify?token=YOURTOKEN
-
password the vnc password
-
autoconnect whether or not to start connecting once you loaded the page
An example of all parameters together in one url would be https://novnc.com/noVNC/vnc.html?host=vncproxy.transip.nl&path=websockify?token=esco024gzqwyeeb5nexayi2gve09paw9dytumyxqzurxj5t642o5p6myzisn5gch&password=fVpTyDrhMiuYBXxn&autoconnect=true
Warning: We do recommend running novnc locally or hosting your own novnc page, this way you can make sure your token and password remain private.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- vncData
- host
Location of the VNC Proxy
- path
Websocket path including the token
- url
Complete websocket URL
- token
Token to identify the VPS to connect to (changes dynamically)
- password
Password to setup up the VNC connection (changes dynamically)
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/vnc-data"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS console for 'example-vps' is currently unavailable"
}
Regenerate VNC token for a vps
PATCH/vps/{vpsIdentifier}/vnc-data
Call this method to regenerate the VNC credentials for a VPS.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
Addons ¶
This is the API endpoint for VPS addons services.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/addons"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"addons": {
"active": [
{
"name": "example-product-name",
"description": "This is an example product",
"price": 499,
"recurringPrice": 799
}
],
"cancellable": [
{
"name": "example-product-name",
"description": "This is an example product",
"price": 499,
"recurringPrice": 799
}
],
"available": [
{
"name": "example-product-name",
"description": "This is an example product",
"price": 499,
"recurringPrice": 799
}
]
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
List addons for a VPS
GET/vps/{vpsIdentifier}/addons
This method will return all active, cancelable and available add-ons for a VPS.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- addons
- active
A list of all active addons
- name
Name of the product
- description
Describes this product
- price
Price in cents
- recurringPrice
The recurring price for the product in cents
- cancellable
A list of addons that you can cancel
- name
Name of the product
- description
Describes this product
- price
Price in cents
- recurringPrice
The recurring price for the product in cents
- available
A list of available addons that you can order
- name
Name of the product
- description
Describes this product
- price
Price in cents
- recurringPrice
The recurring price for the product in cents
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"addons": [
"vps-addon-1-extra-ip-address"
]
}
' \
"https://api.transip.nl/v6/vps/example-vps/addons"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"addons": [
"vps-addon-1-extra-ip-address"
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Addon order limit reached for addon product element 'memory-size'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS product addon 'example-addon' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Order addons for a VPS
POST/vps/{vpsIdentifier}/addons
In order to extend a specific VPS with add-ons, use this API call.
The type of add-ons that can be ordered range from extra IP addresses to hardware add-ons such as an extra core or additional SSD disk space.
Warning: This API call will create a new invoice for the specified add-on(s)
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- addons
Addons to be added
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/addons/vps-addon-1-extra-ip-address"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "The addon 'vps-addon-100-gb-extra-harddisk' is not cancellable."
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Product already has cancellation pending"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Cancel an addon for a VPS
DELETE/vps/{vpsIdentifier}/addons/{addonName}
By using this API call, you can cancel an add-on by name, specifying the VPS name as well. Due to technical restrictions (possible dataloss) storage add-ons cannot be cancelled.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- addonName
string
(required) Example: vps-addon-1-extra-ip-addressAddon name
VPS Licenses ¶
This is the API endpoint for VPS licenses.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/licenses"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"licenses": {
"active": [
{
"id": 42,
"name": "cpanel-admin",
"price": 1050,
"recurringPrice": 1050,
"type": "addon",
"quantity": 1,
"maxQuantity": 1,
"keys": [
{
"name": "Cpanel license key",
"key": "XXXXXXXXXXX"
}
]
}
],
"cancellable": [
{
"id": 42,
"name": "cpanel-admin",
"price": 1050,
"recurringPrice": 1050,
"type": "addon",
"quantity": 1,
"maxQuantity": 1,
"keys": [
{
"name": "Cpanel license key",
"key": "XXXXXXXXXXX"
}
]
}
],
"available": [
{
"name": "cpanel-pro",
"price": 2750,
"recurringPrice": 2750,
"type": "operating-system",
"minQuantity": 1,
"maxQuantity": 1
}
]
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
List licenses for a VPS
GET/vps/{vpsIdentifier}/licenses
This method will return all active, cancellable and available licenses for a VPS.
Operating system licenses (type: operating-system
) cannot be directly purchased, or cancelled, they are attached to your VPS the moment you install an operating system that requires a license. Operating systems such as Plesk, DirectAdmin, cPanel and etc need a valid license. An operating system license can only be upgraded or downgraded by using the Update an operating system license API call.
Addon licenses (type: addon
) can be purchased individually through the Order an addon license API call.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- licenses
- active
A list of licenses active on your VPS
- id
License Id
- name
License name
- price
Price in cents
- recurringPrice
Recurring price in cents
- type
License type: ‘operating-system’, ‘addon’
- quantity
Quantity already purchased
- maxQuantity
Maximum quantity you are allowed to purchase
- keys
License keys belonging to this specific License
- name
License key name
- key
License key
- cancellable
A list of licenses active on your VPS that you can cancel
- id
License Id
- name
License name
- price
Price in cents
- recurringPrice
Recurring price in cents
- type
License type: ‘operating-system’, ‘addon’
- quantity
Quantity already purchased
- maxQuantity
Maximum quantity you are allowed to purchase
- keys
License keys belonging to this specific License
- name
License key name
- key
License key
- available
A list of available licenses that you can order or switch to for your VPS
- name
License name
- price
Price in cents
- recurringPrice
Recurring price in cents
- type
License type: ‘operating-system’, ‘addon’
- minQuantity
Minimum quantity you have to purchase
- maxQuantity
Maximum quantity you are allowed to purchase
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"licenseName": "microsoft-office-professional",
"quantity": 1
}
' \
"https://api.transip.nl/v6/vps/example-vps/licenses"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"licenseName": "microsoft-office-professional",
"quantity": 1
}
Response headers
Content-Type: application/json
Response body
{
"error": "The limit for license 'installatron' has been reached"
}
Response headers
Content-Type: application/json
Response body
{
"error": "License with name 'cpanel-premier-1000' is not orderable as an addon license"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "License with name 'example-license' does not exist"
}
Response headers
Content-Type: application/json
Response body
{
"error": "License with name 'example-license' is not available"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The license could not be ordered due to an internal error"
}
Order an addon license
POST/vps/{vpsIdentifier}/licenses
In order to purchase an addon license for your VPS, use this API call.
The licenses that can be ordered can be requested using the get licenses api call.
Warning: This API call will create a new invoice for the specified license
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- licenseName
Name of the license that you want to order
- quantity
Quantity of the license that you want to order
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"newLicenseName": "cpanel-premier"
}
' \
"https://api.transip.nl/v6/vps/example-vps/licenses/18"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"newLicenseName": "cpanel-premier"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The installed operating system on your VPS does not have licenses"
}
Response headers
Content-Type: application/json
Response body
{
"error": "License with id '1' not up or downgradable"
}
Response headers
Content-Type: application/json
Response body
{
"error": "License with name 'installatron' and type 'addon' can't be used to up or downgrade"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cannot downgrade to License with name 'cpanel-admin', due to too many active cPanel users on the provided VPS"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name example-vps not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "License with id '1' is not attached to example-vps"
}
Response headers
Content-Type: application/json
Response body
{
"error": "License with name 'microsoft-office-365' is not available"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Update an operating system license
PUT/vps/{vpsIdentifier}/licenses/{licenseId}
Switch between operating system licenses using this API call.
You must provide your current License Id in the licenseId
parameter.
Provide your desired license name in the newLicenseName
parameter within the request body for either to upgrade or downgrade.
Warning: Changes made using this API call will reflect on your next invoice
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- licenseId
string
(required) Example: 18License Id
- newLicenseName
The name of the new license that you want to switch to
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/licenses/18"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "License with id '1' is not cancellable"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "License with id '123' does not exist"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Product already has cancellation pending"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Cancel an addon license
DELETE/vps/{vpsIdentifier}/licenses/{licenseId}
By using this API call, you can cancel a license by its id, specifying the VPS name as well. Operating system licenses cannot be cancelled.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- licenseId
string
(required) Example: 18License Id
Upgrades ¶
This is the API endpoint for VPS upgrades services.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/upgrades"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"upgrades": [
{
"name": "example-product-name",
"description": "This is an example product",
"price": 499,
"recurringPrice": 799
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
List available upgrades for a VPS
GET/vps/{vpsIdentifier}/upgrades
List all available product upgrades for a VPS.
Upgrades differentiate from add-ons in the sense that upgrades are VPS products like the vps-bladevps-pro-x16
VPS product.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- upgrades
- name
Name of the product
- description
Describes this product
- price
Price in cents
- recurringPrice
The recurring price for the product in cents
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"productName": "vps-bladevps-pro-x16"
}
' \
"https://api.transip.nl/v6/vps/example-vps/upgrades"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"productName": "vps-bladevps-pro-x16"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Downgrades are not supported."
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Upgrade with id 'vps-bladevps-pro-x9' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Upgrade a VPS
POST/vps/{vpsIdentifier}/upgrades
This API call allows you to upgrade a VPS by name and productName.
It’s not possible to downgrade a VPS, as most upgrades cannot be deallocated due to technical reasons (data loss when shrinking the disk space).
Your current add-ons will be transferred to your selected package. Add-ons that have become redundant are automatically cancelled and you only pay for add-ons that you need after an upgrade. So, if you have a BladeVPS X1 with an additional 100GB disk space Add-on then it will automatically expire after an upgrade to a BladeVPS X4.
Warning: This API call will create an invoice for the upgrade.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- productName
OperatingSystems ¶
This is the API endpoint for VPS operating systems.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/operating-systems"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"operatingSystems": [
{
"name": "CPanel-alma8-latest",
"description": "cPanel 90.0.5 + AlmaLinux 8",
"baseName": "AlmaLinux",
"version": "90.05",
"price": 2000,
"installFlavours": [
"installer",
"preinstallable",
"cloudinit"
],
"licenses": [
{
"name": "cpanel-pro",
"price": 2750,
"recurringPrice": 2750,
"type": "operating-system",
"minQuantity": 1,
"maxQuantity": 1
}
],
"isPreinstallableImage": false,
"installFields": [
"hostname",
"hashedPassword"
],
"isDefault": false
}
]
}
List installable operating systems for a VPS
GET/vps/{vpsIdentifier}/operating-systems
We offer a number of operating systems and preinstalled images ready to be installed on any VPS. Using this API call, you can get a list of operating systems and preinstalled images available.
Commercial operating systems (such as Windows Server editions) and images shipping a commercial control panel contain the ‘price’ attribute, showing the price per month charged on top of the VPS itself.
A list with operating systems can also be found here
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- operatingSystems
- name
The operating system name
- description
Description
- baseName
The baseName of the operating system
- version
The version of the operating system
- price
The monthly price of the operating system in cents
- installFlavours
available flavours of installation for this operating system
- licenses
available licenses for this operating system
- name
License name
- price
Price in cents
- recurringPrice
Recurring price in cents
- type
License type: ‘operating-system’, ‘addon’
- minQuantity
Minimum quantity you have to purchase
- maxQuantity
Maximum quantity you are allowed to purchase
- isPreinstallableImage
Specifies if Operating System is a preinstallable image
- installFields
required installation fields for this operating system
- isDefault
Specifies if Operating System is the default version in the list
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"operatingSystemName": "ubuntu-22.04",
"hostname": "",
"installFlavour": "cloudinit",
"username": "bob",
"hashedPassword": "$2y$10$kDwnrkGedxn4HtdAPl86D..sdtnW5aLeHzPuJ8UbAWOOiSiBDXYkm",
"sshKeys": [
"ssh-rsa AAAAB3NzaC1yc2EAAA...",
"ssh-ed25519 AAAAC3NzaC1l..."
],
"base64InstallText": "",
"licenses": [
"cpanel-premier-200"
],
"acronisTenantId": "eede56d2-1dc6-4fbc-aa3e-ed73f0c41554"
}
' \
"https://api.transip.nl/v6/vps/example-vps/operating-systems"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"operatingSystemName": "ubuntu-22.04",
"hostname": "",
"installFlavour": "cloudinit",
"username": "bob",
"hashedPassword": "$2y$10$kDwnrkGedxn4HtdAPl86D..sdtnW5aLeHzPuJ8UbAWOOiSiBDXYkm",
"sshKeys": [
"ssh-rsa AAAAB3NzaC1yc2EAAA...",
"ssh-ed25519 AAAAC3NzaC1l..."
],
"base64InstallText": "",
"licenses": [
"cpanel-premier-200"
],
"acronisTenantId": "eede56d2-1dc6-4fbc-aa3e-ed73f0c41554"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The OperatingSystem 'ubuntu-15.04' does not exist"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "License with name 'plesk-co-op-51' does not exist"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid hostname: 'ex@mple.test.nl'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "InstallText not base64 encoded"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The decoded base64InstallText is over 49152 bytes (48 KiB) long"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cannot install preinstallable image unattended"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided SSH key 'ssh-rsa AAAAB3NzaC_INVALIDKEY_1yc2EAAAADAQA' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Provided installFlavour 'strawberry' not supported for this operating system, available flavours are: installer"
}
Response headers
Content-Type: application/json
Response body
{
"error": "OperatingSystem 'WindowsServer2022Standard' is not supported on the specifications of the provided Vps"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'username' can be 32 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
"error": "License 'plesk-co-op-50' is invalid for operating system 'CPanel-alma8-latest'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Currently we only support setting the hashed password for the root user"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Given password is not hashed with the bcrypt algorithm"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Parameter 'hashedPassword' can only be set in combination with the cloudinit installation flavour"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Parameter 'acronisTenantId' can only be set in combination with the cloudinit installation flavour"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Only one operating system license should be provided"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Install an operating system on a VPS
POST/vps/{vpsIdentifier}/operating-systems
With this method you can install operating systems and preinstalled images on a VPS.
A notable feature is the ability to specify if the installation should be unattended using the base64InstallText
parameter, allowing for automatic deployment of operating systems.
Provide an installFlavour to choose whether a operating system should be deployed with a regular installer or a preinstalled cloudinit image. Check the GET operating-systems function to see what flavours are available for you operating system.
When choosing installer
the base64InstallText
will be interpreted as a preseed or kickstart file, when choosing cloudinit
it will be interpreted as cloudinit UserData.
SSHKeys are optional for a cloudinit
installation, when no keys are provided a OneTimePassword will be generated and emailed to you.
Provide a license to override the default license of a preinstallable
operating system. As an example, once a cPanel installation is complete, the default cPanel license will allow you to create 5 user accounts. If the cPanel Pro license is provided, the default license is replaced, and after installation you are able to create 30 user accounts.
Warning: This will create an invoice when a non-free operating system or a non-free control panel is chosen.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- operatingSystemName
The name of the operating system
- hostname
Hostname is required for preinstallable web controlpanels
- installFlavour
Flavour of OS installation
installer
,preinstallable
orcloudinit
check GET operating-system to see what flavours of installation your OS supports.- username
username used for account creating during cloudinit installation (max 32 chars)
- hashedPassword
password used for cloud init installation account.
- sshKeys
array of public ssh keys to use for account creating during installation
- base64InstallText
Base64 encoded preseed / kickstart / cloudinit instructions, when installing unattended. The decoded string may be up to 49152 bytes (48 KiB) long.
- licenses
Licenses you want to add to your
preinstallable
installation flavor- acronisTenantId
Specify your Acronis Tenant Id if you would like to automatically install the Acronis Client on your VPS.
IP Addresses ¶
This is the API endpoint for VPS Ips services. To add an IP address, use the addons endpoint.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/ip-addresses"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"ipAddresses": [
{
"address": "37.97.254.6",
"subnetMask": "255.255.255.0",
"gateway": "37.97.254.1",
"dnsResolvers": [
"195.8.195.8",
"195.135.195.135"
],
"reverseDns": "example.com"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
List IP addresses for a VPS
GET/vps/{vpsIdentifier}/ip-addresses
This API call will return all IPv4 and IPv6 addresses attached to the VPS including Relevant network information like the gateway and subnet mask.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- ipAddresses
- address
The IP address
- subnetMask
Subnet mask
- gateway
Gateway
- dnsResolvers
The DNS resolvers you can use
- reverseDns
Reverse DNS, also known as the PTR record
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/ip-addresses/37.97.254.6"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"ipAddress": {
"address": "37.97.254.6",
"subnetMask": "255.255.255.0",
"gateway": "37.97.254.1",
"dnsResolvers": [
"195.8.195.8",
"195.135.195.135"
],
"reverseDns": "example.com"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "IP address '8.8.8.8' is not found on VPS 'example-vps'"
}
Get IP address info by address
GET/vps/{vpsIdentifier}/ip-addresses/{ipAddress}
Only return network information for the specified IP address.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- ipAddress
string
(required) Example: 37.97.254.6The IP address of the VPS
- ipAddress
- address
The IP address
- subnetMask
Subnet mask
- gateway
Gateway
- dnsResolvers
The DNS resolvers you can use
- reverseDns
Reverse DNS, also known as the PTR record
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"ipAddress": "2a01:7c8:3:1337::6"
}
' \
"https://api.transip.nl/v6/vps/example-vps/ip-addresses"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"ipAddress": "2a01:7c8:3:1337::6"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "IP address 'fe80::200:f8ff:fe21:67cfaa' is not valid"
}
Response headers
Content-Type: application/json
Response body
{
"error": "IP address '2a01:7c8:3:1337::6' is not in the VPS ipv6 Range"
}
Response headers
Content-Type: application/json
Response body
{
"error": "IP address '2a01:7c8:3:1337::6' already exists"
}
Add IPv6 address to a VPS
POST/vps/{vpsIdentifier}/ip-addresses
VPSes are deployed with an /64
IPv6 range. In order to set ReverseDNS for specific ipv6 addresses, you will have to add the IPv6 address via this command.
After adding an IPv6 address, you can set the reverse DNS for this address using the Update Reverse DNS API call.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- ipAddress
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"ipAddress": {
"address": "37.97.254.6",
"subnetMask": "255.255.255.0",
"gateway": "37.97.254.1",
"dnsResolvers": [
"195.8.195.8",
"195.135.195.135"
],
"reverseDns": "example.com"
}
}
' \
"https://api.transip.nl/v6/vps/example-vps/ip-addresses/37.97.254.6"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"ipAddress": {
"address": "37.97.254.6",
"subnetMask": "255.255.255.0",
"gateway": "37.97.254.1",
"dnsResolvers": [
"195.8.195.8",
"195.135.195.135"
],
"reverseDns": "example.com"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "IP address '8.8.8.8' is not found on VPS 'example-vps'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid hostname: 'test&@*#'"
}
Update reverse DNS for a VPS
PUT/vps/{vpsIdentifier}/ip-addresses/{ipAddress}
Reverse DNS for IPv4 addresses as well as IPv6 addresses can be updated using this API call.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- ipAddress
string
(required) Example: 37.97.254.6The IP address of the VPS
- ipAddress
- address
The IP address
- subnetMask
Subnet mask
- gateway
Gateway
- dnsResolvers
The DNS resolvers you can use
- reverseDns
Reverse DNS, also known as the PTR record
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/ip-addresses/37.97.254.6"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "IPv6 '2a01:0a0:aa00:00::1' cannot be deleted, your VPS requires at least one IPv6 address."
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "IPv6 address '2a01:0a0:aa00:00::1' is not found on VPS 'example-vps'"
}
Remove an IPv6 address from a VPS
DELETE/vps/{vpsIdentifier}/ip-addresses/{ipAddress}
This method allows you to remove specific IPv6 addresses from the registered list of IPv6 addresses within the VPS’s /64
IPv6 range.
Note that deleting an IP address will also wipe its reverse DNS information.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- ipAddress
string
(required) Example: 37.97.254.6The IP address of the VPS
Snapshots ¶
This is the API endpoint for VPS snapshots services.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/snapshots"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"snapshots": [
{
"name": "1572607577",
"description": "before upgrade",
"diskSize": 314572800,
"status": "creating",
"dateTimeCreate": "2019-07-14 12:21:11",
"operatingSystem": "ubuntu-18.04"
}
]
}
List snapshots for a VPS
GET/vps/{vpsIdentifier}/snapshots
This method allows you to list all snapshots that are taken of your VPS main disk.
A snapshot status can have the following values: ‘active‘, ‘creating‘, ‘reverting‘, ‘deleting‘, ‘pendingDeletion‘, ‘syncing‘, ‘moving‘ when status is ‘active‘ you can perform actions on it.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- snapshots
- name
The snapshot name
- description
The snapshot description
- diskSize
The size of the snapshot in kB
- status
The snapshot status (‘active’, ‘creating’, ‘reverting’, ‘deleting’, ‘pendingDeletion’, ‘syncing’, ‘moving’)
- dateTimeCreate
The snapshot creation date
- operatingSystem
The snapshot OperatingSystem
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/snapshots/1500027671"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"snapshot": {
"name": "1572607577",
"description": "before upgrade",
"diskSize": 314572800,
"status": "creating",
"dateTimeCreate": "2019-07-14 12:21:11",
"operatingSystem": "ubuntu-18.04"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Snapshot with name '1500027671' not found"
}
Get snapshot by name
GET/vps/{vpsIdentifier}/snapshots/{snapshotName}
Specifying the snapshot ID and the VPS name it’s associated with, allows for insight in snapshot details.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- snapshotName
string
(required) Example: 1500027671Name of the snapshot
- snapshot
- name
The snapshot name
- description
The snapshot description
- diskSize
The size of the snapshot in kB
- status
The snapshot status (‘active’, ‘creating’, ‘reverting’, ‘deleting’, ‘pendingDeletion’, ‘syncing’, ‘moving’)
- dateTimeCreate
The snapshot creation date
- operatingSystem
The snapshot OperatingSystem
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"description": "BeforeItsAllBroken",
"shouldStartVps": true
}
' \
"https://api.transip.nl/v6/vps/example-vps/snapshots"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"description": "BeforeItsAllBroken",
"shouldStartVps": true
}
Response headers
Content-Type: application/json
Response body
{
"error": "Snapshot limit reached"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Create snapshot of a VPS
POST/vps/{vpsIdentifier}/snapshots
With this API call you can create a snapshot of a VPS.
In case the creation of this snapshot leads to exceeding the maximum allowed snapshots, the API call will return an error and the snapshot will not be created - please order extra snapshots before proceeding.
Creating a snapshot allows for restoring it on another VPS using the Revert snapshot to a VPS given that its specifications equals or exceeds those of the snapshot’s source VPS.
We strongly recommend shutting the VPS down before taking a snapshot in order to prevent data loss, etc.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- description
- shouldStartVps
Specify whether the VPS should be started immediately after the snapshot was created, default is
true
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"destinationVpsName": "destination-vps"
}
' \
"https://api.transip.nl/v6/vps/example-vps/snapshots/1500027671"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"destinationVpsName": "destination-vps"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Snapshot '1500027671' diskSize '157286400' is bigger than destination diskSize '52428800'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "OperatingSystem 'example OS' is not supported on the specifications of the provided Vps"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The Snapshot '1500027671' is already locked to another action"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Revert snapshot to a VPS
PATCH/vps/{vpsIdentifier}/snapshots/{snapshotName}
This method can be used to revert a snapshot to a VPS. Specifying the destinationVpsName
attribute makes sure the snapshot is restored onto another VPS.
Networking may be configured statically on the source VPS, therefore breaking connectivity when restored onto another VPS with a new assigned IP. You should be able to alter this through the KVM console in the control panel in case SSH is unavailable.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- snapshotName
string
(required) Example: 1500027671Name of the snapshot
- destinationVpsName
When set, revert the snapshot to this VPS
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/snapshots/1500027671"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The Snapshot '1500027671' is already locked to another action."
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Delete a snapshot
DELETE/vps/{vpsIdentifier}/snapshots/{snapshotName}
Delete a VPS snapshot using this API call.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- snapshotName
string
(required) Example: 1500027671Name of the snapshot
VPS Backups ¶
This is the API endpoint for VPS backups services.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/backups"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"backups": [
{
"id": 712332,
"status": "active",
"dateTimeCreate": "2019-11-29 22:11:20",
"diskSize": 157286400,
"operatingSystem": "Ubuntu 19.10",
"availabilityZone": "ams0",
"retentionType": "weeklyBackupRetention"
}
]
}
List backups for a VPS
GET/vps/{vpsIdentifier}/backups
We offer multiple backup types, every VPS has 4 hourly backups by default, weekly backups are available for a small fee. This API call returns backups for both types.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- backups
- id
The backup id
- status
Status of the backup (‘active’, ‘creating’, ‘reverting’, ‘deleting’, ‘pendingDeletion’, ‘syncing’, ‘moving’)
- dateTimeCreate
The backup creation date
- diskSize
The backup disk size in kB
- operatingSystem
The backup operatingSystem
- availabilityZone
The name of the availability zone the backup is in
- retentionType
The backup retention type (daily, weekly)
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "revert",
"destinationVpsIdentifier": "destination-vps"
}
' \
"https://api.transip.nl/v6/vps/example-vps/backups/712332"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "revert",
"destinationVpsIdentifier": "destination-vps"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Backup with id '1234' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The Backup '34026' is already locked to another action"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on Backup '123' are temporary disabled"
}
Revert backup to a VPS
PATCH/vps/{vpsIdentifier}/backups/{backupId}
Reverting a VPS backup will restore the VPS to an earlier state.
Both the VPS name (that the backup belongs to) and the backup id are required. Please use the List backups for a VPS call in order to get the ID, as you can extract the backup id from its output.
To revert a backup to a VPS, send a PATCH request with an action
attribute set to revert
.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- backupId
number
(required) Example: 712332Id of the backup
- action
- destinationVpsIdentifier
(name or uuid) When set, revert the backup to this VPS
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "convert",
"description": "BeforeItsAllBroken"
}
' \
"https://api.transip.nl/v6/vps/example-vps/backups/712332"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "convert",
"description": "BeforeItsAllBroken"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Snapshot limit reached"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Backup with id '1234' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The Backup '34026' is already locked to another action"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on Backup '123' are temporary disabled"
}
Convert backup to snapshot
PATCH/vps/{vpsIdentifier}/backups/{backupId}
With this API call you can convert a backup to a snapshot for the VPS.
In case the creation of this snapshot leads to exceeding the maximum allowed snapshots, the API call will return an error and the snapshot will not be created please order extra snapshots before proceeding.
To convert a backup to a VPS snapshot, send a PATCH request with the action
attribute set to convert
.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- backupId
number
(required) Example: 712332Id of the backup
- action
- description
TrafficPool ¶
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/traffic-pool"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"trafficPoolInformation": [
{
"startDate": "2019-06-22",
"endDate": "2019-07-22",
"usedInBytes": 7860253754,
"maxInBytes": 1073741824000,
"expectedBytes": 1073741824000
}
]
}
Get traffic pool information
GET/traffic-pool
All the traffic of your VPSes combined, overusage will also be billed based on this information.
- trafficPoolInformation
- startDate
The start date in ‘Y-m-d’ format
- endDate
The end date in ‘Y-m-d’ format
- usedInBytes
The usage in bytes for this period
- maxInBytes
The maximum amount of bytes that can be used in this period
- expectedBytes
The expected amount of bytes that will be used in this period
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/traffic-pool/example-vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"trafficPoolInformation": [
{
"startDate": "2019-06-22",
"endDate": "2019-07-22",
"usedInBytes": 7860253754,
"maxInBytes": 1073741824000,
"expectedBytes": 1073741824000
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Get traffic information for a VPS
GET/traffic-pool/{vpsName}
Traffic information for a specific VPS can be retrieved using this API call. Statistics such as consumed bandwidth and network usage statistics are classified as traffic information.
- vpsName
string
(required) Example: example-vpsVPS name
- trafficPoolInformation
- startDate
The start date in ‘Y-m-d’ format
- endDate
The end date in ‘Y-m-d’ format
- usedInBytes
The usage in bytes for this period
- maxInBytes
The maximum amount of bytes that can be used in this period
- expectedBytes
The expected amount of bytes that will be used in this period
VPS Firewall ¶
This is the API endpoint for VPS firewall
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/firewall"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"vpsFirewall": {
"isEnabled": true,
"ruleSet": [
{
"description": "HTTP",
"startPort": 80,
"endPort": 80,
"protocol": "tcp",
"whitelist": [
"80.69.69.80/32",
"80.69.69.100/32",
"2a01:7c8:3:1337::1/128"
]
}
]
}
}
List firewall for a VPS
GET/vps/{vpsIdentifier}/firewall
The VPS firewall works as a whitelist stateful firewall for incoming traffic. Enable the Firewall to block everything, add rules to exclude certain traffic from being blocked.
To further filter traffic, IP’s can be whitelisted per rule. when no whitelist has been given for a specific rule, all traffic is allowed to this port.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- vpsFirewall
- isEnabled
Whether the firewall is enabled for this VPS
- ruleSet
Ruleset of the VPS
- description
The rule name
- startPort
The start port of this firewall rule
- endPort
The end port of this firewall rule
- protocol
The protocol
tcp
,udp
ortcp_udp
- whitelist
Whitelisted IP’s or ranges that are allowed to connect, empty to allow all
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"vpsFirewall": {
"isEnabled": true,
"ruleSet": [
{
"description": "HTTP",
"startPort": 80,
"endPort": 80,
"protocol": "tcp",
"whitelist": [
"80.69.69.80/32",
"80.69.69.100/32",
"2a01:7c8:3:1337::1/128"
]
}
]
}
}
' \
"https://api.transip.nl/v6/vps/example-vps/firewall"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"vpsFirewall": {
"isEnabled": true,
"ruleSet": [
{
"description": "HTTP",
"startPort": 80,
"endPort": 80,
"protocol": "tcp",
"whitelist": [
"80.69.69.80/32",
"80.69.69.100/32",
"2a01:7c8:3:1337::1/128"
]
}
]
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "IP range 'fe80::200:f8ff:fe21:67cfaa/200' is not valid"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Firewall 'example' has startPort '13371337' which should be larger than '0' and smaller than '65535'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Firewall 'example' has endPort '13371337' which should be larger than '0' and smaller than '65535'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Firewall 'example' has endPort '80' should be larger or equal than startPort '443'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Invalid whitelist entry provided '256.0.1.1'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Whitelisted entry count '21' exceeded maximum of '20''"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Rule 'HTTP' is already covered by 'HTTP-HTTPS'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Rulecount '51' exceeded maximum of '50'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'protocol' can only be one of the following value's 'tcp,udp,tdp_udp'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Port '25' is blocked administratively"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Update firewall for a VPS
PUT/vps/{vpsIdentifier}/firewall
Update the ruleset for a VPS. This will override all current rules set for this VPS.
The VPS Firewall works as a whitelist. when no entries are given, but the firewall is enabled. All incoming traffic will be blocked. IP’s or IP Ranges (v4/v6) can be whitelisted per rule. When no whitelist has been given for a specific rule, all incoming traffic is allowed to this port.
Protocol parameter can either be tcp
, udp
or tcp_udp
.
There is a maximum of 50 rules with each a maximum of 20 whitelist entries.
Any change to the firewall will temporary lock the VPS while the new rules are being applied.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- vpsFirewall
- isEnabled
Whether the firewall is enabled for this VPS
- ruleSet
Ruleset of the VPS
- description
The rule name
- startPort
The start port of this firewall rule
- endPort
The end port of this firewall rule
- protocol
The protocol
tcp
,udp
ortcp_udp
- whitelist
Whitelisted IP’s or ranges that are allowed to connect, empty to allow all
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "reset"
}
' \
"https://api.transip.nl/v6/vps/example-vps/firewall"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "reset"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Action should be one of the following: reset"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Reset firewall for a VPS
PATCH/vps/{vpsIdentifier}/firewall
Reset the ruleset for a VPS back to the default settings. This will override all current rules set for this VPS.
Any change to the firewall will temporary lock the VPS while the new rules are being applied.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- action
VPS Settings ¶
This endpoint can be used to toggle VPS settings on or off for a specified VPS.
VPS Settings are settings that are not necessarily part of the VPS itself but rather settings that can be toggled as an addition or deduction of functionalities.
An example of a setting would be blocking or unblocking the outbound mail ports for a specified VPS (Ports: 25, 465, 587). This setting is named blockVpsMailPorts.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/settings"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"settings": [
{
"name": "blockVpsMailPorts",
"dataType": "boolean",
"readOnly": false,
"value": {
"valueBoolean": true,
"valueString": "allow"
}
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Setting 'exampleSetting' is not an existing setting"
}
List All Settings for a VPS
GET/vps/{vpsIdentifier}/settings
This API call will return all available settings that could be toggled for a VPS.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- settings
- name
Setting Name
- dataType
Setting Datatype
- readOnly
Setting ReadOnly
- value
Setting Value
- valueBoolean
Boolean Value
- valueString
String Value
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/settings/blockVpsMailPorts"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"setting": {
"name": "blockVpsMailPorts",
"dataType": "boolean",
"readOnly": false,
"value": {
"valueBoolean": true,
"valueString": "allow"
}
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Setting 'exampleSetting' is not an existing setting"
}
Get VPS Setting Information
GET/vps/{vpsIdentifier}/settings/{setting}
Returns the current value for the specified setting.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- setting
string
(required) Example: blockVpsMailPortsThe Setting for the VPS
- setting
- name
Setting Name
- dataType
Setting Datatype
- readOnly
Setting ReadOnly
- value
Setting Value
- valueBoolean
Boolean Value
- valueString
String Value
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"setting": {
"name": "blockVpsMailPorts",
"dataType": "boolean",
"readOnly": false,
"value": {
"valueBoolean": true,
"valueString": "allow"
}
}
}
' \
"https://api.transip.nl/v6/vps/example-vps/settings/blockVpsMailPorts"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"setting": {
"name": "blockVpsMailPorts",
"dataType": "boolean",
"readOnly": false,
"value": {
"valueBoolean": true,
"valueString": "allow"
}
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Setting with name 'settingName' does not exist"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Setting name in JSON body does not match URI"
}
Response headers
Content-Type: application/json
Response body
{
"error": "No values are set in the value parameter"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Setting with name 'tcpMonitoringAvailable' is read only"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification allowed"
}
Update a setting for the specified VPS
PUT/vps/{vpsIdentifier}/settings/{setting}
This method allows you to update an available setting for the specified VPS.
There are a couple of things to keep in mind while sending this request:
-
You are able to set multiple value data types e.g. ‘valueBoolean’, ‘valueString’ however only the relevant datatype for the specified setting will be used.
-
You are not able to send an update request to a read only setting, please make sure to check which settings are specified as read only.
-
You are not able to send an update request without sending any values or leaving the values empty e.g. null values.
-
Please make sure that the setting name in the JSON body is equal to the setting name in the URI.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- setting
string
(required) Example: blockVpsMailPortsThe Setting for the VPS
- setting
- name
Setting Name
- dataType
Setting Datatype
- readOnly
Setting ReadOnly
- value
Setting Value
- valueBoolean
Boolean Value
- valueString
String Value
Private Networks ¶
Private networks are used for internal communication between VPSes that can be utilized best by non-public facing connectivity, data usage is unlimited and will not be billed
A private network offers the ability to connect your VPSes in a separate layer 2 network. IP address assignments and services like DHCP, DNS and routing are all in your own freedom to choose and set up.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/private-networks"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"privateNetworks": [
{
"name": "example-privatenetwork",
"description": "FilesharingNetwork",
"isBlocked": false,
"isLocked": false,
"vpsNames": [
"example-vps",
"example-vps2"
],
"connectedVpses": [
{
"name": "example-vps",
"uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
"description": "example VPS",
"macAddress": "52:54:00:3b:52:65",
"isLocked": false,
"isBlocked": false,
"isCustomerLocked": false
}
]
}
]
}
List all private networks
GET/private-networks
List all private networks in your account.
Should you only want to get the private networks attached to a specific VPS, set the vpsName
parameter and only attached private networks will be shown like /v6/private-networks?vpsName=example-vps
If this parameter is not set, all private networks will be listed along with the VPSes it’s attached to.
This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.
- vpsName
string
(optional) Example: /private-networks?vpsName=example-vpsFilter private networks by a given VPS
- privateNetworks
- name
The unique private network name
- description
The custom name that can be set by customer
- isBlocked
If the Private Network is administratively blocked
- isLocked
When locked, another process is already working with this private network
- vpsNames
The names of VPSes in this private network
- connectedVpses
The VPSes in this private network
- name
The unique VPS name
- uuid
The unique identifier for the VPS
- description
The name that can be set by customer
- macAddress
The VPS macaddress
- isLocked
Whether or not another process is already doing stuff with this VPS
- isBlocked
If the VPS is administratively blocked
- isCustomerLocked
If this VPS is locked by the customer
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/private-networks/example-privatenetwork"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"privateNetwork": {
"name": "example-privatenetwork",
"description": "FilesharingNetwork",
"isBlocked": false,
"isLocked": false,
"vpsNames": [
"example-vps",
"example-vps2"
],
"connectedVpses": [
{
"name": "example-vps",
"uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
"description": "example VPS",
"macAddress": "52:54:00:3b:52:65",
"isLocked": false,
"isBlocked": false,
"isCustomerLocked": false
}
]
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "PrivateNetwork 'example-privatenetwork' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "PrivateNetwork with name 'example-privatenetwork' not found"
}
Get private network by name
GET/private-networks/{privateNetworkName}
Gather detailed information about a private network. As one of the returned attributes includes an array of the VPSes it’s attached to, you can determine if the private network is already attached to a specific VPS and if not, you can attach it.
- privateNetworkName
string
(required) Example: example-privatenetworkName of the private network
- privateNetwork
- name
The unique private network name
- description
The custom name that can be set by customer
- isBlocked
If the Private Network is administratively blocked
- isLocked
When locked, another process is already working with this private network
- vpsNames
The names of VPSes in this private network
- connectedVpses
The VPSes in this private network
- name
The unique VPS name
- uuid
The unique identifier for the VPS
- description
The name that can be set by customer
- macAddress
The VPS macaddress
- isLocked
Whether or not another process is already doing stuff with this VPS
- isBlocked
If the VPS is administratively blocked
- isCustomerLocked
If this VPS is locked by the customer
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"description": ""
}
' \
"https://api.transip.nl/v6/private-networks"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"description": ""
}
Order a new private network
POST/private-networks
Order a new private network. After ordering a private network you’re able to attach it to a VPS t o make use of the private network.
Warning: This API call will create an invoice!
- description
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"privateNetwork": {
"name": "example-privatenetwork",
"description": "FilesharingNetwork",
"isBlocked": false,
"isLocked": false,
"vpsNames": [
"example-vps",
"example-vps2"
],
"connectedVpses": [
{
"name": "example-vps",
"uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
"description": "example VPS",
"macAddress": "52:54:00:3b:52:65",
"isLocked": false,
"isBlocked": false,
"isCustomerLocked": false
}
]
}
}
' \
"https://api.transip.nl/v6/private-networks/example-privatenetwork"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"privateNetwork": {
"name": "example-privatenetwork",
"description": "FilesharingNetwork",
"isBlocked": false,
"isLocked": false,
"vpsNames": [
"example-vps",
"example-vps2"
],
"connectedVpses": [
{
"name": "example-vps",
"uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
"description": "example VPS",
"macAddress": "52:54:00:3b:52:65",
"isLocked": false,
"isBlocked": false,
"isCustomerLocked": false
}
]
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "PrivateNetwork 'example-privatenetwork' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "PrivateNetwork with name 'example-privatenetwork' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'verylongdescriptionthatwouldnotfit' can be 32 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The PrivateNetwork 'example-privatenetwork' is already locked to another action"
}
Update private network
PUT/private-networks/{privateNetworkName}
This method can also be used to change the description
attribute. The description can be maximum 32 character longs
- privateNetworkName
string
(required) Example: example-privatenetworkName of the private network
- privateNetwork
- name
The unique private network name
- description
The custom name that can be set by customer
- isBlocked
If the Private Network is administratively blocked
- isLocked
When locked, another process is already working with this private network
- vpsNames
The names of VPSes in this private network
- connectedVpses
The VPSes in this private network
- name
The unique VPS name
- uuid
The unique identifier for the VPS
- description
The name that can be set by customer
- macAddress
The VPS macaddress
- isLocked
Whether or not another process is already doing stuff with this VPS
- isBlocked
If the VPS is administratively blocked
- isCustomerLocked
If this VPS is locked by the customer
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "attachvps",
"vpsName": "example-vps"
}
' \
"https://api.transip.nl/v6/private-networks/example-privatenetwork"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "attachvps",
"vpsName": "example-vps"
}
Response headers
Content-Type: application/json
Response body
{
"error": "PrivateNetwork 'example-privatenetwork' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "PrivateNetwork with name 'example-privatenetwork' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The PrivateNetwork 'example-privatenetwork' is already locked to another action"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Attach vps to privateNetwork
PATCH/private-networks/{privateNetworkName}
Attach VPSes to the private network one at a time. Send a PATCH request with the action
attribute set to attachvps
.
- privateNetworkName
string
(required) Example: example-privatenetworkName of the private network
- action
- vpsName
Name of the vps that you want to attach
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "detachvps",
"vpsName": "example-vps"
}
' \
"https://api.transip.nl/v6/private-networks/example-privatenetwork"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "detachvps",
"vpsName": "example-vps"
}
Response headers
Content-Type: application/json
Response body
{
"error": "PrivateNetwork 'example-privatenetwork' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "PrivateNetwork with name 'example-privatenetwork' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The PrivateNetwork 'example-privatenetwork' is already locked to another action"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Detach vps from privateNetwork
PATCH/private-networks/{privateNetworkName}
Detach VPSes from the private network one at a time. Send a PATCH request with the action
attribute set to removevps
.
- privateNetworkName
string
(required) Example: example-privatenetworkName of the private network
- action
- vpsName
Name of the vps that you want to detach
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"endTime": "end"
}
' \
"https://api.transip.nl/v6/private-networks/example-privatenetwork"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"endTime": "end"
}
Response headers
Content-Type: application/json
Response body
{
"error": "PrivateNetwork 'example-privatenetwork' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "PrivateNetwork with name 'example-privatenetwork' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid cancellation time: 'now', please use either 'end' or 'immediately'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Product already has cancellation pending."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The PrivateNetwork 'example-privatenetwork' is already locked to another action"
}
Cancel a private network
DELETE/private-networks/{privateNetworkName}
Cancel a private network.
You can set the endTime
attribute to end
or immediately
, this has the following implications:
-
end: The private network will be terminated from the end date of the agreement as can be found in the applicable quote;
-
immediately: The private network will be terminated immediately.
- privateNetworkName
string
(required) Example: example-privatenetworkName of the private network
- endTime
Cancellation time, either ‘end’ (default) or ‘immediately’
Big Storages ¶
This is the API endpoint for bigstorage services.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/big-storages"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"bigStorages": [
{
"name": "example-bigstorage",
"description": "Big storage description",
"diskSize": 2147483648,
"offsiteBackups": true,
"vpsName": "example-vps",
"status": "active",
"isLocked": false,
"availabilityZone": "ams0",
"serial": "a4d857d3fe5e814f34bb"
}
]
}
List all big storages
GET/big-storages
Returns an array of all Big Storages in the given account.
After all Big Storages have been returned as an array, you can extract it and use a specific Big Storage for the other API calls documented below.
Should you only want to get the big storages attached to a specific VPS, set the vpsName
parameter and only big storages that are attached to the given vps will be shown like /v6/big-storages?vpsName=example-vps
This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.
Warning: This method is deprecated. Use the block-storages resource instead.
- vpsName
string
(optional) Example: /big-storages?vpsName=example-vpsFilters on a given vps name.
- bigStorages
- name
Name of the big storage
- description
Name that can be set by customer
- diskSize
Disk size of the big storage in kB
- offsiteBackups
Whether a bigstorage has backups
- vpsName
The VPS that the big storage is attached to
- status
Status of the big storage can be ‘active’, ‘attaching’ or ‘detaching’
- isLocked
Lock status of the big storage, when it is locked, it cannot be attached or detached.
- availabilityZone
The availability zone the bigstorage is located in
- serial
The serial of the big storage. This is a unique identifier that is visible by the vps it has been attached to. On linux servers it is visible using
udevadm info /dev/vdb
where it will be the value of ID_SERIAL. A symlink will also be created in/dev/disk-by-id/
containing the serial. This is useful if you want to map a disk inside a VPS to a big storage.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/big-storages/bigStorageIdentifier"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"bigStorage": {
"name": "example-bigstorage",
"description": "Big storage description",
"diskSize": 2147483648,
"offsiteBackups": true,
"vpsName": "example-vps",
"status": "active",
"isLocked": false,
"availabilityZone": "ams0",
"serial": "a4d857d3fe5e814f34bb"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Big storage with identifier 'example-bigstorage' not found"
}
Get big storage by identifier
GET/big-storages/{bigStorageIdentifier}
Get information about a specific Big Storage and its current status. If the Big Storage is attached to a VPS, the output will contain the VPS name it’s attached to.
Warning: This method is deprecated. Use the block-storages resource instead.
- bigStorageIdentifier
string
(required)The identifier of the big storage (name or uuid)
- bigStorage
- name
Name of the big storage
- description
Name that can be set by customer
- diskSize
Disk size of the big storage in kB
- offsiteBackups
Whether a bigstorage has backups
- vpsName
The VPS that the big storage is attached to
- status
Status of the big storage can be ‘active’, ‘attaching’ or ‘detaching’
- isLocked
Lock status of the big storage, when it is locked, it cannot be attached or detached.
- availabilityZone
The availability zone the bigstorage is located in
- serial
The serial of the big storage. This is a unique identifier that is visible by the vps it has been attached to. On linux servers it is visible using
udevadm info /dev/vdb
where it will be the value of ID_SERIAL. A symlink will also be created in/dev/disk-by-id/
containing the serial. This is useful if you want to map a disk inside a VPS to a big storage.
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"size": 8,
"offsiteBackups": true,
"availabilityZone": "ams0",
"vpsName": "example-vps",
"description": "backup-bigstorage"
}
' \
"https://api.transip.nl/v6/big-storages"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"size": 8,
"offsiteBackups": true,
"availabilityZone": "ams0",
"vpsName": "example-vps",
"description": "backup-bigstorage"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The availability zone 'wtf0' is not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The availability zone 'ams0' is not available"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Big storage size '-1' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Big storage size '50' exceeds the maximum amount of 40 TB"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Big storage size '3' should be a multiple of 2"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Big storage needs to be in the same availability zone as VPS 'example-vps'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'description' can be 64 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Order a new big storage
POST/big-storages
Use this API call to order a new Big Storage.
The minimum size is 2 TB and storage can be extended with up to maximum of 40 TB. Make sure to use a multiple of 2 TB.
Optionally, to create back-ups of your Big Storage, enable off-site back-ups. We highly recommend activating back-ups.
When a vpsName
has been given, the availability zone of this VPS will be used. The Bigstorage and VPS have to be in the same availability zone in order to attach.
Warning: This API call will create an invoice!
Warning: This method is deprecated. Use the block-storages resource instead.
- size
The size of the big storage in TB’s, use a multiple of 2. The maximum size is 40.
- offsiteBackups
Whether to order offsite backups, default is
true
.- availabilityZone
The name of the availabilityZone where the BigStorage should be created. This parameter can not be used in conjunction with vpsName. If a vpsName is provided as well as an availabilityZone, the zone of the vps is leading.
- vpsName
The name of the VPS to attach the big storage to
- description
The description of the Bigstorage (maximum length 64)
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"bigStorageName": "example-bigstorage",
"size": 8,
"offsiteBackups": true
}
' \
"https://api.transip.nl/v6/big-storages"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"bigStorageName": "example-bigstorage",
"size": 8,
"offsiteBackups": true
}
Response headers
Content-Type: application/json
Response body
{
"error": "Big storage with identifier 'example-bigstorage' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Big storage size '-1' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Big storage size '50' exceeds the maximum amount of 40 TB"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Big storage size '3' should be a multiple of 2"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Upgrade size '2' is smaller than current size '4'"
}
Upgrade big storage
POST/big-storages
With this method you are able to upgrade a bigstorage diskSize or enable backups.
The minimum size is 2 TB and storage can be extended with up to maximum of 40 TB. Make sure to use a multiple of 2 TB.
Optionally, to create back-ups of your Big Storage, enable off-site back-ups. We highly recommend activating back-ups.
Warning: This API call will create an invoice!
Warning: This method is deprecated. Use the block-storages resource instead.
- bigStorageName
The name of the bigstorage to upgrade
- size
The size of the big storage in TB’s, use a multiple of 2. The maximum size is 40.
- offsiteBackups
Whether to order offsite backups, omit this to use current value
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"bigStorage": {
"name": "example-bigstorage",
"description": "Big storage description",
"diskSize": 2147483648,
"offsiteBackups": true,
"vpsName": "example-vps",
"status": "active",
"isLocked": false,
"availabilityZone": "ams0",
"serial": "a4d857d3fe5e814f34bb"
}
}
' \
"https://api.transip.nl/v6/big-storages/bigStorageIdentifier"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"bigStorage": {
"name": "example-bigstorage",
"description": "Big storage description",
"diskSize": 2147483648,
"offsiteBackups": true,
"vpsName": "example-vps",
"status": "active",
"isLocked": false,
"availabilityZone": "ams0",
"serial": "a4d857d3fe5e814f34bb"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Big storage with identifier 'example-bigstorage' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Please supply the '`description` or `vpsName`' parameter"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Big storage needs to be in the same availability zone as VPS 'example-vps'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'description' can be 64 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Big storage 'example-bigstorage' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Update big storage
PUT/big-storages/{bigStorageIdentifier}
This API calls allows for altering a big storage in several ways outlined below:
-
Changing the description of a Big Storage (maximum length 64);
-
One Big Storages can only be attached to one VPS at a time;
-
One VPS can have a maximum of 10 bigstorages attached;
-
Set the
vpsName
property to the VPS name to attach to for attaching Big Storage; -
Set the
vpsName
property to null to detach the Big Storage from the currently attached VPS.
Warning: This method is deprecated. Use the block-storages resource instead.
- bigStorageIdentifier
string
(required)The identifier of the big storage (name or uuid)
- bigStorage
- name
Name of the big storage
- description
Name that can be set by customer
- diskSize
Disk size of the big storage in kB
- offsiteBackups
Whether a bigstorage has backups
- vpsName
The VPS that the big storage is attached to
- status
Status of the big storage can be ‘active’, ‘attaching’ or ‘detaching’
- isLocked
Lock status of the big storage, when it is locked, it cannot be attached or detached.
- availabilityZone
The availability zone the bigstorage is located in
- serial
The serial of the big storage. This is a unique identifier that is visible by the vps it has been attached to. On linux servers it is visible using
udevadm info /dev/vdb
where it will be the value of ID_SERIAL. A symlink will also be created in/dev/disk-by-id/
containing the serial. This is useful if you want to map a disk inside a VPS to a big storage.
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"endTime": "end"
}
' \
"https://api.transip.nl/v6/big-storages/bigStorageIdentifier"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"endTime": "end"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Big storage with identifier 'example-bigstorage' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid cancellation time: 'now', please use either 'end' or 'immediately'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Product already has cancellation pending"
}
Cancel big storage
DELETE/big-storages/{bigStorageIdentifier}
Cancels a big storage for the specified ‘endTime’. You can set the endTime
attribute to end
or immediately
, this has the following implications:
-
end: The Big Storage will be terminated from the end date of the agreement as can be found in the applicable quote;
-
immediately: The Big Storage will be terminated immediately.
Note that canceling a Big Storage will wipe all data stored on it as well as off-site back-ups as well if these are activated.
Warning: This method is deprecated. Use the block-storages resource instead.
- bigStorageIdentifier
string
(required)The identifier of the big storage (name or uuid)
- endTime
Cancellation time, either ‘end’ or ‘immediately’
Big Storage Backups ¶
This is the API endpoint for big storage backup services.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/big-storages/bigStorageIdentifier/backups"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"backups": [
{
"id": 1583,
"status": "active",
"diskSize": 4294967296,
"dateTimeCreate": "2019-12-31 09:13:55",
"availabilityZone": "ams0"
}
]
}
List backups for a big storage
GET/big-storages/{bigStorageIdentifier}/backups
Using this API call, you are able to list all backups belonging to a specific big storage.
Warning: This method is deprecated. Use the block-storages resource instead.
- bigStorageIdentifier
string
(required)The identifier of the big storage (name or uuid)
- backups
- id
Id of the big storage
- status
Status of the big storage backup (‘active’, ‘creating’, ‘reverting’, ‘deleting’, ‘pendingDeletion’, ‘syncing’, ‘moving’)
- diskSize
The backup disk size in kB
- dateTimeCreate
Date of the big storage backup
- availabilityZone
The name of the availability zone the backup is in
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "revert",
"destinationBigStorageIdentifier": "example-bigstorage"
}
' \
"https://api.transip.nl/v6/big-storages/bigStorageIdentifier/backups/625584"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "revert",
"destinationBigStorageIdentifier": "example-bigstorage"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Big storage with identifier 'example-bigstorage' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Backup with id '1337' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Big storage 'example-bigstorage' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The Backup '34026' is already locked to another action"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on Backup '123' are temporary disabled"
}
Revert a big storage backup
PATCH/big-storages/{bigStorageIdentifier}/backups/{backupId}
To revert a backup from a big storage, retrieve the backupId
from the backups resource. Please note this is only possible when any backups are created with the off-site backups feature, otherwise no backups will be made nor listed.
Warning: This method is deprecated. Use the block-storages resource instead.
- bigStorageIdentifier
string
(required)The identifier of the big storage (name or uuid)
- backupId
number
(required) Example: 625584Id of the backup
- action
- destinationBigStorageIdentifier
When set, revert the backup to this big storage
Usage ¶
This is the API endpoint for big storage usage statistics.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"dateTimeStart": 1490023668,
"dateTimeEnd": 1490064468
}
' \
"https://api.transip.nl/v6/big-storages/bigStorageIdentifier/usage"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"dateTimeStart": 1490023668,
"dateTimeEnd": 1490064468
}
Response headers
Content-Type: application/json
Response body
{
"usage": [
{
"iopsRead": 0.27,
"iopsWrite": 0.13,
"date": 1574783109
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "The parameter 'dateTimeStart' is not a number."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The timestamp 'dateTimeStart' cannot be negative."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The timestamp 'dateTimeEnd' cannot be in the future."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The time period is too large, it should not be bigger than one month."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The time period is too large, it should not be bigger than one month."
}
Response headers
Content-Type: application/json
Response body
{
"error": "These are invalid usage types: invalid, type."
}
Response headers
Content-Type: application/json
Response body
{
"error": "Big storage 'example-bigstorage' is not attached to a VPS"
}
Get big storage usage statistics
GET/big-storages/{bigStorageIdentifier}/usage
Get the usage statistics for a big storage. You can specify a dateTimeStart
and dateTimeEnd
parameter in the UNIX timestamp format. When none given, traffic for the past 24 hours are returned. The maximum period is one month.
When the big storage is not attached to a vps, there are no usage statistics available. Therefore, the response returned will be a 406 exception. If the big storage is re-attached to another vps then the old statistics are no longer available.
Warning: This method is deprecated. Use the block-storages resource instead.
- bigStorageIdentifier
string
(required)The identifier of the big storage (name or uuid)
- dateTimeStart
The start date of the usage statistics
- dateTimeEnd
The end date of the usage statistics
- usage
- iopsRead
The read IOPS for this entry
- iopsWrite
The write IOPS for this entry
- date
Date of the entry, by default in UNIX timestamp format
Block Storages ¶
This is the API endpoint for blockstorage services.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/block-storages"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"blockStorages": [
{
"name": "example-faststorage",
"description": "Block storage description",
"productType": "fast-storage",
"size": 2147483648,
"offsiteBackups": true,
"vpsName": "example-vps",
"status": "active",
"isLocked": false,
"availabilityZone": "ams0",
"serial": "a4d857d3fe5e814f34bb"
}
]
}
List all block storages
GET/block-storages
Returns an array of all Block Storages in the given account.
After all Block Storages have been returned as an array, you can extract it and use a specific Block Storage for the other API calls documented below.
Should you only want to get the block storages attached to a specific VPS, set the vpsName
parameter and only block storages that are attached to the given vps will be shown like /v6/block-storages?vpsName=example-vps
This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.
- blockStorages
- name
Name of the block storage
- description
Name that can be set by customer
- productType
Block storage type
- size
Size of the block storage in kB
- offsiteBackups
Whether a block storage has backups
- vpsName
The VPS that the block storage is attached to
- status
Status of the block storage can be ‘active’, ‘attaching’ or ‘detaching’
- isLocked
Lock status of the block storage, when it is locked, it cannot be attached or detached.
- availabilityZone
The availability zone the block storage is located in
- serial
The serial of the block storage. This is a unique identifier that is visible by the vps it has been attached to. On linux servers it is visible using
udevadm info /dev/vdb
where it will be the value of ID_SERIAL. A symlink will also be created in/dev/disk-by-id/
containing the serial. This is useful if you want to map a disk inside a VPS to a block storage.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/block-storages/blockStorageIdentifier"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"blockStorage": {
"name": "example-faststorage",
"description": "Block storage description",
"productType": "fast-storage",
"size": 2147483648,
"offsiteBackups": true,
"vpsName": "example-vps",
"status": "active",
"isLocked": false,
"availabilityZone": "ams0",
"serial": "a4d857d3fe5e814f34bb"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Block storage with identifier 'example-faststorage' not found"
}
Get block storage by identifier
GET/block-storages/{blockStorageIdentifier}
Get information about a specific Block Storage and its current status by identifier (name or uuid). If the Block Storage is attached to a VPS, the output will contain the VPS name it’s attached to.
- blockStorageIdentifier
string
(required)The identifier of the block storage (name or uuid)
- blockStorage
- name
Name of the block storage
- description
Name that can be set by customer
- productType
Block storage type
- size
Size of the block storage in kB
- offsiteBackups
Whether a block storage has backups
- vpsName
The VPS that the block storage is attached to
- status
Status of the block storage can be ‘active’, ‘attaching’ or ‘detaching’
- isLocked
Lock status of the block storage, when it is locked, it cannot be attached or detached.
- availabilityZone
The availability zone the block storage is located in
- serial
The serial of the block storage. This is a unique identifier that is visible by the vps it has been attached to. On linux servers it is visible using
udevadm info /dev/vdb
where it will be the value of ID_SERIAL. A symlink will also be created in/dev/disk-by-id/
containing the serial. This is useful if you want to map a disk inside a VPS to a block storage.
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"type": "fast-storage",
"size": 10485760,
"offsiteBackups": true,
"availabilityZone": "ams0",
"vpsName": "example-vps",
"description": "backup-blockstorage"
}
' \
"https://api.transip.nl/v6/block-storages"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"type": "fast-storage",
"size": 10485760,
"offsiteBackups": true,
"availabilityZone": "ams0",
"vpsName": "example-vps",
"description": "backup-blockstorage"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The availability zone 'wtf0' is not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The availability zone 'ams0' is not available"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Block storage size '-1' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Block storage size '9765625005' exceeds the maximum amount of 10000 GB"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Block storage size '9765626' should be a multiple of 10 GB"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Block storage needs to be in the same availability zone as VPS 'example-vps'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'description' can be 64 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Order a new block storage
POST/block-storages
Use this API call to order a new Block Storage.
Big storages: The minimum size is 2 TiB and storage can be extended with up to maximum of 40 TiB. Make sure to use a multiple of 2 TiB. Note that 2 TiB equals 2147483648 KiB.
Fast storages: The minimum size is 10 GiB and storage can be extended with up to maximum of 10000 GiB. Make sure to use a multiple of 10 GiB. Note that 10 GiB equals 10485760 KiB.
Optionally, to create back-ups of your Block Storage, enable off-site back-ups. We highly recommend activating back-ups.
When a vpsName
has been given, the availability zone of this VPS will be used. The Blockstorage and VPS have to be in the same availability zone in order to attach.
Warning: This API call will create an invoice!
- type
The type of the block storage. It can be big-storage or fast-storage.
- size
The size of the block storage in KB.
- offsiteBackups
Whether to order offsite backups, default is
true
.- availabilityZone
The name of the availabilityZone where the BlockStorage should be created. This parameter can not be used in conjunction with vpsName. If a vpsName is provided as well as an availabilityZone, the zone of the vps is leading.
- vpsName
The name of the VPS to attach the block storage to
- description
The description of the Blockstorage (maximum length 64)
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"blockStorageName": "example-faststorage",
"size": 10485760,
"offsiteBackups": true
}
' \
"https://api.transip.nl/v6/block-storages"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"blockStorageName": "example-faststorage",
"size": 10485760,
"offsiteBackups": true
}
Response headers
Content-Type: application/json
Response body
{
"error": "Block storage with name 'example-faststorage' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Block storage size '-1' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Block storage size '9765625005' exceeds the maximum amount of 10000 GB"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Block storage size '9765626' should be a multiple of 10 GB"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Upgrade size '20' is smaller than current size '40'"
}
Upgrade block storage
POST/block-storages
With this method you are able to upgrade a blockstorage size or enable backups.
Big storages: The minimum size is 2 TiB and storage can be extended with up to maximum of 40 TiB. Make sure to use a multiple of 2 TiB. Note that 2 TiB equals 2147483648 KiB.
Fast storages: The minimum size is 10 GiB and storage can be extended with up to maximum of 10000 GiB. Make sure to use a multiple of 10 GiB. Note that 10 GiB equals 10485760 KiB.
Optionally, to create back-ups of your Block Storage, enable off-site back-ups. We highly recommend activating back-ups.
Warning: This API call will create an invoice!
- blockStorageName
The name of the blockstorage to upgrade
- size
The size of the block storage in KB.
- offsiteBackups
Whether to order offsite backups, omit this to use current value
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"blockStorage": {
"name": "example-faststorage",
"description": "Block storage description",
"productType": "fast-storage",
"size": 2147483648,
"offsiteBackups": true,
"vpsName": "example-vps",
"status": "active",
"isLocked": false,
"availabilityZone": "ams0",
"serial": "a4d857d3fe5e814f34bb"
}
}
' \
"https://api.transip.nl/v6/block-storages/blockStorageIdentifier"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"blockStorage": {
"name": "example-faststorage",
"description": "Block storage description",
"productType": "fast-storage",
"size": 2147483648,
"offsiteBackups": true,
"vpsName": "example-vps",
"status": "active",
"isLocked": false,
"availabilityZone": "ams0",
"serial": "a4d857d3fe5e814f34bb"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Block storage with name 'example-faststorage' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Please supply the '`description` or `vpsName`' parameter"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Block storage needs to be in the same availability zone as VPS 'example-vps'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'description' can be 64 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Block storage 'example-faststorage' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Update block storage
PUT/block-storages/{blockStorageIdentifier}
This API calls allows for altering a block storage in several ways outlined below:
-
Changing the description of a Block Storage (maximum length 64);
-
One Block Storage can only be attached to one VPS at a time;
-
One VPS can have a maximum of 10 block storages attached;
-
Set the
vpsName
property to the VPS name to attach to for attaching Block Storage; -
Set the
vpsName
property to null to detach the Block Storage from the currently attached VPS.
- blockStorageIdentifier
string
(required)The identifier of the block storage (name or uuid)
- blockStorage
- name
Name of the block storage
- description
Name that can be set by customer
- productType
Block storage type
- size
Size of the block storage in kB
- offsiteBackups
Whether a block storage has backups
- vpsName
The VPS that the block storage is attached to
- status
Status of the block storage can be ‘active’, ‘attaching’ or ‘detaching’
- isLocked
Lock status of the block storage, when it is locked, it cannot be attached or detached.
- availabilityZone
The availability zone the block storage is located in
- serial
The serial of the block storage. This is a unique identifier that is visible by the vps it has been attached to. On linux servers it is visible using
udevadm info /dev/vdb
where it will be the value of ID_SERIAL. A symlink will also be created in/dev/disk-by-id/
containing the serial. This is useful if you want to map a disk inside a VPS to a block storage.
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"endTime": "end"
}
' \
"https://api.transip.nl/v6/block-storages/blockStorageIdentifier"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"endTime": "end"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Block storage with name 'example-faststorage' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid cancellation time: 'now', please use either 'end' or 'immediately'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Product already has cancellation pending"
}
Cancel block storage
DELETE/block-storages/{blockStorageIdentifier}
Cancels a block storage for the specified ‘endTime’. You can set the endTime
attribute to end
or immediately
, this has the following implications:
-
end: The Block Storage will be terminated from the end date of the agreement as can be found in the applicable quote;
-
immediately: The Block Storage will be terminated immediately.
Note that canceling a Block Storage will wipe all data stored on it as well as off-site back-ups as well if these are activated.
- blockStorageIdentifier
string
(required)The identifier of the block storage (name or uuid)
- endTime
Cancellation time, either ‘end’ or ‘immediately’
Block Storage Backups ¶
This is the API endpoint for block storage backup services.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/block-storages/blockStorageIdentifier/backups"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"backups": [
{
"id": 1583,
"status": "active",
"size": 4294967296,
"dateTimeCreate": "2019-12-31 09:13:55",
"availabilityZone": "ams0"
}
]
}
List backups for a block storage
GET/block-storages/{blockStorageIdentifier}/backups
Using this API call, you are able to list all backups belonging to a specific block storage.
- blockStorageIdentifier
string
(required)The identifier of the block storage (name or uuid)
- backups
- id
Id of the block storage
- status
Status of the block storage backup (‘active’, ‘creating’, ‘reverting’, ‘deleting’, ‘pendingDeletion’, ‘syncing’, ‘moving’)
- size
The backup size in kB
- dateTimeCreate
Date of the block storage backup
- availabilityZone
The name of the availability zone the backup is in
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "revert",
"destinationBlockStorageName": "example-faststorage"
}
' \
"https://api.transip.nl/v6/block-storages/blockStorageIdentifier/backups/625584"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "revert",
"destinationBlockStorageName": "example-faststorage"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Block storage with name 'example-faststorage' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Backup with id '1337' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Block storage 'example-faststorage' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The Backup '34026' is already locked to another action"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on Backup '123' are temporary disabled"
}
Revert a block storage backup
PATCH/block-storages/{blockStorageIdentifier}/backups/{backupId}
To revert a backup from a block storage, retrieve the backupId
from the backups resource. Please note this is only possible when any backups are created with the off-site backups feature, otherwise no backups will be made nor listed.
- blockStorageIdentifier
string
(required)The identifier of the block storage (name or uuid)
- backupId
number
(required) Example: 625584Id of the backup
- action
- destinationBlockStorageName
When set, revert the backup to this block storage
Usage ¶
This is the API endpoint for block storage usage statistics.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"dateTimeStart": 1490023668,
"dateTimeEnd": 1490064468
}
' \
"https://api.transip.nl/v6/block-storages/blockStorageIdentifier/usage"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"dateTimeStart": 1490023668,
"dateTimeEnd": 1490064468
}
Response headers
Content-Type: application/json
Response body
{
"usage": [
{
"iopsRead": 0.27,
"iopsWrite": 0.13,
"date": 1574783109
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "The parameter 'dateTimeStart' is not a number."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The timestamp 'dateTimeStart' cannot be negative."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The timestamp 'dateTimeEnd' cannot be in the future."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The time period is too large, it should not be bigger than one month."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The time period is too large, it should not be bigger than one month."
}
Response headers
Content-Type: application/json
Response body
{
"error": "These are invalid usage types: invalid, type."
}
Response headers
Content-Type: application/json
Response body
{
"error": "Block storage 'example-faststorage' is not attached to a VPS"
}
Get block storage usage statistics
GET/block-storages/{blockStorageIdentifier}/usage
Get the usage statistics for a block storage. You can specify a dateTimeStart
and dateTimeEnd
parameter in the UNIX timestamp format. When none given, traffic for the past 24 hours are returned. The maximum period is one month.
When the block storage is not attached to a vps, there are no usage statistics available. Therefore, the response returned will be a 406 exception. If the block storage is re-attached to another vps then the old statistics are no longer available.
- blockStorageIdentifier
string
(required)The identifier of the block storage (name or uuid)
- dateTimeStart
The start date of the usage statistics
- dateTimeEnd
The end date of the usage statistics
- usage
- iopsRead
The read IOPS for this entry
- iopsWrite
The write IOPS for this entry
- date
Date of the entry, by default in UNIX timestamp format
Installation templates ¶
This is the API endpoint for VPS installations templates.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/installation-templates"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"installationTemplates": [
{
"name": "cloud-init-sshkeys",
"template": ""
}
]
}
List all installation templates
GET/installation-templates
List all installation templates
- installationTemplates
- name
name of the template
- template
base64 encoded installer template
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/installation-templates/name"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"installationTemplate": {
"name": "cloud-init-sshkeys",
"template": ""
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "InstallationTemplate with name 'ubuntu' not found"
}
Get InstallationTemplate by name
GET/installation-templates/{name}
Request information about an existing installation template
- name
string
(required)The name of the installation template
- installationTemplate
- name
name of the template
- template
base64 encoded installer template
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"name": "ubuntu",
"template": "I2Nsb3VkLWNvbmZpZwpob3N0bmFtZTogcmVzY3VlCnVzZXJzOgotIG5hbWU6IHJvb3QKICBzdWRvOiBbJ0FMTD0oQUxMKSBOT1BBU1NXRDpBTEwnXQogIHNzaC1hdXRob3JpemVkLWtleXM6CnslIGZvciBrZXkgaW4gc3Noa2V5cyAlfQogIC0ge3sga2V5IH19CnslIGVuZGZvciAlfQ=="
}
' \
"https://api.transip.nl/v6/installation-templates"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"name": "ubuntu",
"template": "I2Nsb3VkLWNvbmZpZwpob3N0bmFtZTogcmVzY3VlCnVzZXJzOgotIG5hbWU6IHJvb3QKICBzdWRvOiBbJ0FMTD0oQUxMKSBOT1BBU1NXRDpBTEwnXQogIHNzaC1hdXRob3JpemVkLWtleXM6CnslIGZvciBrZXkgaW4gc3Noa2V5cyAlfQogIC0ge3sga2V5IH19CnslIGVuZGZvciAlfQ=="
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided InstallationTemplate already exists in your account"
}
Add a new InstallationTemplate
POST/installation-templates
Add a new InstallationTemplate
- name
Name of the template
- template
Base64 encoded twig template
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"installationTemplate": {
"name": "cloud-init-sshkeys",
"template": ""
}
}
' \
"https://api.transip.nl/v6/installation-templates/name"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"installationTemplate": {
"name": "cloud-init-sshkeys",
"template": ""
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "InstallationTemplate with name 'test' not found"
}
Update an InstallationTemplate
PUT/installation-templates/{name}
Update an existing InstallationTemplate
- name
string
(required)The name of the installation template
- installationTemplate
- name
name of the template
- template
base64 encoded installer template
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/installation-templates/name"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "InstallationTemplate with name 'test' not found"
}
Delete an InstallationTemplate
DELETE/installation-templates/{name}
Delete an existing InstallationTemplate from your account.
- name
string
(required)The name of the installation template
Render installation template ¶
Render installation templates
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{}
' \
"https://api.transip.nl/v6/installation-templates/name/render"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{}
Response body
{
"renderedInstallationTemplate": ""
}
Render an installation template
POST/installation-templates/{name}/render
Renders an installation template using the provided parameters.
- name
string
(required)The name of the installation template
- renderedInstallationTemplate
Mail Service ¶
We offer a SMTP relay service, removing the need for email traffic originating from your VPS IP.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/mail-service"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"mailServiceInformation": {
"username": "test@vps.transip.email",
"password": "KgDseBsmWJNTiGww",
"usage": 54,
"quota": 1000,
"dnsTxt": "782d28c2fa0b0bdeadf979e7155a83a15632fcddb0149d510c09fb78a470f7d3"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "MailService has not been enabled on this account, enable via the CP"
}
Get mail service information
GET/mail-service
You’re able to gather detailed information regarding mail service usage and credentials using this API call.
Aside from the credentials (username and password) returned objects also include current usage and quota. Usage means the amount of emails sent using the credentials and the quota is the amount of emails allowed to be sent daily. Usage will always be lower than quota. The quota is determined by the amount of VPSes in your account. Every VPS adds 1000 mails to your daily quota (with a maximum of 10000). E.g.: when you own 5 VPSs, the quota on each VPS is 5000.
- mailServiceInformation
- username
The username of the mail service
- password
The password of the mail service
- usage
The usage of the mail service
- quota
The quota of the mail service
- dnsTxt
x-transip-mail-auth DNS TXT record Value
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/mail-service"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "MailService has not been enabled on this account, enable via the CP"
}
Regenerate mail service password
PATCH/mail-service
The credentials needed to authorize with our SMTP relay servers consist of a username and password. In case the password can’t be accessed or should be reset, you can use this API call in order to regenerate it.
As an account can only have one mail service account, the request does not need to contain a body.
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"domainNames": [
"example.com",
"another.com"
]
}
' \
"https://api.transip.nl/v6/mail-service"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"domainNames": [
"example.com",
"another.com"
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Domain with id 'another.com' not found"
}
Add mail service DNS entries to domains
POST/mail-service
In order to reduce spam score, several DNS records should be added. These records have to match the details generated by the mail platform. In case the DNS records don’t match, the relay will not accept mail from your VPS. These new records (outlined below) will not overwrite any DNS records.
Record type | Name | TTL | DNS type | Value |
---|---|---|---|---|
SPF | @ | 5 minutes | TXT | v=spf1 include:_spf.transip.email ~all |
DKIM | transip-A._domainkey | 5 minutes | CNAME | _dkim-A.transip.email. |
DKIM | transip-B._domainkey | 5 minutes | CNAME | _dkim-B.transip.email. |
DKIM | transip-C._domainkey | 5 minutes | CNAME | _dkim-C.transip.email. |
AUTH | x-transip-mail-auth | 5 minutes | TXT | 30ac13d5d73d181fda11a60f779de4fb1be42908b49fb06e46d53d2d03b5721a |
- domainNames
The domain names to which the DNS entries should be added
Monitoring Contacts ¶
This is the API endpoint for monitoring contacts.
When a VPS is down a monitoring contact is used to send notifications via SMS or Email. Through the provided contact details, our monitoring service will send you notifications in an unlikely even of a VPS going offline.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/monitoring-contacts"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"contacts": [
{
"id": 1,
"name": "John Wick",
"telephone": "+31612345678",
"email": "j.wick@example.com"
}
]
}
List all contacts
GET/monitoring-contacts
Get a list of all monitoring contacts attached to your account.
- contacts
- id
Id number of the contact
- name
Name of the contact
- telephone
Telephone number of the contact
- email
Email address of the contact
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"name": "John Wick",
"telephone": "+31612345678",
"email": "j.wick@example.com"
}
' \
"https://api.transip.nl/v6/monitoring-contacts"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"name": "John Wick",
"telephone": "+31612345678",
"email": "j.wick@example.com"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Invalid phone number format, please try formatting it like +31612345678"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Provided email address is invalid"
}
Create a contact
POST/monitoring-contacts
Create a monitoring contact in your account.
You can later use this contact by adding them to your TCP Monitor.
- name
Name of the contact
- telephone
Telephone number of the contact
- email
Email address of the contact
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"contact": {
"id": 1,
"name": "John Wick",
"telephone": "+31612345678",
"email": "j.wick@example.com"
}
}
' \
"https://api.transip.nl/v6/monitoring-contacts/1"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"contact": {
"id": 1,
"name": "John Wick",
"telephone": "+31612345678",
"email": "j.wick@example.com"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Contact with id '123' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Invalid phone number format, please try formatting it like +31612345678"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Provided email address is invalid"
}
Update a contact
PUT/monitoring-contacts/{contactId}
Updates a specified contact. This call will override existing fields.
- contactId
number
(required) Example: 1Id number of the contact
- contact
- id
Id number of the contact
- name
Name of the contact
- telephone
Telephone number of the contact
- email
Email address of the contact
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/monitoring-contacts/1"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "Contact with id '123' not found"
}
Delete a contact
DELETE/monitoring-contacts/{contactId}
Permanently deletes a monitoring contact from your account.
- contactId
number
(required) Example: 1Id number of the contact
TCP Monitors ¶
TCP Monitoring is a service that will check and send a notification when a TCP port on you VPS becomes unreachable.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/tcp-monitors"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"tcpMonitors": [
{
"ipAddress": "10.3.37.1",
"label": "HTTP",
"ports": [
80,
443
],
"interval": 6,
"allowedTimeouts": 1,
"contacts": [
{
"id": 1,
"enableEmail": true,
"enableSMS": false
}
],
"ignoreTimes": [
{
"timeFrom": "18:00",
"timeTo": "08:30"
}
]
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
List all TCP monitors for a VPS
GET/vps/{vpsIdentifier}/tcp-monitors
Get an overview of all existing monitors attached to your VPS.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- tcpMonitors
- ipAddress
IP Address that is monitored
- label
Title of the monitor
- ports
Ports that are monitored
- interval
Checking interval in minutes (numbers 1-6)
- allowedTimeouts
Allowed time outs (numbers 1-5)
- contacts
Contact that will be notified for this monitor
- id
Monitoring contact id
- enableEmail
Send emails to contact
- enableSMS
Send SMS text messages to contact
- ignoreTimes
The hours when the TCP monitoring is ignored (no notifications are sent out)
- timeFrom
Start from (24 hour format)
- timeTo
End at (24 hour format)
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"tcpMonitor": {
"ipAddress": "10.3.37.1",
"label": "HTTP",
"ports": [
80,
443
],
"interval": 6,
"allowedTimeouts": 1,
"contacts": [
{
"id": 1,
"enableEmail": true,
"enableSMS": false
}
],
"ignoreTimes": [
{
"timeFrom": "18:00",
"timeTo": "08:30"
}
]
}
}
' \
"https://api.transip.nl/v6/vps/example-vps/tcp-monitors"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"tcpMonitor": {
"ipAddress": "10.3.37.1",
"label": "HTTP",
"ports": [
80,
443
],
"interval": 6,
"allowedTimeouts": 1,
"contacts": [
{
"id": 1,
"enableEmail": true,
"enableSMS": false
}
],
"ignoreTimes": [
{
"timeFrom": "18:00",
"timeTo": "08:30"
}
]
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "TCP Monitor already exists"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Please purchase a monitoring addon for `example-vps`"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The contact with id '1' was not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "IP address '%s' is not found on VPS '%s'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Port is `655350` invalid"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The interval value can only be a number between the value 1 - 6. Value `8` was provided"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The allowed timeouts value can only be a number between 1 - 5. Value `25` was provided"
}
Create a TCP monitor for a VPS
POST/vps/{vpsIdentifier}/tcp-monitors
Create a TCP monitor and specify which ports you would like to monitor.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- tcpMonitor
- ipAddress
IP Address that is monitored
- label
Title of the monitor
- ports
Ports that are monitored
- interval
Checking interval in minutes (numbers 1-6)
- allowedTimeouts
Allowed time outs (numbers 1-5)
- contacts
Contact that will be notified for this monitor
- id
Monitoring contact id
- enableEmail
Send emails to contact
- enableSMS
Send SMS text messages to contact
- ignoreTimes
The hours when the TCP monitoring is ignored (no notifications are sent out)
- timeFrom
Start from (24 hour format)
- timeTo
End at (24 hour format)
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"tcpMonitor": {
"ipAddress": "10.3.37.1",
"label": "HTTP",
"ports": [
80,
443
],
"interval": 6,
"allowedTimeouts": 1,
"contacts": [
{
"id": 1,
"enableEmail": true,
"enableSMS": false
}
],
"ignoreTimes": [
{
"timeFrom": "18:00",
"timeTo": "08:30"
}
]
}
}
' \
"https://api.transip.nl/v6/vps/example-vps/tcp-monitors/10.3.37.1"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"tcpMonitor": {
"ipAddress": "10.3.37.1",
"label": "HTTP",
"ports": [
80,
443
],
"interval": 6,
"allowedTimeouts": 1,
"contacts": [
{
"id": 1,
"enableEmail": true,
"enableSMS": false
}
],
"ignoreTimes": [
{
"timeFrom": "18:00",
"timeTo": "08:30"
}
]
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "TCP Monitor does not exist"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The contact with id '1' was not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Port is `655350` invalid"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The interval value can only be a number between the value 1 - 6. Value `8` was provided"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The allowed timeouts value can only be a number between 1 - 5. Value `25` was provided"
}
Update a TCP monitor for a VPS
PUT/vps/{vpsIdentifier}/tcp-monitors/{ipAddress}
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- ipAddress
string
(required) Example: 10.3.37.1IP Address that is monitored
- tcpMonitor
- ipAddress
IP Address that is monitored
- label
Title of the monitor
- ports
Ports that are monitored
- interval
Checking interval in minutes (numbers 1-6)
- allowedTimeouts
Allowed time outs (numbers 1-5)
- contacts
Contact that will be notified for this monitor
- id
Monitoring contact id
- enableEmail
Send emails to contact
- enableSMS
Send SMS text messages to contact
- ignoreTimes
The hours when the TCP monitoring is ignored (no notifications are sent out)
- timeFrom
Start from (24 hour format)
- timeTo
End at (24 hour format)
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/tcp-monitors/10.3.37.1"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "Monitor was not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Delete a TCP monitor for a VPS
DELETE/vps/{vpsIdentifier}/tcp-monitors/{ipAddress}
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- ipAddress
string
(required) Example: 10.3.37.1IP Address that is monitored
Rescue Images ¶
This is the API endpoint for VPS rescue images.
Rescue mode also referred as single-user mode, is used to rescue from a system failure.
It provides the ability to boot a small Linux environment. It uses a different boot method rather than using the system’s hard drive.
In the rescue mode, only required services that are necessary for the environment to operate will be started. You also have the ability to mount your local filesystem.
This way you are able to rescue the system from failures.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/rescue-images"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"rescueImages": [
{
"name": "example",
"supportsSshKeys": true
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS console for 'example-vps' is currently unavailable"
}
Get Rescue Images for your VPS
GET/vps/{vpsIdentifier}/rescue-images
Get the name of available Rescue Images for your VPS.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- rescueImages
- name
Name of Rescue Image
- supportsSshKeys
True if the rescue image supports ssh keys
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"name": "rescueImageName",
"sshKeys": [
"ssh-rsa AAAAB3NzaC1yc2EAAA...",
"ssh-ed25519 AAAAC3NzaC1l..."
]
}
' \
"https://api.transip.nl/v6/vps/example-vps/rescue-images"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"name": "rescueImageName",
"sshKeys": [
"ssh-rsa AAAAB3NzaC1yc2EAAA...",
"ssh-ed25519 AAAAC3NzaC1l..."
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Rescue image name should be one of the following: RescueLinux, RescueBSD"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on VPS 'example-vps' are temporary disabled"
}
Boot Rescue Image for a VPS
PATCH/vps/{vpsIdentifier}/rescue-images
Call this method to boot a specified Rescue image for designated VPS. Some rescue images support ssh keys. When this is the case and ssh keys are provided the vps will be booted with the keys loaded. This can be used to gain root ssh access to the machine without manually adding the keys through the console.
- vpsIdentifier
string
(required) Example: example-vpsVPS identifier (name or uuid)
- name
- sshKeys
array of public ssh key’s to use for the rescue image
OperatingSystems Filter ¶
This is the API endpoint that allows you to filter Operating Systems without needing a VPS.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"productName": "vps-bladevps-x8",
"addons": "vpsAddon-1-extra-cpu-core"
}
' \
"https://api.transip.nl/v6/operating-systems"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"productName": "vps-bladevps-x8",
"addons": "vpsAddon-1-extra-cpu-core"
}
Response headers
Content-Type: application/json
Response body
{
"operatingSystems": [
{
"name": "CPanel-alma8-latest",
"description": "cPanel 90.0.5 + AlmaLinux 8",
"baseName": "AlmaLinux",
"version": "90.05",
"price": 2000,
"installFlavours": [
"installer",
"preinstallable",
"cloudinit"
],
"licenses": [
{
"name": "cpanel-pro",
"price": 2750,
"recurringPrice": 2750,
"type": "operating-system",
"minQuantity": 1,
"maxQuantity": 1
}
],
"isPreinstallableImage": false,
"installFields": [
"hostname",
"hashedPassword"
],
"isDefault": false
}
]
}
Filter Operating Systems on specifications
GET/operating-systems
We offer a number of operating systems and preinstalled images ready to be installed on any VPS. Using this API call, you can get a list of operating systems and preinstalled images available for a given vps package.
Commercial operating systems (such as Windows Server editions) and images shipping a commercial control panel contain the ‘price’ attribute, showing the price per month charged on top of the VPS itself.
A list with operating systems can also be found here
An example of all parameters together would be /v6/operating-systems?productName=vps-performance-c8&addons=vps-addon-1-extra-ip-address,vps-addon-100-gb-extra-harddisk
You can find all product and addon names using our /v6/products
endpoint
- productName
Name of the vps product
- addons
Comma separated list of addons
- operatingSystems
- name
The operating system name
- description
Description
- baseName
The baseName of the operating system
- version
The version of the operating system
- price
The monthly price of the operating system in cents
- installFlavours
available flavours of installation for this operating system
- licenses
available licenses for this operating system
- name
License name
- price
Price in cents
- recurringPrice
Recurring price in cents
- type
License type: ‘operating-system’, ‘addon’
- minQuantity
Minimum quantity you have to purchase
- maxQuantity
Maximum quantity you are allowed to purchase
- isPreinstallableImage
Specifies if Operating System is a preinstallable image
- installFields
required installation fields for this operating system
- isDefault
Specifies if Operating System is the default version in the list
/ HA-IP ¶
HA-IP ¶
This is the API endpoint for HA-IP services. HA-IP is a highly available IP that will proxy traffic to a specified IP address or loadbalance traffic on a specific set of IP addresses.
HA-IP includes a single /32
IPv4 and an IPv6 address /128
. HA-IP supports TCP traffic only.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/haips"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"haips": [
{
"name": "example-haip",
"description": "frontend cluster",
"status": "active",
"isLoadBalancingEnabled": true,
"loadBalancingMode": "cookie",
"stickyCookieName": "PHPSESSID",
"healthCheckInterval": 3000,
"httpHealthCheckPath": "/status.php",
"httpHealthCheckPort": 443,
"httpHealthCheckSsl": true,
"ipv4Address": "37.97.254.7",
"ipv6Address": "2a01:7c8:3:1337::1",
"ipSetup": "ipv6to4",
"ptrRecord": "frontend.example.com",
"ipAddresses": [
"10.3.37.1",
"10.3.38.1"
],
"tlsMode": "tls12",
"isLocked": false
}
]
}
List all HA-IPs
GET/haips
Lists all HA-IPs currently registered in your account.
By looping through the entire output and splitting the array, you can gather information about a specific HA-IP. However, we do not recommend getting the entire amount of HA-IPs in case you already know the HA-IP name - you can get the same array without the need to loop through all HA-IPs. Use the ha-ip-get method for this.
This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.
- haips
- name
HA-IP name
- description
The description that can be set by the customer
- status
HA-IP status, either ‘active’, ‘inactive’, ‘creating’
- isLoadBalancingEnabled
Whether load balancing is enabled for this HA-IP
- loadBalancingMode
HA-IP load balancing mode: ‘roundrobin’, ‘cookie’, ‘source’
- stickyCookieName
Cookie name to pin sessions on when using cookie balancing mode
- healthCheckInterval
The interval in milliseconds at which health checks are performed. The interval may not be smaller than 2000ms.
- httpHealthCheckPath
The path (URI) of the page to check HTTP status code on
- httpHealthCheckPort
The port to perform the HTTP check on, this should be the port your services are listening on
- httpHealthCheckSsl
Whether to use SSL when performing the HTTP check
- ipv4Address
HA-IP IPv4 address
- ipv6Address
HA-IP IPv6 address
- ipSetup
HA-IP IP setup: ‘both’, ‘noipv6’, ‘ipv6to4’, ‘ipv4to6’
- ptrRecord
The PTR record for the HA-IP
- ipAddresses
The IPs attached to this HA-IP
- tlsMode
HA-IP TLS Mode: ‘tls12’
- isLocked
Whether or not another process is already doing stuff with this HA-IP
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/haips/example-haip"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"haip": {
"name": "example-haip",
"description": "frontend cluster",
"status": "active",
"isLoadBalancingEnabled": true,
"loadBalancingMode": "cookie",
"stickyCookieName": "PHPSESSID",
"healthCheckInterval": 3000,
"httpHealthCheckPath": "/status.php",
"httpHealthCheckPort": 443,
"httpHealthCheckSsl": true,
"ipv4Address": "37.97.254.7",
"ipv6Address": "2a01:7c8:3:1337::1",
"ipSetup": "ipv6to4",
"ptrRecord": "frontend.example.com",
"ipAddresses": [
"10.3.37.1",
"10.3.38.1"
],
"tlsMode": "tls12",
"isLocked": false
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP with name 'example-haip' not found"
}
Get HA-IP info
GET/haips/{haipName}
Get information about a specific HA-IP such as the IP(s) it’s currently assigned to and the IPv4 and IPv6 address of the HA-IP.
- haipName
string
(required) Example: example-haipThe HA-IP name
- haip
- name
HA-IP name
- description
The description that can be set by the customer
- status
HA-IP status, either ‘active’, ‘inactive’, ‘creating’
- isLoadBalancingEnabled
Whether load balancing is enabled for this HA-IP
- loadBalancingMode
HA-IP load balancing mode: ‘roundrobin’, ‘cookie’, ‘source’
- stickyCookieName
Cookie name to pin sessions on when using cookie balancing mode
- healthCheckInterval
The interval in milliseconds at which health checks are performed. The interval may not be smaller than 2000ms.
- httpHealthCheckPath
The path (URI) of the page to check HTTP status code on
- httpHealthCheckPort
The port to perform the HTTP check on, this should be the port your services are listening on
- httpHealthCheckSsl
Whether to use SSL when performing the HTTP check
- ipv4Address
HA-IP IPv4 address
- ipv6Address
HA-IP IPv6 address
- ipSetup
HA-IP IP setup: ‘both’, ‘noipv6’, ‘ipv6to4’, ‘ipv4to6’
- ptrRecord
The PTR record for the HA-IP
- ipAddresses
The IPs attached to this HA-IP
- tlsMode
HA-IP TLS Mode: ‘tls12’
- isLocked
Whether or not another process is already doing stuff with this HA-IP
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"productName": "haip-pro-contract",
"description": "myhaip01"
}
' \
"https://api.transip.nl/v6/haips"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"productName": "haip-pro-contract",
"description": "myhaip01"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP product 'haip-extreme-contract' is not found"
}
Order a new HA-IP
POST/haips
Order a HA-IP. After assigning the HA-IP to an IP (which can be done through the API as well) all incoming TCP traffic will be routed to the specified IP addresses (only VPS IPs are allowed).
Warning: This API call will create an invoice!
- productName
Required HA-IP product name to order
- description
Optional description for the the HA-IP, this you can use to identify your HA-IP once created
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"haip": {
"name": "example-haip",
"description": "frontend cluster",
"status": "active",
"isLoadBalancingEnabled": true,
"loadBalancingMode": "cookie",
"stickyCookieName": "PHPSESSID",
"healthCheckInterval": 3000,
"httpHealthCheckPath": "/status.php",
"httpHealthCheckPort": 443,
"httpHealthCheckSsl": true,
"ipv4Address": "37.97.254.7",
"ipv6Address": "2a01:7c8:3:1337::1",
"ipSetup": "ipv6to4",
"ptrRecord": "frontend.example.com",
"ipAddresses": [
"10.3.37.1",
"10.3.38.1"
],
"tlsMode": "tls12",
"isLocked": false
}
}
' \
"https://api.transip.nl/v6/haips/example-haip"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"haip": {
"name": "example-haip",
"description": "frontend cluster",
"status": "active",
"isLoadBalancingEnabled": true,
"loadBalancingMode": "cookie",
"stickyCookieName": "PHPSESSID",
"healthCheckInterval": 3000,
"httpHealthCheckPath": "/status.php",
"httpHealthCheckPort": 443,
"httpHealthCheckSsl": true,
"ipv4Address": "37.97.254.7",
"ipv6Address": "2a01:7c8:3:1337::1",
"ipSetup": "ipv6to4",
"ptrRecord": "frontend.example.com",
"ipAddresses": [
"10.3.37.1",
"10.3.38.1"
],
"tlsMode": "tls12",
"isLocked": false
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP with name 'example-haip' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "stickyCookieName must be set when balancingMode is cookie"
}
Response headers
Content-Type: application/json
Response body
{
"error": "loadBalancingMode is invalid must be one of 'roundrobin', 'cookie', 'source'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "healthCheckInterval must be larger than 2000"
}
Response headers
Content-Type: application/json
Response body
{
"error": "httpHealthCheckPath must start with a / (no protocol or hostname in path)"
}
Response headers
Content-Type: application/json
Response body
{
"error": "httpHealthCheckPort must be set when healthCheckPath is set"
}
Response headers
Content-Type: application/json
Response body
{
"error": "httpHealthCheckPort '1337' is not one of the configured ports"
}
Response headers
Content-Type: application/json
Response body
{
"error": "ipSetup 'l33t' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid hostname: 'test&@*#'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on HA-IP 'example-haip' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' has an action running, no modification is allowed"
}
Update a HA-IP
PUT/haips/{haipName}
This API calls allows for altering a HA-IP in several ways outlined below:
-
Set the description of a HA-IP;
-
Set the PTR record;
-
Set the httpHealthCheckPath, must start with a /;
-
Set the httpHealthCheckPort, the port must be configured on the HA-IP PortConfigurations.
Load balancing options (loadBalancingMode
):
-
roundrobin: forward to next address everytime;
-
cookie: forward to a fixed server, based on the cookie;
-
source: choose a server to forward to based on the source address.
Ip setup options (ipSetup
):
-
both: accept ipv4 and ipv6 and forward them to seperate ipv4 and ipv6 addresses;
-
noipv6: do not accept ipv6 traffic;
-
ipv6to4: forward ipv6 traffic to ipv4.
-
ipv4to6: forward ipv4 traffic to ipv6.
- haipName
string
(required) Example: example-haipThe HA-IP name
- haip
- name
HA-IP name
- description
The description that can be set by the customer
- status
HA-IP status, either ‘active’, ‘inactive’, ‘creating’
- isLoadBalancingEnabled
Whether load balancing is enabled for this HA-IP
- loadBalancingMode
HA-IP load balancing mode: ‘roundrobin’, ‘cookie’, ‘source’
- stickyCookieName
Cookie name to pin sessions on when using cookie balancing mode
- healthCheckInterval
The interval in milliseconds at which health checks are performed. The interval may not be smaller than 2000ms.
- httpHealthCheckPath
The path (URI) of the page to check HTTP status code on
- httpHealthCheckPort
The port to perform the HTTP check on, this should be the port your services are listening on
- httpHealthCheckSsl
Whether to use SSL when performing the HTTP check
- ipv4Address
HA-IP IPv4 address
- ipv6Address
HA-IP IPv6 address
- ipSetup
HA-IP IP setup: ‘both’, ‘noipv6’, ‘ipv6to4’, ‘ipv4to6’
- ptrRecord
The PTR record for the HA-IP
- ipAddresses
The IPs attached to this HA-IP
- tlsMode
HA-IP TLS Mode: ‘tls12’
- isLocked
Whether or not another process is already doing stuff with this HA-IP
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"endTime": "end"
}
' \
"https://api.transip.nl/v6/haips/example-haip"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"endTime": "end"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP with name 'example-haip' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid cancellation time: 'now', please use either 'end' or 'immediately'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Product already has cancellation pending"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on HA-IP 'example-haip' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' has an action running, no modification is allowed"
}
Cancel a HA-IP
DELETE/haips/{haipName}
With this method you are able to cancel a HA-IP.
When specifying ‘end’ for endTime
, the HA-IP will be canceled at the end of the contract period. In case you specify ‘immediately’ the HA-IP will be detached from any IPs it’s currently attached to and traffic will no longer be proxied.
- haipName
string
(required) Example: example-haipThe HA-IP name
- endTime
Cancellation time, either ‘end’ or ‘immediately’
HA-IP certificates ¶
This is the API endpoint for HA-IP certificates services.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/haips/example-haip/certificates"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"certificates": [
{
"id": 25478,
"commonName": "example.com",
"expirationDate": "2019-11-23",
"issuerType": "letsencrypt"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP with name 'example-haip' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on HA-IP 'example-haip' are temporary disabled"
}
List all HA-IP certificates
GET/haips/{haipName}/certificates
List the SSL certificates that are currently used by this HA-IP.
Ssl certificate id refers to the ssl certificate found in domain ssl
- haipName
string
(required) Example: example-haipThe HA-IP name
- certificates
- id
The domain ssl certificate id
- commonName
The common name of the certificate, usually a domain name
- expirationDate
The expiration date of the certificate in ‘Y-m-d’ format
- issuerType
The type of issuer of this certificate.
non-free
orletsencrypt
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"sslCertificateId": 5844
}
' \
"https://api.transip.nl/v6/haips/example-haip/certificates"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"sslCertificateId": 5844
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP with name 'example-haip' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "SSL certificate with id '227' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "request is missing 'sslCertificateId' or 'commonName'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "certificate with sslCertificateId '38012' is already attached to this HA-IP"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on HA-IP 'example-haip' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' has an action running, no modification is allowed"
}
Add existing certificate to HA-IP
POST/haips/{haipName}/certificates
Add a DV, OV or EV Certificate to Haip for SSL offloading. Enable HTTPS mode in portConfiguration
to use these certificates. This will also enable our proxy’s to set the X-Forwarded-For header.
SSL certificate id refers to the SSL certificate found in domain ssl
- haipName
string
(required) Example: example-haipThe HA-IP name
- sslCertificateId
id refers to the SSL certificate found in domain ssl
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"commonName": "foobar.example.com"
}
' \
"https://api.transip.nl/v6/haips/example-haip/certificates"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"commonName": "foobar.example.com"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP with name 'example-haip' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The domain 'foo.bar' could not be found in your account"
}
Response headers
Content-Type: application/json
Response body
{
"error": "request is missing 'sslCertificateId' or 'commonName'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid domain name: 'foo..bar'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "'example.com' does not resolve to HA-IP IpAddress"
}
Response headers
Content-Type: application/json
Response body
{
"error": "commonName '*.example.com' is invalid as it cannot be managed, the domain should be part of your account"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on HA-IP 'example-haip' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' has an action running, no modification is allowed"
}
Add LetsEncrypt certificate to HA-IP
POST/haips/{haipName}/certificates
Add a LetsEncrypt certificate to your HA-IP. We will take care of all the validation and renewals.
In order to provide free LetsEncrypt certificates for the domains on your HA-IP, some requirements must be met in order to complete the certificate request:
-
DNS: the given CommonName must resolve to the HA-IP IP. IPv6 is not required, but when set, it must resolve to the HA-IP IPv6;
-
PortConfiguration: LetsEncrypt verifies domains with a HTTP call to
/.well-known
. When requesting a LetsEncrypt certificate, our proxies will handle all ACME requests to automatically verify the certificate. To achieve this, the HA-IP must have a HTTP portConfiguration on port 80. When using this, you will also no longer be able to verify your own LetsEncrypt certificates via HA-IP.
Warning: If your HA-IP does not have a HTTP portconfiguration on port 80, we will ensure it will.
- haipName
string
(required) Example: example-haipThe HA-IP name
- commonName
The domain name that the SSL certificate is added to. Start with ‘*.’ when the certificate is a wildcard
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/haips/example-haip/certificates/7548"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP with name 'example-haip' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on HA-IP 'example-haip' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' has an action running, no modification is allowed"
}
Detach a certificate from this HA-IP
DELETE/haips/{haipName}/certificates/{certificateId}
Detaches a HA-IP certificate by the given certificateId
, this is the same identifier as seen on domain ssl.
- haipName
string
(required) Example: example-haipThe HA-IP name
- certificateId
number
(required) Example: 7548The certificate Id, this is the same identifier as seen on domain ssl
HA-IP IP Addresses ¶
This is the API endpoint for IP Addresses attached to your HA-IP.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/haips/example-haip/ip-addresses"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"ipAddresses": [
"149.13.3.7",
"149.31.33.7"
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP with name 'example-haip' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on HA-IP 'example-haip' are temporary disabled"
}
List all IPs attached to a HA-IP
GET/haips/{haipName}/ip-addresses
This method will return a list of currently attached IP addresses to your HA-IP. Traffic will be forwarded to the IPs attached to the HA-IP.
- haipName
string
(required) Example: example-haipThe HA-IP name
- ipAddresses
List of IP addresses attached to this HA-IP
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"ipAddresses": [
"149.13.3.7",
"149.31.33.7"
]
}
' \
"https://api.transip.nl/v6/haips/example-haip/ip-addresses"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"ipAddresses": [
"149.13.3.7",
"149.31.33.7"
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP basic product allows only one attached IP address"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP with name 'example-haip' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "IP address(es) '127.0.0.1, 127.0.0.2' are not in your account"
}
Response headers
Content-Type: application/json
Response body
{
"error": "IP address 'test-ip-123' is not a valid IPV4 or IPV6 address"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on HA-IP 'example-haip' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' has an action running, no modification is allowed"
}
Set HA-IP attached IP addresses
PUT/haips/{haipName}/ip-addresses
Replace or attach IPs for HA-IP.
Only IPs in your account are allowed.
When load balancing is enabled, multiple IPs can be attached to HA-IP. If load balancing is not enabled, the current attached IP (if any) will be replaced with the first provided IP.
- haipName
string
(required) Example: example-haipThe HA-IP name
- ipAddresses
Set of IP addresses to attach, replaces the current set of IP addresses
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/haips/example-haip/ip-addresses"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP with name 'example-haip' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on HA-IP 'example-haip' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' has an action running, no modification is allowed"
}
Detach all IPs from HA-IP
DELETE/haips/{haipName}/ip-addresses
Detach all IPs from HA-IP.
Removing the last IP from HA-IP will also delete all port configurations.
- haipName
string
(required) Example: example-haipThe HA-IP name
HA-IP port configurations ¶
This is the API endpoint for HA-IP port configurations services.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/haips/example-haip/port-configurations"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"portConfigurations": [
{
"id": 9865,
"name": "Website Traffic",
"sourcePort": 80,
"targetPort": 80,
"mode": "http",
"endpointSslMode": "off"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP with name 'example-haip' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on HA-IP 'example-haip' are temporary disabled"
}
List all HA-IP port configurations
GET/haips/{haipName}/port-configurations
This method will return a list of all port configuration on the given HA-IP.
- haipName
string
(required) Example: example-haipThe HA-IP name
- portConfigurations
- id
The port configuration Id
- name
A name describing the port
- sourcePort
The port at which traffic arrives on your HA-IP
- targetPort
The port at which traffic arrives on your attached IP address(es)
- mode
The mode determining how traffic is processed and forwarded: ‘tcp’, ‘http’, ‘https’, ‘http2_https’, ‘proxy’
- endpointSslMode
The mode determining how traffic between our load balancers and your attached IP address(es) is encrypted: ‘off’, ‘on’, ‘strict’
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/haips/example-haip/port-configurations/7548"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"portConfiguration": {
"id": 9865,
"name": "Website Traffic",
"sourcePort": 80,
"targetPort": 80,
"mode": "http",
"endpointSslMode": "off"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP with name 'example-haip' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP PortConfiguration with id '1337' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on HA-IP 'example-haip' are temporary disabled"
}
Get info about a specific PortConfiguration
GET/haips/{haipName}/port-configurations/{portConfigurationId}
This method will return information about a specific port configuration.
- haipName
string
(required) Example: example-haipThe HA-IP name
- portConfigurationId
number
(required) Example: 7548The port configuration Id
- portConfiguration
- id
The port configuration Id
- name
A name describing the port
- sourcePort
The port at which traffic arrives on your HA-IP
- targetPort
The port at which traffic arrives on your attached IP address(es)
- mode
The mode determining how traffic is processed and forwarded: ‘tcp’, ‘http’, ‘https’, ‘http2_https’, ‘proxy’
- endpointSslMode
The mode determining how traffic between our load balancers and your attached IP address(es) is encrypted: ‘off’, ‘on’, ‘strict’
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"name": "Website Traffic",
"sourcePort": 443,
"targetPort": 443,
"mode": "https",
"endpointSslMode": "on"
}
' \
"https://api.transip.nl/v6/haips/example-haip/port-configurations"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"name": "Website Traffic",
"sourcePort": 443,
"targetPort": 443,
"mode": "https",
"endpointSslMode": "on"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP with name 'example-haip' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "name cannot be empty"
}
Response headers
Content-Type: application/json
Response body
{
"error": "sourcePort 'test123' is an invalid port number must be between 0 and 65535"
}
Response headers
Content-Type: application/json
Response body
{
"error": "targetPort 'test123' is an invalid port number must be between 0 and 65535"
}
Response headers
Content-Type: application/json
Response body
{
"error": "mode 'tcptje' is invalid must be one of 'tcp', 'http', 'https', 'http2_https', 'proxy'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "endpointSslMode 'odd' is invalid must be one of 'on', 'off', 'strict'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "sourcePort '25' is not unique, there is already a PortConfiguration using this sourcePort port"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on HA-IP 'example-haip' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' has an action running, no modification is allowed"
}
Create a port configuration
POST/haips/{haipName}/port-configurations
Add ports to HA-IP to route to your attached IP address(es)
Mode options:
-
http appends a X-Forwarded-For header to HTTP requests with the original remote IP;
-
https same as HTTP, with SSL Certificate offloading;
-
http2_https same as HTTPS, with http/2 support;
-
tcp plain TCP forward to your attached IP address(es);
-
proxy proxy protocol is also a way to retain the original remote IP, but also works for non HTTP traffic (note: the receiving application has to support this).
Endpoint SSL mode options:
-
off no SSL connection is established between our load balancers and your attached IP address(es);
-
on an SSL connection is established between our load balancers your attached IP address(es), but the certificate is not validated;
-
strict an SSL connection is established between our load balancers your attached IP address(es), and the certificate must signed by a trusted Certificate Authority.
- haipName
string
(required) Example: example-haipThe HA-IP name
- name
Name of the port configuration
- sourcePort
The port at which traffic arrives on your HA-IP
- targetPort
The port at which traffic arrives on your attached IP address(es)
- mode
The mode determining how traffic is processed and forwarded: ‘tcp’, ‘http’, ‘https’, ‘http2_https’, ‘proxy’
- endpointSslMode
The mode determining how traffic between our load balancers and your VPS is protected: ‘off’, ‘on’, ‘strict’
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"portConfiguration": {
"id": 9865,
"name": "Website Traffic",
"sourcePort": 80,
"targetPort": 80,
"mode": "http",
"endpointSslMode": "off"
}
}
' \
"https://api.transip.nl/v6/haips/example-haip/port-configurations/7548"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"portConfiguration": {
"id": 9865,
"name": "Website Traffic",
"sourcePort": 80,
"targetPort": 80,
"mode": "http",
"endpointSslMode": "off"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP with name 'example-haip' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP PortConfiguration with id '75' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "name cannot be empty"
}
Response headers
Content-Type: application/json
Response body
{
"error": "sourcePort 'test123' is an invalid port number must be between 0 and 65535"
}
Response headers
Content-Type: application/json
Response body
{
"error": "targetPort 'test123' is an invalid port number must be between 0 and 65535"
}
Response headers
Content-Type: application/json
Response body
{
"error": "mode 'tcptje' is invalid must be one of 'tcp', 'http', 'https', 'http2_https', 'proxy'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "endpointSslMode 'odd' is invalid must be one of 'on', 'off', 'strict'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "sourcePort '1337' is not unique, there is already a PortConfiguration using this sourcePort port"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on HA-IP 'example-haip' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' has an action running, no modification is allowed"
}
Update a port configuration
PUT/haips/{haipName}/port-configurations/{portConfigurationId}
Update the name
, sourcePort
, targetPort
, mode
, or endpointSslMode
for a specific port configuration.
Mode options (mode
):
-
http appends a X-Forwarded-For header to HTTP requests with the original remote IP;
-
https same as HTTP, with SSL Certificate offloading;
-
http2_https same as HTTPS, with http/2 support;
-
tcp plain TCP forward to your VPS;
-
proxy proxy protocol is also a way to retain the original remote IP, but also works for non HTTP traffic (note: the receiving application has to support this).
Endpoint SSL mode options (endpointSslMode
):
-
off no SSL connection is established between our load balancers and your VPS;
-
on an SSL connection is established between our load balancers your VPS, but the certificate is not validated;
-
strict an SSL connection is established between our load balancers your VPS, and the certificate must signed by a trusted Certificate Authority.
- haipName
string
(required) Example: example-haipThe HA-IP name
- portConfigurationId
number
(required) Example: 7548The port configuration Id
- portConfiguration
- id
The port configuration Id
- name
A name describing the port
- sourcePort
The port at which traffic arrives on your HA-IP
- targetPort
The port at which traffic arrives on your attached IP address(es)
- mode
The mode determining how traffic is processed and forwarded: ‘tcp’, ‘http’, ‘https’, ‘http2_https’, ‘proxy’
- endpointSslMode
The mode determining how traffic between our load balancers and your attached IP address(es) is encrypted: ‘off’, ‘on’, ‘strict’
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/haips/example-haip/port-configurations/7548"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP with name 'example-haip' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP PortConfiguration with id '1337' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on HA-IP 'example-haip' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' has an action running, no modification is allowed"
}
Remove port configuration
DELETE/haips/{haipName}/port-configurations/{portConfigurationId}
Remove a port configuration by id.
- haipName
string
(required) Example: example-haipThe HA-IP name
- portConfigurationId
number
(required) Example: 7548The port configuration Id
HA-IP StatusReports ¶
This is the API endpoint for your HA-IP status reports, you can fetch the current statuses per attached bacIP address, IP version, port and load balancer
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/haips/example-haip/status-reports"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"statusReports": [
{
"ipAddress": "136.10.14.1",
"port": 80,
"ipVersion": 4,
"loadBalancerName": "lb0",
"loadBalancerIp": "136.144.151.255",
"state": "up",
"lastChange": "2019-09-29 16:51:18"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP 'example-haip' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "HA-IP with name 'example-haip' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on HA-IP 'example-haip' are temporary disabled"
}
Get a full status report for a HA-IP
GET/haips/{haipName}/status-reports
The result contains a report per attached IP address, IP version, port and load balancer.
- haipName
string
(required) Example: example-haipThe HA-IP name
- statusReports
- ipAddress
Attached IP address this status report is for
- port
HA-IP PortConfiguration port
- ipVersion
IP Version 4,6
- loadBalancerName
The name of the load balancer
- loadBalancerIp
The IP address of the HA-IP load balancer
- state
The state of the load balancer, either ‘up’ or ‘down’
- lastChange
Last change in the state in Europe/Amsterdam timezone
/ Kubernetes ¶
Clusters ¶
This is an API endpoint for managing your kubernetes clusters.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"clusters": [
{
"name": "k888k",
"description": "frontend",
"version": "1.24.2",
"endpoint": "https://k888k.ooquu8ro.k8s.transip.dev:30298",
"isLocked": false,
"isBlocked": false
}
]
}
List all clusters
GET/kubernetes/clusters
Returns a list of all Kubernetes clusters.
Warning: This method is experimental and could be changed
This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.
- clusters
- name
Name of the cluster
- description
cluster (string, optional) - Describes this cluster
- version
Version of kubernetes this cluster is running
- endpoint
URL to connect to with kubectl
- isLocked
When an ongoing process blocks the project from being modified, this is set to
true
- isBlocked
Set to
true
when a project has been administratively blocked
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"cluster": {
"name": "k888k",
"description": "frontend",
"version": "1.24.2",
"endpoint": "https://k888k.ooquu8ro.k8s.transip.dev:30298",
"isLocked": false,
"isBlocked": false
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster with name 'ez4del0l' not found"
}
List single cluster
GET/kubernetes/clusters/{clusterName}
Get information on a specific kubernetes cluster by name.
Warning: This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- cluster
- name
Name of the cluster
- description
cluster (string, optional) - Describes this cluster
- version
Version of kubernetes this cluster is running
- endpoint
URL to connect to with kubectl
- isLocked
When an ongoing process blocks the project from being modified, this is set to
true
- isBlocked
Set to
true
when a project has been administratively blocked
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"nodeSpec": "node-k8",
"desiredNodeCount": 3,
"availabilityZone": "ams0",
"description": "cluster-x",
"kubernetesVersion": "1.24.3"
}
' \
"https://api.transip.nl/v6/kubernetes/clusters"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"nodeSpec": "node-k8",
"desiredNodeCount": 3,
"availabilityZone": "ams0",
"description": "cluster-x",
"kubernetesVersion": "1.24.3"
}
Response headers
Content-Type: application/json
Response body
{
"error": "No valid payment information found. Please add your payment information through the control panel on the website."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The availability zone 'wtf0' is not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'description' can be 64 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The parameters nodeSpec, desiredNodeCount and availabilityZone should either all be supplied or omitted"
}
Response headers
Content-Type: application/json
Response body
{
"error": "KubernetesVersion 'a.b.c' is not a valid KubernetesVersion"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Node not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The availability zone 'ams0' is not available"
}
Create new cluster
POST/kubernetes/clusters
With the creation of a new cluster, optionally the first nodePool can be created by providing its specifications using the following fields:
nodeSpec
, desiredNodeCount
and availabilityZone
. Note that either all or none of these fields must be provided.
Warning: This method is experimental and could be changed
Warning: Usage statistics of active services in your Kubernetes cluster will reflect in your monthly invoice
- nodeSpec
ProductName for the WorkerNodes in the initial NodePool; use the /kubernetes/products resource to determine which to use
- desiredNodeCount
The desired amount of nodes in the initial NodePool
- availabilityZone
Availability Zone the WorkerNodes of the initial pool will spawn
- description
Describes this cluster
- kubernetesVersion
The specific version the Cluster should run on
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"cluster": {
"name": "k888k",
"description": "frontend",
"version": "1.24.2",
"endpoint": "https://k888k.ooquu8ro.k8s.transip.dev:30298",
"isLocked": false,
"isBlocked": false
}
}
' \
"https://api.transip.nl/v6/kubernetes/clusters/k888k"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"cluster": {
"name": "k888k",
"description": "frontend",
"version": "1.24.2",
"endpoint": "https://k888k.ooquu8ro.k8s.transip.dev:30298",
"isLocked": false,
"isBlocked": false
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster with name 'ez4del0l' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'description' can be 64 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster 'k888k' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster 'k888k' is blocked, no modification is allowed"
}
Update cluster
PUT/kubernetes/clusters/{clusterName}
This API calls allows for altering a Kubernetes cluster in several ways outlined below:
- Set a new description;
Warning: This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- cluster
- name
Name of the cluster
- description
cluster (string, optional) - Describes this cluster
- version
Version of kubernetes this cluster is running
- endpoint
URL to connect to with kubectl
- isLocked
When an ongoing process blocks the project from being modified, this is set to
true
- isBlocked
Set to
true
when a project has been administratively blocked
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "reset",
"confirmation": "k8ser"
}
' \
"https://api.transip.nl/v6/kubernetes/clusters/k888k"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "reset",
"confirmation": "k8ser"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster with name 'ez4del0l' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The confirmation for 'clusterName' was done incorrectly"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster 'k888k' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster 'k888k' is blocked, no modification is allowed"
}
Reset cluster
PATCH/kubernetes/clusters/{clusterName}
This API call allows you to reset the cluster to it’s initial state. Pass along the confirmation
parameter
with the name of the cluster as value (for example: PATCH /v6/kubernetes/clusters/k8ser?action=reset&confirmation=k8ser)
to verify the reset of the cluster.
Warning: This method is experimental and could be changed.
Warning: This action will remove ALL data from your cluster. This can NOT be recovered.
- clusterName
string
(required) Example: k888kclusterName
- action
- confirmation
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "upgrade",
"version": "1.27.0"
}
' \
"https://api.transip.nl/v6/kubernetes/clusters/k888k"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "upgrade",
"version": "1.27.0"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster with name 'ez4del0l' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Specified release was not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Specified release version is invalid"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Specified release version is incompatible with the specified cluster"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster 'k888k' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster 'k888k' is blocked, no modification is allowed"
}
Upgrade cluster
PATCH/kubernetes/clusters/{clusterName}
This API call allows you to upgrade the cluster to a newer Kubernetes release. Pass along the version
parameter
with the version of the release as value (for example: PATCH /v6/kubernetes/clusters/k8ser?action=upgrade&version=1.27.0).
Note that it is only possible to upgrade one minor version at a time, as recommended by the Version skew policy (https://kubernetes.io/releases/version-skew-policy/).
Compatible releases for the cluster can be listed with the releases subresource (for example: /v6/kubernetes/clusters/k8ser/releases?isCompatibleUpgrade=true).
Warning: This method is experimental and could be changed.
- clusterName
string
(required) Example: k888kclusterName
- action
- version
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster with name 'ez4del0l' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster 'k888k' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster 'k888k' is blocked, no modification is allowed"
}
Remove cluster
DELETE/kubernetes/clusters/{clusterName}
remove a Kubernetes cluster with this endpoint.
Warning: This method is experimental and could be changed
Warning: all nodes will be wiped from your Kubernetes cluster.
- clusterName
string
(required) Example: k888kclusterName
KubeConfig ¶
Retrieve KubeConfig for Cluster
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/kube-config"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"kubeConfig": {
"encodedYaml": "`WW91IHNwaW4gbWUgcmlnaHQgJ3JvdW5kLCBiYWJ5LCByaWdodCAncm91bmQKTGlrZSBhIHJlY29yZCwgYmFieSwgcmlnaHQgJ3JvdW5kLCAncm91bmQsICdyb3VuZApZb3Ugc3BpbiBtZSByaWdodCAncm91bmQsIGJhYnksIHJpZ2h0ICdyb3VuZApMaWtlIGEgcmVjb3JkLCBiYWJ5LCByaWdodCAncm91bmQsICdyb3VuZCwgJ3JvdW5k`\\n"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster with name 'ez4del0l' not found"
}
Get KubeConfig for Cluster
GET/kubernetes/clusters/{clusterName}/kube-config
Returns base64 encoded version of the kubeConfig yaml of the specified cluster
Warning: This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- kubeConfig
- encodedYaml
KubeConfig base64 encoded YAML
Products ¶
You can request all Kubernetes related products here
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/products"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"products": [
{
"type": "workerNode",
"name": "node-k8",
"description": "Node K8 / 4 vCPUs / 8 GB RAM",
"periodPrices": [
{
"periodUnit": "month",
"periodLength": 1,
"isExact": false,
"currency": "EUR",
"costCents": "0.0079"
}
],
"specs": [
{
"name": "memory",
"unit": "KiB",
"amount": 67108864,
"description": "The amount of cores"
}
]
}
]
}
List kubernetes products
GET/kubernetes/products
Returns a list of all Kubernetes products
Warning: This method is experimental and could be changed
This endpoint is bound to change. Specs will not be fetched when retrieving this list.
You can retrieve specs by sending a GET
request to /kubernetes/products/{productName}
- tags
string
(optional) Example: /kubernetes/products?types=workerNodetypes to filter by, seperated by a comma
- products
- type
Kubernetes product type
- name
Product name
- description
Description of product
- periodPrices
Product price information
- periodUnit
The unit of the period this object describes
- periodLength
The amount of the period this object describes
- isExact
Whether the costs in this object is exact or an approximation
- currency
The currency of the costs described in this object
- costCents
The costs for the period described in this object
- specs
Specifications of the items
- name
Name of the specification
- unit
Specifies in what unit the amount is
- amount
amount of the specification
- description
Description of the specification
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/products/node-k8"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"product": {
"type": "workerNode",
"name": "node-k8",
"description": "Node K8 / 4 vCPUs / 8 GB RAM",
"periodPrices": [
{
"periodUnit": "month",
"periodLength": 1,
"isExact": false,
"currency": "EUR",
"costCents": "0.0079"
}
],
"specs": [
{
"name": "memory",
"unit": "KiB",
"amount": 67108864,
"description": "The amount of cores"
}
]
}
}
Get information about a Kubernetes product
GET/kubernetes/products/{product}
Returns information about a specific Kubernetes product
Warning: This method is experimental and could be changed
- product
string
(required) Example: node-k8Product
- product
- type
Kubernetes product type
- name
Product name
- description
Description of product
- periodPrices
Product price information
- periodUnit
The unit of the period this object describes
- periodLength
The amount of the period this object describes
- isExact
Whether the costs in this object is exact or an approximation
- currency
The currency of the costs described in this object
- costCents
The costs for the period described in this object
- specs
Specifications of the items
- name
Name of the specification
- unit
Specifies in what unit the amount is
- amount
amount of the specification
- description
Description of the specification
NodePools ¶
NodePools containing the Kubernetes WorkerNodes
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/node-pools"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"nodePools": [
{
"uuid": "402c2f84-c37d-9388-634d-00002b7c6a82",
"description": "frontend",
"clusterName": "k888k",
"desiredNodeCount": 3,
"nodeSpec": "vps-bladevps-x4",
"availabilityZone": "ams0",
"status": "creating",
"nodes": [
{
"uuid": "76743b28-f779-3e68-6aa1-00007fbb911d",
"nodePoolUuid": "402c2f84-c37d-9388-634d-00002b7c6a82",
"clusterName": "k888k",
"status": "active",
"ipAddresses": [
{
"address": "37.97.254.6",
"subnetMask": "255.255.255.0",
"type": "external"
}
]
}
]
}
]
}
List all nodepools
GET/kubernetes/clusters/{clusterName}/node-pools
Returns a list of all the Node Pools.
Warning: This method is experimental and could be changed
This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.
- clusterName
string
(required) Example: k888kclusterName
- nodePools
- uuid
Uuid of the NodePool
- description
cluster (string, optional) - Describes this NodePool
- clusterName
Name of the cluster the nodePool is in
- desiredNodeCount
The desired amount of nodes in this pool, might not always be the actual count of nodes
- nodeSpec
The specification of the Nodes in this NodePool
- availabilityZone
The availabilityZone the nodes of this nodePool are in
- status
The NodePool status
- nodes
Nodes currently in NodePool
- uuid
Uuid of the Node
- nodePoolUuid
Uuid of the nodePool the node is in
- clusterName
Name of the cluster the node is in
- status
Status of the Node
- ipAddresses
IP addresses assigned to this node
- address
The IP address
- subnetMask
Subnet mask
- type
external|internal|private
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/node-pools/402c2f84-c37d-9388-634d-00002b7c6a82"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"nodePool": {
"uuid": "402c2f84-c37d-9388-634d-00002b7c6a82",
"description": "frontend",
"clusterName": "k888k",
"desiredNodeCount": 3,
"nodeSpec": "vps-bladevps-x4",
"availabilityZone": "ams0",
"status": "creating",
"nodes": [
{
"uuid": "76743b28-f779-3e68-6aa1-00007fbb911d",
"nodePoolUuid": "402c2f84-c37d-9388-634d-00002b7c6a82",
"clusterName": "k888k",
"status": "active",
"ipAddresses": [
{
"address": "37.97.254.6",
"subnetMask": "255.255.255.0",
"type": "external"
}
]
}
]
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "NodePool with uuid '59bfa0da-97be-39a8-3b05-0000534269df' not found"
}
List single nodepool
GET/kubernetes/clusters/{clusterName}/node-pools/{uuid}
Get information on a specific Node Pool by Uuid
Warning: This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- uuid
string
(required) Example: 402c2f84-c37d-9388-634d-00002b7c6a82NodePool Uuid
- nodePool
- uuid
Uuid of the NodePool
- description
cluster (string, optional) - Describes this NodePool
- clusterName
Name of the cluster the nodePool is in
- desiredNodeCount
The desired amount of nodes in this pool, might not always be the actual count of nodes
- nodeSpec
The specification of the Nodes in this NodePool
- availabilityZone
The availabilityZone the nodes of this nodePool are in
- status
The NodePool status
- nodes
Nodes currently in NodePool
- uuid
Uuid of the Node
- nodePoolUuid
Uuid of the nodePool the node is in
- clusterName
Name of the cluster the node is in
- status
Status of the Node
- ipAddresses
IP addresses assigned to this node
- address
The IP address
- subnetMask
Subnet mask
- type
external|internal|private
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"description": "frontend-pool",
"desiredNodeCount": 3,
"nodeSpec": "node-k8",
"availabilityZone": "ams0"
}
' \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/node-pools"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"description": "frontend-pool",
"desiredNodeCount": 3,
"nodeSpec": "node-k8",
"availabilityZone": "ams0"
}
Response body
{
"uuid": "2c51c5df-3470-67a8-c320-00004bdd58e7"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster with name 'ez4del0l' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The availability zone 'abc0' is not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Node not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'description' can be 64 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster 'k888k' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster 'k888k' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The availability zone 'ams0' is not available"
}
Add nodepool
POST/kubernetes/clusters/{clusterName}/node-pools
Add a New NodePool to Cluster
Warning: This method is experimental and could be changed
Warning: Usage of active services in your cluster will reflect in your monthly invoice
- clusterName
string
(required) Example: k888kclusterName
- description
Describes the Node Pool (max 64 chars)
- desiredNodeCount
Amount of WorkerNodes
- nodeSpec
Node type for the WorkerNodes in this pool
- availabilityZone
Availability Zone the WorkerNodes of this pool will spawn
- uuid
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"nodePool": {
"uuid": "402c2f84-c37d-9388-634d-00002b7c6a82",
"description": "frontend",
"clusterName": "k888k",
"desiredNodeCount": 3,
"nodeSpec": "vps-bladevps-x4",
"availabilityZone": "ams0",
"status": "creating",
"nodes": [
{
"uuid": "76743b28-f779-3e68-6aa1-00007fbb911d",
"nodePoolUuid": "402c2f84-c37d-9388-634d-00002b7c6a82",
"clusterName": "k888k",
"status": "active",
"ipAddresses": [
{
"address": "37.97.254.6",
"subnetMask": "255.255.255.0",
"type": "external"
}
]
}
]
}
}
' \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/node-pools/402c2f84-c37d-9388-634d-00002b7c6a82"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"nodePool": {
"uuid": "402c2f84-c37d-9388-634d-00002b7c6a82",
"description": "frontend",
"clusterName": "k888k",
"desiredNodeCount": 3,
"nodeSpec": "vps-bladevps-x4",
"availabilityZone": "ams0",
"status": "creating",
"nodes": [
{
"uuid": "76743b28-f779-3e68-6aa1-00007fbb911d",
"nodePoolUuid": "402c2f84-c37d-9388-634d-00002b7c6a82",
"clusterName": "k888k",
"status": "active",
"ipAddresses": [
{
"address": "37.97.254.6",
"subnetMask": "255.255.255.0",
"type": "external"
}
]
}
]
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "NodePool with uuid '59bfa0da-97be-39a8-3b05-0000534269df' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Given amount for desiredNodeCount '1337' is limited between 1 and 16"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'description' can be 64 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster 'k888k' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster 'k888k' is blocked, no modification is allowed"
}
Update nodepool
PUT/kubernetes/clusters/{clusterName}/node-pools/{uuid}
This API calls allows for altering a Kubernetes cluster in several ways outlined below:
-
Set a new description;
-
Set a different amount of desired Nodes;
Warning: This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- uuid
string
(required) Example: 402c2f84-c37d-9388-634d-00002b7c6a82NodePool Uuid
- nodePool
- uuid
Uuid of the NodePool
- description
cluster (string, optional) - Describes this NodePool
- clusterName
Name of the cluster the nodePool is in
- desiredNodeCount
The desired amount of nodes in this pool, might not always be the actual count of nodes
- nodeSpec
The specification of the Nodes in this NodePool
- availabilityZone
The availabilityZone the nodes of this nodePool are in
- status
The NodePool status
- nodes
Nodes currently in NodePool
- uuid
Uuid of the Node
- nodePoolUuid
Uuid of the nodePool the node is in
- clusterName
Name of the cluster the node is in
- status
Status of the Node
- ipAddresses
IP addresses assigned to this node
- address
The IP address
- subnetMask
Subnet mask
- type
external|internal|private
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/node-pools/402c2f84-c37d-9388-634d-00002b7c6a82"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "NodePool with uuid '59bfa0da-97be-39a8-3b05-0000534269df' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster 'k888k' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Cluster 'k888k' is blocked, no modification is allowed"
}
Remove nodepool
DELETE/kubernetes/clusters/{clusterName}/node-pools/{uuid}
Delete a NodePool and Nodes from Cluster
Warning: This method is experimental and could be changed
Warning: This will also remove the WorkerNodes
- clusterName
string
(required) Example: k888kclusterName
- uuid
string
(required) Example: 402c2f84-c37d-9388-634d-00002b7c6a82NodePool Uuid
NodePool Labels ¶
Labels of a nodePool
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/node-pools/402c2f84-c37d-9388-634d-00002b7c6a82/labels"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"labels": [
{
"key": "key",
"value": "value",
"modifiable": true
}
]
}
List all labels
GET/kubernetes/clusters/{clusterName}/node-pools/{uuid}/labels
Returns a list of all the labels on this nodepool
Warning: This method is experimental and could be changed
This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.
- clusterName
string
(required) Example: k888kclusterName
- uuid
string
(required) Example: 402c2f84-c37d-9388-634d-00002b7c6a82NodePool Uuid
- labels
- key
Label key
- value
Label value
- modifiable
wether this label can be modified through the API
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"labels": [
{
"key": "key",
"value": "value",
"modifiable": true
}
]
}
' \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/node-pools/402c2f84-c37d-9388-634d-00002b7c6a82/labels"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"labels": [
{
"key": "key",
"value": "value",
"modifiable": true
}
]
}
Update labels
PUT/kubernetes/clusters/{clusterName}/node-pools/{uuid}/labels
Update the labels on a NodePool
Warning: This method is experimental and could be changed
- The modifiable field is optional and is not processed for this method
- clusterName
string
(required) Example: k888kclusterName
- uuid
string
(required) Example: 402c2f84-c37d-9388-634d-00002b7c6a82NodePool Uuid
- labels
- key
Label key
- value
Label value
- modifiable
wether this label can be modified through the API
NodePool Taints ¶
Taints of a nodePool
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/node-pools/402c2f84-c37d-9388-634d-00002b7c6a82/taints"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"taints": [
{
"key": "key",
"value": "value",
"effect": "NoSchedule",
"modifiable": true
}
]
}
List all taints
GET/kubernetes/clusters/{clusterName}/node-pools/{uuid}/taints
Returns a list of all the taints on this nodepool
Warning: This method is experimental and could be changed
This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.
- clusterName
string
(required) Example: k888kclusterName
- uuid
string
(required) Example: 402c2f84-c37d-9388-634d-00002b7c6a82NodePool Uuid
- taints
- key
Taint key
- value
Taint value
- effect
Taint effect, either
NoSchedule
,PreferNoSchedule
orNoExecute
- modifiable
wether this taint can be modified through the API
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"taints": [
{
"key": "key",
"value": "value",
"effect": "NoSchedule",
"modifiable": true
}
]
}
' \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/node-pools/402c2f84-c37d-9388-634d-00002b7c6a82/taints"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"taints": [
{
"key": "key",
"value": "value",
"effect": "NoSchedule",
"modifiable": true
}
]
}
Update taints
PUT/kubernetes/clusters/{clusterName}/node-pools/{uuid}/taints
Update the taints on a NodePool
Warning: This method is experimental and could be changed
- The modifiable field is optional and is not processed for this method
- clusterName
string
(required) Example: k888kclusterName
- uuid
string
(required) Example: 402c2f84-c37d-9388-634d-00002b7c6a82NodePool Uuid
- taints
- key
Taint key
- value
Taint value
- effect
Taint effect, either
NoSchedule
,PreferNoSchedule
orNoExecute
- modifiable
wether this taint can be modified through the API
Nodes ¶
WorkerNodes of the Kubernetes Clusters
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"nodePoolUuid": "/kubernetes/clusters/k888s/nodes?nodePoolUuid=76743b28"
}
' \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/nodes"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"nodePoolUuid": "/kubernetes/clusters/k888s/nodes?nodePoolUuid=76743b28"
}
Response headers
Content-Type: application/json
Response body
{
"nodes": [
{
"uuid": "76743b28-f779-3e68-6aa1-00007fbb911d",
"nodePoolUuid": "402c2f84-c37d-9388-634d-00002b7c6a82",
"clusterName": "k888k",
"status": "active",
"ipAddresses": [
{
"address": "37.97.254.6",
"subnetMask": "255.255.255.0",
"type": "external"
}
]
}
]
}
List all nodes
GET/kubernetes/clusters/{clusterName}/nodes
Returns a list of all the Nodes. Filtering can be done on nodePoolUuid in the URL: /v6/kubernetes/clusters/k888s/nodes?nodePoolUuid=76743b28-f779-3e68-6aa1-00007fbb911d
This method is experimental and could be changed
This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.
- clusterName
string
(required) Example: k888kclusterName
- nodePoolUuid
f779-3e68-6aa1-00007fbb911d` (string, optional) - NodePool uuid to filter on
- nodes
- uuid
Uuid of the Node
- nodePoolUuid
Uuid of the nodePool the node is in
- clusterName
Name of the cluster the node is in
- status
Status of the Node
- ipAddresses
IP addresses assigned to this node
- address
The IP address
- subnetMask
Subnet mask
- type
external|internal|private
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/nodes/158ae73a-d13b-52e8-a244-000006b1a48e"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"node": {
"uuid": "76743b28-f779-3e68-6aa1-00007fbb911d",
"nodePoolUuid": "402c2f84-c37d-9388-634d-00002b7c6a82",
"clusterName": "k888k",
"status": "active",
"ipAddresses": [
{
"address": "37.97.254.6",
"subnetMask": "255.255.255.0",
"type": "external"
}
]
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Node with uuid '10ad431f-4b81-0729-6208-0000574cdeae' not found"
}
List single node
GET/kubernetes/clusters/{clusterName}/nodes/{uuid}
Get information on a specific Node by Uuid
This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- uuid
string
(required) Example: 158ae73a-d13b-52e8-a244-000006b1a48eUuid
- node
- uuid
Uuid of the Node
- nodePoolUuid
Uuid of the nodePool the node is in
- clusterName
Name of the cluster the node is in
- status
Status of the Node
- ipAddresses
IP addresses assigned to this node
- address
The IP address
- subnetMask
Subnet mask
- type
external|internal|private
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "reboot"
}
' \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/nodes/158ae73a-d13b-52e8-a244-000006b1a48e"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "reboot"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Node with uuid '10ad431f-4b81-0729-6208-0000574cdeae' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on Node '10ad431f-4b81-0729-6208-0000574cdeae' are temporary disabled"
}
Reboot a node
PATCH/kubernetes/clusters/{clusterName}/nodes/{uuid}
This API call allows you to reboot a node, this can be useful when its stuck for example.
To reboot a node, send a PATCH request with the action
attribute set to reboot
.
- clusterName
string
(required) Example: k888kclusterName
- uuid
string
(required) Example: 158ae73a-d13b-52e8-a244-000006b1a48eUuid
- action
Block Storages ¶
Block storage volumes for use as persistent volumes in k8s
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/block-storages"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"volumes": [
{
"uuid": "220887f0-db1a-76a9-2332-00004f589b19",
"name": "pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80",
"clusterName": "k888k",
"sizeInGib": 20,
"type": "hdd",
"availabilityZone": "ams0",
"status": "attached",
"nodeUuid": "76743b28-f779-3e68-6aa1-00007fbb911d",
"serial": "a4d857d3fe5e814f34bb",
"pvcName": "pvc-123",
"pvcNamespace": "default"
}
]
}
List all volumes
GET/kubernetes/clusters/{clusterName}/block-storages
Returns a list of all the block storage volumes in this account. Filtering can be done on nodeUuid in the URL: /v6/kubernetes/clusters/k888k/block-storages?nodeUuid=76743b28-f779-3e68-6aa1-00007fbb911d
Warning: This method is experimental and could be changed
This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.
- clusterName
string
(required) Example: k888kclusterName
- nodeUuid
string
(optional) Example: /kubernetes/clusters/k888k/block-storages?nodeUuid=76743b28-f779-3e68-6aa1-00007fbb911dnodeUuid to filter on
- volumes
- uuid
Uuid of the Volume
- name
User configurable unique identifier (max 64 chars)
- clusterName
Name of the cluster this block storage belongs to
- sizeInGib
Size of volume in gibibytes
- type
Type of storage
- availabilityZone
AvailabilityZone where this volume is located
- status
Status of the volume ‘creating’, ‘available’, ‘attaching’, ‘attached’, ‘detaching’, ‘deleting’
- nodeUuid
Node Uuid this volume is attached to
- serial
The serial of the disk. This is a unique identifier that is visible by the node it has been attached to
- pvcName
Name of the persistent volume claim that this BlockStorage backs
- pvcNamespace
Defines the namespace the PVC is residing in
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/block-storages/pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-d '
{
"name": "pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80",
"sizeInGib": 200,
"type": "hdd",
"availabilityZone": "ams0"
}
' \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/block-storages/pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"name": "pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80",
"sizeInGib": 200,
"type": "hdd",
"availabilityZone": "ams0"
}
Response headers
Content-Type: application/json
Response body
{
"volume": {
"uuid": "220887f0-db1a-76a9-2332-00004f589b19",
"name": "pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80",
"clusterName": "k888k",
"sizeInGib": 20,
"type": "hdd",
"availabilityZone": "ams0",
"status": "attached",
"nodeUuid": "76743b28-f779-3e68-6aa1-00007fbb911d",
"serial": "a4d857d3fe5e814f34bb",
"pvcName": "pvc-123",
"pvcNamespace": "default"
}
}
Response headers
Content-Type: application/json
Response body
{ "error": "BlockStorage with name 'custom-28932cf7-43d3-2029-3261-00007019d5a5' not found" }
::: warning
<i class="fa fa-warning"></i> **Warning**: This method is experimental and could be changed
::: [POST]
`name` can be set as desired (cannot be changed later on) within the RFC1123 spec:
Response headers
Content-Type: application/json
Response body
{
"error": "The availability zone 'wtf0' is not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Given parameter `sizeInGib` is out of range 1-40960"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'type' can only be one of the following value's 'hdd'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "BlockStorage name 'bobby-dazzler' is already in use"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The availability zone 'ams0' is not available"
}
List single volume
GET/kubernetes/clusters/{clusterName}/block-storages/{name}
Get information on a specific volume by user configured name
Warning: This method is experimental and could be changed
- name
string
(required) Example: pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80Name
- clusterName
string
(required) Example: k888kclusterName
- volume
- uuid
Uuid of the Volume
- name
User configurable unique identifier (max 64 chars)
- clusterName
Name of the cluster this block storage belongs to
- sizeInGib
Size of volume in gibibytes
- type
Type of storage
- availabilityZone
AvailabilityZone where this volume is located
- status
Status of the volume ‘creating’, ‘available’, ‘attaching’, ‘attached’, ‘detaching’, ‘deleting’
- nodeUuid
Node Uuid this volume is attached to
- serial
The serial of the disk. This is a unique identifier that is visible by the node it has been attached to
- pvcName
Name of the persistent volume claim that this BlockStorage backs
- pvcNamespace
Defines the namespace the PVC is residing in
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"volume": {
"uuid": "220887f0-db1a-76a9-2332-00004f589b19",
"name": "pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80",
"clusterName": "k888k",
"sizeInGib": 20,
"type": "hdd",
"availabilityZone": "ams0",
"status": "attached",
"nodeUuid": "76743b28-f779-3e68-6aa1-00007fbb911d",
"serial": "a4d857d3fe5e814f34bb",
"pvcName": "pvc-123",
"pvcNamespace": "default"
}
}
' \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/block-storages/pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"volume": {
"uuid": "220887f0-db1a-76a9-2332-00004f589b19",
"name": "pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80",
"clusterName": "k888k",
"sizeInGib": 20,
"type": "hdd",
"availabilityZone": "ams0",
"status": "attached",
"nodeUuid": "76743b28-f779-3e68-6aa1-00007fbb911d",
"serial": "a4d857d3fe5e814f34bb",
"pvcName": "pvc-123",
"pvcNamespace": "default"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Node '59bfa0da-97be-39a8-3b05-0000534269df' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "BlockStorage with name 'bobby-dazzler' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Node with uuid '59bfa0da-97be-39a8-3b05-0000534269df' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Node '59bfa0da-97be-39a8-3b05-0000534269df' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on Node '59bfa0da-97be-39a8-3b05-0000534269df' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "BlockStorage 'pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "BlockStorage 'pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80' is not in the same availabilityZone as Node '59bfa0da-97be-39a8-3b05-0000534269df'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Actions on BlockStorage 'pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
"error": "BlockStorage 'pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80' is already attached to Node 'ef3ff61b-e070-4e6a-9420-3494caa30a15'"
}
Update volume
PUT/kubernetes/clusters/{clusterName}/block-storages/{name}
This API calls allows for altering a volume in several ways outlined below:
-
nodeUuid
Set a different nodeUuid or empty to detach; -
sizeInGib
Resize the volume;
Warning: This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- name
string
(required) Example: pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80Name
- volume
- uuid
Uuid of the Volume
- name
User configurable unique identifier (max 64 chars)
- clusterName
Name of the cluster this block storage belongs to
- sizeInGib
Size of volume in gibibytes
- type
Type of storage
- availabilityZone
AvailabilityZone where this volume is located
- status
Status of the volume ‘creating’, ‘available’, ‘attaching’, ‘attached’, ‘detaching’, ‘deleting’
- nodeUuid
Node Uuid this volume is attached to
- serial
The serial of the disk. This is a unique identifier that is visible by the node it has been attached to
- pvcName
Name of the persistent volume claim that this BlockStorage backs
- pvcNamespace
Defines the namespace the PVC is residing in
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/block-storages/pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "BlockStorage with name 'custom-28932cf7-43d3-2029-3261-00007019d5a5' not found"
}
Remove volume
DELETE/kubernetes/clusters/{clusterName}/block-storages/{name}
Delete a volume and its data
Warning: This method is experimental and could be changed
Warning: This will delete all data on this block storage device
- clusterName
string
(required) Example: k888kclusterName
- name
string
(required) Example: pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80Name
LoadBalancers ¶
LoadBalancers Acting as ingress-points for the kubernetes cluster
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/load-balancers"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"loadBalancers": [
{
"uuid": "220887f0-db1a-76a9-2332-00004f589b19",
"name": "lb-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80",
"status": "active",
"ipv4Address": "37.97.254.7",
"ipv6Address": "2a01:7c8:3:1337::1",
"balancing": {
"mode": "roundrobin",
"cookieName": "220887f0-db1a-76a9-2332-00004f589b19"
},
"ports": [
{
"name": "http_kube_apiserver",
"port": 1337,
"mode": "tcp"
}
],
"nodes": "[\"76743b28-f779-3e68-6aa1-00007fbb911d\"]",
"serviceName": "nginx-5313",
"serviceNamespace": "default",
"aggregatedStatus": {
"total": 3,
"up": 2
}
}
]
}
List all LoadBalancers
GET/kubernetes/clusters/{clusterName}/load-balancers
Lists all LoadBalancers in the cluster.
Warning: This method is experimental and could be changed
This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.
- clusterName
string
(required) Example: k888kclusterName
- loadBalancers
- uuid
LoadBalancer Uuid
- name
User configurable unique identifier (max 64 chars)
- status
LoadBalancer status, either ‘active’, ‘creating’ or ‘deleting’
- ipv4Address
LoadBalancer IPv4 address
- ipv6Address
LoadBalancer IPv6 address
- balancing
LoadBalancer load balancing mode
- mode
LoadBalancer balancing mode, either
roundrobin
,cookie
,source
- cookieName
LoadBalancer balancing cookie name
- ports
LoadBalancer ports.
- name
LoadBalancer port name
- port
LoadBalancer port
- mode
LoadBalancer port mode, either
tcp
,http
,https
,http2_https
orproxy
- nodes
A mapping between IP addresses and UUIDs of attached nodes
- serviceName
The name of the service
- serviceNamespace
Defines the namespace the service is residing in
- aggregatedStatus
LoadBalancer aggregated status
- total
LoadBalancer’s total amount of nodes
- up
LoadBalancer’s amount of healthy nodes
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/load-balancers/lb-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"loadBalancer": {
"uuid": "220887f0-db1a-76a9-2332-00004f589b19",
"name": "lb-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80",
"status": "active",
"ipv4Address": "37.97.254.7",
"ipv6Address": "2a01:7c8:3:1337::1",
"balancing": {
"mode": "roundrobin",
"cookieName": "220887f0-db1a-76a9-2332-00004f589b19"
},
"ports": [
{
"name": "http_kube_apiserver",
"port": 1337,
"mode": "tcp"
}
],
"nodes": "[\"76743b28-f779-3e68-6aa1-00007fbb911d\"]",
"serviceName": "nginx-5313",
"serviceNamespace": "default",
"aggregatedStatus": {
"total": 3,
"up": 2
}
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "LoadBalancer with name 'example' not found"
}
Get LoadBalancer info
GET/kubernetes/clusters/{clusterName}/load-balancers/{name}
Get information about a specific LoadBalancer such as the IP(s) it’s currently assigned to and the IPv4 and IPv6 address of the LoadBalancer.
Warning: This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- name
string
(required) Example: lb-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80LoadBalancer name
- loadBalancer
- uuid
LoadBalancer Uuid
- name
User configurable unique identifier (max 64 chars)
- status
LoadBalancer status, either ‘active’, ‘creating’ or ‘deleting’
- ipv4Address
LoadBalancer IPv4 address
- ipv6Address
LoadBalancer IPv6 address
- balancing
LoadBalancer load balancing mode
- mode
LoadBalancer balancing mode, either
roundrobin
,cookie
,source
- cookieName
LoadBalancer balancing cookie name
- ports
LoadBalancer ports.
- name
LoadBalancer port name
- port
LoadBalancer port
- mode
LoadBalancer port mode, either
tcp
,http
,https
,http2_https
orproxy
- nodes
A mapping between IP addresses and UUIDs of attached nodes
- serviceName
The name of the service
- serviceNamespace
Defines the namespace the service is residing in
- aggregatedStatus
LoadBalancer aggregated status
- total
LoadBalancer’s total amount of nodes
- up
LoadBalancer’s amount of healthy nodes
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"name": "lb-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80"
}
' \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/load-balancers"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"name": "lb-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80"
}
Add a LoadBalancer
POST/kubernetes/clusters/{clusterName}/load-balancers
name
can be set as desired (cannot be changed later on) within the RFC1123 spec:
-
contain at most 63 characters;
-
contain only lowercase alphanumeric characters or ‘-’;
-
start with an alphanumeric character;
-
end with an alphanumeric character;
Warning: This method is experimental and could be changed
Warning: Usage of active services in your cluster will reflect in your monthly invoice
- clusterName
string
(required) Example: k888kclusterName
- name
user configurable unique identifier for loadBalancer (max 64 chars), when none is given, the uuid will be used. (cannot be changed later on)
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"loadBalancerConfig": {
"loadBalancingMode": "cookie",
"stickyCookieName": "PHPSESSID",
"healthCheckInterval": 3000,
"httpHealthCheckPath": "/status.php",
"httpHealthCheckPort": 443,
"httpHealthCheckSsl": true,
"ipSetup": "ipv6to4",
"ptrRecord": "frontend.example.com",
"tlsMode": "tls12",
"ipAddresses": [
"10.3.37.1",
"10.3.38.1"
],
"portConfiguration": [
{
"name": "Website Traffic",
"sourcePort": 80,
"targetPort": 80,
"mode": "http",
"endpointSslMode": "off"
}
]
}
}
' \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/load-balancers/lb-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"loadBalancerConfig": {
"loadBalancingMode": "cookie",
"stickyCookieName": "PHPSESSID",
"healthCheckInterval": 3000,
"httpHealthCheckPath": "/status.php",
"httpHealthCheckPort": 443,
"httpHealthCheckSsl": true,
"ipSetup": "ipv6to4",
"ptrRecord": "frontend.example.com",
"tlsMode": "tls12",
"ipAddresses": [
"10.3.37.1",
"10.3.38.1"
],
"portConfiguration": [
{
"name": "Website Traffic",
"sourcePort": 80,
"targetPort": 80,
"mode": "http",
"endpointSslMode": "off"
}
]
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "LoadBalancer with name 'example' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "stickyCookieName must be set when balancingMode is cookie"
}
Response headers
Content-Type: application/json
Response body
{
"error": "loadBalancingMode is invalid must be one of 'roundrobin', 'cookie', 'source'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "healthCheckInterval must be larger than 2000"
}
Response headers
Content-Type: application/json
Response body
{
"error": "httpHealthCheckPath must start with a / (no protocol or hostname in path)"
}
Response headers
Content-Type: application/json
Response body
{
"error": "httpHealthCheckPort must be set when healthCheckPath is set"
}
Response headers
Content-Type: application/json
Response body
{
"error": "httpHealthCheckPort '1337' is not one of the configured ports"
}
Response headers
Content-Type: application/json
Response body
{
"error": "ipSetup 'l33t' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid hostname: 'test&@*#'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "name cannot be empty"
}
Response headers
Content-Type: application/json
Response body
{
"error": "sourcePort 'test123' is an invalid port number must be between 0 and 65535"
}
Response headers
Content-Type: application/json
Response body
{
"error": "targetPort 'test123' is an invalid port number must be between 0 and 65535"
}
Response headers
Content-Type: application/json
Response body
{
"error": "mode 'tcptje' is invalid must be one of 'tcp', 'http', 'https', 'http2_https', 'proxy'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "endpointSslMode 'odd' is invalid must be one of 'on', 'off', 'strict'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "sourcePort '25' is not unique, there is already a PortConfiguration using this sourcePort port"
}
Response headers
Content-Type: application/json
Response body
{
"error": "LoadBalancer 'example' has an action running, no modification is allowed"
}
Update a loadBalancer
PUT/kubernetes/clusters/{clusterName}/load-balancers/{name}
This API calls allows for altering a LoadBalancer in several ways outlined below:
Warning: This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- name
string
(required) Example: lb-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80LoadBalancer name
- loadBalancerConfig
- loadBalancingMode
LoadBalancer load balancing mode: ‘roundrobin’, ‘cookie’, ‘source’
- stickyCookieName
Cookie name to pin sessions on when using cookie balancing mode
- healthCheckInterval
The interval in milliseconds at which health checks are performed. The interval may not be smaller than 2000ms.
- httpHealthCheckPath
The path (URI) of the page to check HTTP status code on
- httpHealthCheckPort
The port to perform the HTTP check on, this should be the port your services are listening on
- httpHealthCheckSsl
Whether to use SSL when performing the HTTP check
- ipSetup
LoadBalancer IP setup: ‘both’, ‘noipv6’, ‘ipv6to4’, ‘ipv4to6’
- ptrRecord
The PTR record for the LoadBalancer
- tlsMode
LoadBalancer TLS Mode: ‘tls10_11_12’, ‘tls11_12’, ‘tls12’
- ipAddresses
The IPs attached to this LoadBalancer
- portConfiguration
Array with port configurations for this LoadBalancer
- name
A name describing the port
- sourcePort
The port at which traffic arrives on your HA-IP
- targetPort
The port at which traffic arrives on your attached IP address(es)
- mode
The mode determining how traffic is processed and forwarded: ‘tcp’, ‘http’, ‘https’, ‘http2_https’, ‘proxy’
- endpointSslMode
The mode determining how traffic between our load balancers and your attached IP address(es) is encrypted: ‘off’, ‘on’, ‘strict’
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/load-balancers/lb-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "LoadBalancer with name 'example' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Product already has cancellation pending"
}
Response headers
Content-Type: application/json
Response body
{
"error": "LoadBalancer 'example' has an action running, no modification is allowed"
}
Remove a LoadBalancer
DELETE/kubernetes/clusters/{clusterName}/load-balancers/{name}
With this method you are able to Remove a loadBalancer.
Warning: This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- name
string
(required) Example: lb-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80LoadBalancer name
Events ¶
Events in a cluster
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/events"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"events": [
{
"name": "kube-proxy-g9ldg.175d7f60d241f2c8",
"namespace": "default",
"type": "Warning",
"message": "Node is not ready",
"reason": "NodeNotReady",
"count": 6,
"creationTimestamp": 1683641890,
"firstTimestamp": 1683641890,
"lastTimestamp": 1683641890,
"involvedObjectKind": "Pod",
"involvedObjectName": "kube-proxy-g9ldg",
"sourceComponent": "kubelet"
}
]
}
List all events
GET/kubernetes/clusters/{clusterName}/events
Returns a list of all the events in this cluster. The amount of events is limited to 500 items and gets the result from the api-server cache. We advise to use kubectl to properly list/watch events. Filtering can be done on namespace in the URL: /v6/kubernetes/clusters/k888k/events?namespace=kube-system
Warning: This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- namespace
string
(optional) Example: kube-systemFilter the events by namespace
- events
- name
The name of the event
- namespace
The namespace of the event
- type
The type of event, e.g:
Warning
orNormal
- message
A mesage about the event
- reason
The reason for the event
- count
The amount of times the event occured
- creationTimestamp
Unix timestamp of when the event was created
- firstTimestamp
Unix timestamp of when the event was first see
- lastTimestamp
Unix timestamp of when the event was last seen
- involvedObjectKind
The kind of object this event is about
- involvedObjectName
The name of the object this event is about
- sourceComponent
The emitter of this event
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/events/055e55bd-9fee-4ba7-a99d-d7f8d700315c.175ba9a3c3d58a98"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"event": {
"name": "kube-proxy-g9ldg.175d7f60d241f2c8",
"namespace": "default",
"type": "Warning",
"message": "Node is not ready",
"reason": "NodeNotReady",
"count": 6,
"creationTimestamp": 1683641890,
"firstTimestamp": 1683641890,
"lastTimestamp": 1683641890,
"involvedObjectKind": "Pod",
"involvedObjectName": "kube-proxy-g9ldg",
"sourceComponent": "kubelet"
}
}
List an event
GET/kubernetes/clusters/{clusterName}/events/{name}
Get information on a specific event. We advise to use kubectl to properly list/watch events.
Warning: This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- name
string
(required) Example: 055e55bd-9fee-4ba7-a99d-d7f8d700315c.175ba9a3c3d58a98Name
- namespace
string
(required) Example: kube-systemThe namespace of the event
- event
- name
The name of the event
- namespace
The namespace of the event
- type
The type of event, e.g:
Warning
orNormal
- message
A mesage about the event
- reason
The reason for the event
- count
The amount of times the event occured
- creationTimestamp
Unix timestamp of when the event was created
- firstTimestamp
Unix timestamp of when the event was first see
- lastTimestamp
Unix timestamp of when the event was last seen
- involvedObjectKind
The kind of object this event is about
- involvedObjectName
The name of the object this event is about
- sourceComponent
The emitter of this event
Releases ¶
This is an API endpoint for the Kubernetes releases on our platform.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/releases"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"releases": [
{
"version": "1.23.5",
"releaseDate": "2022-03-11",
"maintenanceModeDate": "2022-12-28",
"endOfLifeDate": "2023-02-28"
}
]
}
List all available Kubernetes releases
GET/kubernetes/releases
Returns a list of all available Kubernetes releases.
Warning: This method is experimental and could be changed
- releases
- version
Kubernetes release version
- releaseDate
The release date of a Kubernetes release
- maintenanceModeDate
The date that only security updates are issued for the Kubernetes release
- endOfLifeDate
The end of life date of the Kubernetes release
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/releases/1.23.5"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"release": {
"version": "1.23.5",
"releaseDate": "2022-03-11",
"maintenanceModeDate": "2022-12-28",
"endOfLifeDate": "2023-02-28"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Release with version 1.5.4 not found"
}
List a single Kubernetes release
GET/kubernetes/releases/{version}
Get information about a single Kubernetes release
Warning: This method is experimental and could be changed
- version
string
(required) Example: 1.23.5Version
- release
- version
Kubernetes release version
- releaseDate
The release date of a Kubernetes release
- maintenanceModeDate
The date that only security updates are issued for the Kubernetes release
- endOfLifeDate
The end of life date of the Kubernetes release
Releases per cluster ¶
This is an API endpoint for the Kubernetes releases on our platform.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/releases"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"releases": [
{
"isCompatibleUpgrade": false,
"version": "1.23.5",
"releaseDate": "2022-03-11",
"maintenanceModeDate": "2022-12-28",
"endOfLifeDate": "2023-02-28"
}
]
}
List all available Kubernetes releases
GET/kubernetes/clusters/{clusterName}/releases
Returns a list of all available Kubernetes releases.
This subresource of Cluster adds the field isCompatibleUpgrade
to indicate whether a release can be used as an upgrade target.
To only show compatible releases for upgrades, use the filter /v6/kubernetes/clusters/k8ser/releases?isCompatibleUpgrade=true
Warning: This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- releases
- isCompatibleUpgrade
Whether the Kubernetes release can be installed as an upgrade for the selected cluster
- version
Kubernetes release version
- releaseDate
The release date of a Kubernetes release
- maintenanceModeDate
The date that only security updates are issued for the Kubernetes release
- endOfLifeDate
The end of life date of the Kubernetes release
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/releases/1.23.5"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"release": {
"isCompatibleUpgrade": false,
"version": "1.23.5",
"releaseDate": "2022-03-11",
"maintenanceModeDate": "2022-12-28",
"endOfLifeDate": "2023-02-28"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Release with version 1.5.4 not found"
}
List a single Kubernetes release
GET/kubernetes/clusters/{clusterName}/releases/{version}
Get information about a single Kubernetes release
Warning: This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- version
string
(required) Example: 1.23.5Version
- release
- isCompatibleUpgrade
Whether the Kubernetes release can be installed as an upgrade for the selected cluster
- version
Kubernetes release version
- releaseDate
The release date of a Kubernetes release
- maintenanceModeDate
The date that only security updates are issued for the Kubernetes release
- endOfLifeDate
The end of life date of the Kubernetes release
Stats ¶
This is the API endpoint for kubernetes node statistics.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"types": "cpu,disk,network",
"dateTimeStart": 1500538995,
"dateTimeEnd": 1500542619
}
' \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/nodes/158ae73a-d13b-52e8-a244-000006b1a48e/stats"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"types": "cpu,disk,network",
"dateTimeStart": 1500538995,
"dateTimeEnd": 1500542619
}
Response headers
Content-Type: application/json
Response body
{
"usage": {
"cpu": [
{
"percentage": 3.11,
"date": 1574783109
}
],
"disk": [
{
"iopsRead": 0.27,
"iopsWrite": 0.13,
"date": 1574783109
}
],
"network": [
{
"mbitOut": 100.2,
"mbitIn": 249.93,
"date": 1574783109
}
]
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Node is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Node not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The parameter 'dateTimeStart' is not a number."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The timestamp 'dateTimeEnd' cannot be negative."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The timestamp 'dateTimeEnd' cannot be in the future."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The time period is too large, it should not be bigger than one month."
}
Response headers
Content-Type: application/json
Response body
{
"error": "These are invalid usage types: invalid, type."
}
Get node statistics
GET/kubernetes/clusters/{clusterName}/nodes/{uuid}/stats
Use this API call to retrieve usage data for a specific kubernetes node. Make sure to specify the dateTimeStart
and dateTimeEnd
parameters in UNIX timestamp format.
Please take the following into account:
-
The
dateTimeStart
anddateTimeEnd
parameters allow for gathering information about a specific time period, when not specified the output will contain data for the past 24 hours; -
The difference between
dateTimeStart
anddateTimeEnd
parameters may not exceed one month.
Warning: This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- uuid
string
(required) Example: 158ae73a-d13b-52e8-a244-000006b1a48eUuid
- types
The types of statistics that can be returned,
cpu
,disk
andnetwork
can be specified in a comma seperated way. If not specified, all data will be returned.- dateTimeStart
The start date of the usage statistics
- dateTimeEnd
The end date of the usage statistics
- usage
- cpu
- percentage
The percentage of CPU usage for this entry
- date
Date of the entry, by default in UNIX timestamp format
- disk
- iopsRead
The read IOPS for this entry
- iopsWrite
The write IOPS for this entry
- date
Date of the entry, by default in UNIX timestamp format
- network
- mbitOut
The amount of outbound traffic in Mbps for this usage entry
- mbitIn
The amount of inbound traffic in Mbps for this usage entry
- date
Date of the entry, by default in UNIX timestamp format
Stats ¶
This is the API endpoint for kubernetes block storage statistics.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"dateTimeStart": 1490023668,
"dateTimeEnd": 1490064468
}
' \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/block-storages/pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80/stats"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"dateTimeStart": 1490023668,
"dateTimeEnd": 1490064468
}
Response headers
Content-Type: application/json
Response body
{
"usage": [
{
"iopsRead": 0.27,
"iopsWrite": 0.13,
"date": 1574783109
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "The parameter 'dateTimeStart' is not a number."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The timestamp 'dateTimeStart' cannot be negative."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The timestamp 'dateTimeEnd' cannot be in the future."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The time period is too large, it should not be bigger than one month."
}
Response headers
Content-Type: application/json
Response body
{
"error": "The time period is too large, it should not be bigger than one month."
}
Response headers
Content-Type: application/json
Response body
{
"error": "These are invalid usage types: invalid, type."
}
Response headers
Content-Type: application/json
Response body
{
"error": "Block storage is not attached to a node"
}
Get block storage statistics
GET/kubernetes/clusters/{clusterName}/block-storages/{name}/stats
Get the usage statistics for a kubernetes block storage. You can specify a dateTimeStart
and dateTimeEnd
parameter in the UNIX timestamp format. When none given, traffic for the past 24 hours are returned. The maximum period is one month.
When the block storage is not attached to a node, there are no usage statistics available. Therefore, the response returned will be a 406 exception. If the block storage is re-attached to another node then the old statistics are no longer available.
Warning: This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- name
string
(required) Example: pvc-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80Name
- dateTimeStart
The start date of the usage statistics
- dateTimeEnd
The end date of the usage statistics
- usage
- iopsRead
The read IOPS for this entry
- iopsWrite
The write IOPS for this entry
- date
Date of the entry, by default in UNIX timestamp format
StatusReports ¶
This is the API endpoint for kubernetes load balancer status reports.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/load-balancers/lb-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80/status-reports"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"statusReports": [
{
"nodeUuid": "76743b28-f779-3e68-6aa1-00007fbb911d",
"nodeIpAddress": "136.10.14.1",
"port": 80,
"ipVersion": 4,
"loadBalancerName": "lb0",
"loadBalancerIp": "136.144.151.255",
"state": "up",
"lastChange": "2019-09-29 16:51:18"
}
]
}
List all LoadBalancer status reports
GET/kubernetes/clusters/{clusterName}/load-balancers/{name}/status-reports
Lists LoadBalancer status reports for all attached nodes.
Warning: This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- name
string
(required) Example: lb-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80LoadBalancer name
- statusReports
- nodeUuid
UUID of the node that this report is for
- nodeIpAddress
IP of the node that this report is for
- port
Port
- ipVersion
IP version 4/6
- loadBalancerName
The name of the upstream load balancer
- loadBalancerIp
The IP address of the upstream load balancer
- state
The state of this configuration, either ‘up’ or ‘down’
- lastChange
Last change in the state in Europe/Amsterdam timezone
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/kubernetes/clusters/k888k/load-balancers/lb-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80/status-reports/158ae73a-d13b-52e8-a244-000006b1a48e"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"statusReports": [
{
"nodeUuid": "76743b28-f779-3e68-6aa1-00007fbb911d",
"nodeIpAddress": "136.10.14.1",
"port": 80,
"ipVersion": 4,
"loadBalancerName": "lb0",
"loadBalancerIp": "136.144.151.255",
"state": "up",
"lastChange": "2019-09-29 16:51:18"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "LoadBalancer with name 'example' not found"
}
Get LoadBalancer info
GET/kubernetes/clusters/{clusterName}/load-balancers/{name}/status-reports/{nodeUuid}
Lists LoadBalancer status reports for the specified node
Warning: This method is experimental and could be changed
- clusterName
string
(required) Example: k888kclusterName
- name
string
(required) Example: lb-bbb0ddf8-8aeb-4f35-85ff-4e198a0faf80LoadBalancer name
- nodeUuid
string
(required) Example: 158ae73a-d13b-52e8-a244-000006b1a48eUuid
- statusReports
- nodeUuid
UUID of the node that this report is for
- nodeIpAddress
IP of the node that this report is for
- port
Port
- ipVersion
IP version 4/6
- loadBalancerName
The name of the upstream load balancer
- loadBalancerIp
The IP address of the upstream load balancer
- state
The state of this configuration, either ‘up’ or ‘down’
- lastChange
Last change in the state in Europe/Amsterdam timezone
/ Acronis ¶
Tenants ¶
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"productName": "acronis-250gb",
"addons": [
"acronisAddon-250gb"
]
}
' \
"https://api.transip.nl/v6/acronis/tenants"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"productName": "acronis-250gb",
"addons": [
"acronisAddon-250gb"
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Acronis product 'acronis-250gb' is not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This product does not allow addons"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Error Processing Order, internal error occurred, please contact our support"
}
Order a new tenant
POST/acronis/tenants
Order a new tenant
Warning: This API call will create an invoice!
- productName
Name of the product
- addons
Addons to be added
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/acronis/tenants"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"tenants": [
{
"uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
"name": "testuser",
"description": "My tenant description",
"isSelfManaged": false
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Acronis not found"
}
List all tenants
GET/acronis/tenants
List all tenants
This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.
- tenants
- uuid
uuid for this tenant
- name
tenant (string, optional) - name of the tenant
- description
description of the tenant
- isSelfManaged
if this tenant is in self managed mode
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/acronis/tenants/419636c9a72c4c588285920f6cc4bb2c"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"tenant": {
"uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
"name": "testuser",
"description": "My tenant description",
"isSelfManaged": false
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Acronis not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Tenant with uuid '123' not found"
}
Get tenant by uuid
GET/acronis/tenants/{tenantUuid}
Request information about a specific tenant
- tenantUuid
string
(required) Example: 419636c9a72c4c588285920f6cc4bb2cAcronis tenant identifier
- tenant
- uuid
uuid for this tenant
- name
tenant (string, optional) - name of the tenant
- description
description of the tenant
- isSelfManaged
if this tenant is in self managed mode
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"tenant": {
"uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
"name": "testuser",
"description": "My tenant description",
"isSelfManaged": false
}
}
' \
"https://api.transip.nl/v6/acronis/tenants/419636c9a72c4c588285920f6cc4bb2c"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"tenant": {
"uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
"name": "testuser",
"description": "My tenant description",
"isSelfManaged": false
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Acronis not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Tenant with uuid '123' not found"
}
Update tenant
PUT/acronis/tenants/{tenantUuid}
This API calls allows for altering a tenant in several ways outlined below:
- Set a new description;
- tenantUuid
string
(required) Example: 419636c9a72c4c588285920f6cc4bb2cAcronis tenant identifier
- tenant
- uuid
uuid for this tenant
- name
tenant (string, optional) - name of the tenant
- description
description of the tenant
- isSelfManaged
if this tenant is in self managed mode
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"endTime": "end"
}
' \
"https://api.transip.nl/v6/acronis/tenants/419636c9a72c4c588285920f6cc4bb2c"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"endTime": "end"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Tenant not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid cancellation time: 'now', please use either 'end' or 'immediately'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Product already has cancellation pending"
}
Cancel a tenant
DELETE/acronis/tenants/{tenantUuid}
Using the DELETE method on an tenant will cancel it, thus deleting it.
When specifying ‘end’ for endTime
, the acronis tenant will be canceled at the end of the contract period. In case you specify ‘immediately’ the acronis tenant will be cancelled immediately.
- tenantUuid
string
(required) Example: 419636c9a72c4c588285920f6cc4bb2cAcronis tenant identifier
- endTime
Cancellation time, either ‘end’ or ‘immediately’
Upgrades ¶
This is the API endpoint for Acronis upgrades services.
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"productName": "acronis-250gb"
}
' \
"https://api.transip.nl/v6/acronis/tenants/419636c9a72c4c588285920f6cc4bb2c/upgrades"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"productName": "acronis-250gb"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Acronis product 'acronis-250gb' is not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Error Processing Order, internal error occurred, please contact our support"
}
Upgrade a tenant
PUT/acronis/tenants/{tenantUuid}/upgrades
This API call allows you to upgrade a tenant.
Warning: This API call will create an invoice for the upgrade.
- tenantUuid
string
(required) Example: 419636c9a72c4c588285920f6cc4bb2cAcronis tenant identifier
- productName
Downgrades ¶
This is the API endpoint for Acronis downgrades services.
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"productName": "acronis-250gb"
}
' \
"https://api.transip.nl/v6/acronis/tenants/419636c9a72c4c588285920f6cc4bb2c/downgrades"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"productName": "acronis-250gb"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Acronis product 'acronis-250gb' is not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Error Processing Order, internal error occurred, please contact our support"
}
Downgrade a tenant
PUT/acronis/tenants/{tenantUuid}/downgrades
This API call allows you to downgrade a tenant.
Warning: This API call will create an invoice for the downgrade.
- tenantUuid
string
(required) Example: 419636c9a72c4c588285920f6cc4bb2cAcronis tenant identifier
- productName
Addons ¶
This is the API endpoint for Acronis addon services.
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"addons": [
"acronisAddon-250gb"
]
}
' \
"https://api.transip.nl/v6/acronis/tenants/419636c9a72c4c588285920f6cc4bb2c/addons"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"addons": [
"acronisAddon-250gb"
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Acronis product 'acronisAddon-250gb' is not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This product does not allow addons"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Error Processing Order, internal error occurred, please contact our support"
}
Order addons
POST/acronis/tenants/{tenantUuid}/addons
This API call allows you to order addons.
Warning: This API call will create an invoice.
- tenantUuid
string
(required) Example: 419636c9a72c4c588285920f6cc4bb2cAcronis tenant identifier
- addons
Addons to be added
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/acronis/tenants/419636c9a72c4c588285920f6cc4bb2c/addons/acronisAddon-250gb"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "Acronis product 'acronisAddon-250gb' is not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Product already has cancellation pending"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Error Processing Order, internal error occurred, please contact our support"
}
Cancel addons
DELETE/acronis/tenants/{tenantUuid}/addons/{addonName}
This API call allows you to cancel addons.
- tenantUuid
string
(required) Example: 419636c9a72c4c588285920f6cc4bb2cAcronis tenant identifier
- addonName
string
(required) Example: acronisAddon-250gbAddon to be cancelled
Login ¶
Fetch a One Time Token Login URL to access the Acronis Dashboard of your product.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/acronis/tenants/419636c9a72c4c588285920f6cc4bb2c/login"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"loginUrl": "https://eu8-cloud.acronis.com/api/2/idp/external-login#ott=ott&targetURI=https://eu8-cloud.acronis.com/services"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Tenant not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Acronis not found"
}
Generate one time token login url
GET/acronis/tenants/{tenantUuid}/login
- tenantUuid
string
(required) Example: 419636c9a72c4c588285920f6cc4bb2cAcronis tenant identifier
- loginUrl
Usage ¶
Fetch acronis usage of a specific tenant
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/acronis/tenants/419636c9a72c4c588285920f6cc4bb2c/usage"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"usage": {
"currentUsage": "200",
"limit": "500"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Tenant not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Acronis not found"
}
Fetch overview of current usage
GET/acronis/tenants/{tenantUuid}/usage
Overview of current usage of your Acronis Product The usage is expressed in GB
- tenantUuid
string
(required) Example: 419636c9a72c4c588285920f6cc4bb2cAcronis tenant identifier
- usage
- currentUsage
The current usage of your acronis product
- limit
The usage limit of your acronis product
/ OpenStack ¶
Projects ¶
This is an API endpoint for managing your openstack projects.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/openstack/projects"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"projects": [
{
"id": "7a7a3bcb46c6450f95c53edb8dcebc7b",
"name": "example-datacenter",
"description": "This is an example project",
"type": "objectstore",
"isLocked": false,
"isBlocked": false,
"domain": "transip",
"region": "AMS"
}
]
}
List all projects
GET/openstack/projects
Returns a list of all OpenStack projects attached to your TransIP account.
- projects
- id
The unique project id, this identifier can be used to modify a project and modify access permissions for users
- name
Name of the project
- description
Describes this project
- type
Type of the project, either ‘objectstore’ or ‘openstack’ defaults to ‘openstack’ when not specified
- isLocked
When an ongoing process blocks the project from being modified, this is set to
true
- isBlocked
Set to
true
when a project has been administratively blocked- domain
The domain in which a project is stored.
- region
The region in which a project is stored.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/openstack/projects/7a7a3bcb46c6450f95c53edb8dcebc7b"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"project": {
"id": "7a7a3bcb46c6450f95c53edb8dcebc7b",
"name": "example-datacenter",
"description": "This is an example project",
"type": "objectstore",
"isLocked": false,
"isBlocked": false,
"domain": "transip",
"region": "AMS"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Project with id '7a7a3bcb46c6450f95c53edb8dcebc7b' not found"
}
List a single project
GET/openstack/projects/{projectId}
Get information on a specific openstack project by id.
- projectId
string
(required) Example: 7a7a3bcb46c6450f95c53edb8dcebc7bprojectId
- project
- id
The unique project id, this identifier can be used to modify a project and modify access permissions for users
- name
Name of the project
- description
Describes this project
- type
Type of the project, either ‘objectstore’ or ‘openstack’ defaults to ‘openstack’ when not specified
- isLocked
When an ongoing process blocks the project from being modified, this is set to
true
- isBlocked
Set to
true
when a project has been administratively blocked- domain
The domain in which a project is stored.
- region
The region in which a project is stored.
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"name": "example-datacenter",
"description": "This is an example project",
"type": "objectstore"
}
' \
"https://api.transip.nl/v6/openstack/projects"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"name": "example-datacenter",
"description": "This is an example project",
"type": "objectstore"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Ordering an OpenStack project from 'transip.co.uk' is not available"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Project with name 'example-name' already exists"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Your TransIP username MUST be provided as a prefix 'example-' in field 'name'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The provided parameter 'type' can only be one of the following value's 'objectstore,openstack'"
}
Create a new project
POST/openstack/projects
Create a new OpenStack project
-
Letters, numbers, and the dash symbol is only allowed in a project name. Other symbols provided will be removed from the project name
-
Your TransIP username must be prefixed in-front of your project name
Warning: Usage statistics of active services in your OpenStack project will reflect in your monthly invoice
- name
Project name
- description
Describes this project
- type
Type of project, can be either objectstore or openstack. Defaults to openstack when not specified
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"project": {
"id": "7a7a3bcb46c6450f95c53edb8dcebc7b",
"name": "example-datacenter",
"description": "This is an example project",
"type": "objectstore",
"isLocked": false,
"isBlocked": false,
"domain": "transip",
"region": "AMS"
}
}
' \
"https://api.transip.nl/v6/openstack/projects/7a7a3bcb46c6450f95c53edb8dcebc7b"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"project": {
"id": "7a7a3bcb46c6450f95c53edb8dcebc7b",
"name": "example-datacenter",
"description": "This is an example project",
"type": "objectstore",
"isLocked": false,
"isBlocked": false,
"domain": "transip",
"region": "AMS"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Project with id '7a7a3bcb46c6450f95c53edb8dcebc7b' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Project with name 'example-name' already exists"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This project is locked, no modification is allowed"
}
Update a project
PUT/openstack/projects/{projectId}
This API calls allows for altering a OpenStack project in several ways outlined below:
-
Set a new project name;
-
Set a new description;
- projectId
string
(required) Example: 7a7a3bcb46c6450f95c53edb8dcebc7bprojectId
- project
- id
The unique project id, this identifier can be used to modify a project and modify access permissions for users
- name
Name of the project
- description
Describes this project
- type
Type of the project, either ‘objectstore’ or ‘openstack’ defaults to ‘openstack’ when not specified
- isLocked
When an ongoing process blocks the project from being modified, this is set to
true
- isBlocked
Set to
true
when a project has been administratively blocked- domain
The domain in which a project is stored.
- region
The region in which a project is stored.
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "handover",
"targetCustomerName": "example2"
}
' \
"https://api.transip.nl/v6/openstack/projects/7a7a3bcb46c6450f95c53edb8dcebc7b"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "handover",
"targetCustomerName": "example2"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Project with id '7a7a3bcb46c6450f95c53edb8dcebc7b' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Target customer with name 'example-name' does not exist"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This project is locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This project is blocked, no modification is allowed"
}
Handover a project
PATCH/openstack/projects/{projectId}
This API call allows you to handover a project to another TransIP Account. This call will initiate the handover process. The actual handover will be done when the target customer accepts the handover.
- projectId
string
(required) Example: 7a7a3bcb46c6450f95c53edb8dcebc7bprojectId
- action
- targetCustomerName
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/openstack/projects/7a7a3bcb46c6450f95c53edb8dcebc7b"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "Project with id '7a7a3bcb46c6450f95c53edb8dcebc7b' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This project is locked, no modification is allowed"
}
Cancel a Project
DELETE/openstack/projects/{projectId}
Cancel an OpenStack project with this endpoint.
Warning: Upon cancellation, all active services will be wiped from your OpenStack project.
- projectId
string
(required) Example: 7a7a3bcb46c6450f95c53edb8dcebc7bprojectId
User assignments ¶
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/openstack/projects/7a7a3bcb46c6450f95c53edb8dcebc7b/users"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"users": [
{
"id": "6322872d9c7e445dbbb49c1f9ca28adc",
"username": "example-support",
"description": "Supporter account",
"email": "support@example.com",
"totpEnabled": true
}
]
}
List users in a project
GET/openstack/projects/{projectId}/users
List all users that have access to a project
- projectId
string
(required) Example: 7a7a3bcb46c6450f95c53edb8dcebc7bprojectId
- users
- id
Identifier
- username
Login name
- description
Description
- email
Email address
- totpEnabled
Whether TOTP (Time-based One-Time Password) is enabled, e.g., true
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"userId": "c150ab41f0d9443f8874e32e725a4cc8"
}
' \
"https://api.transip.nl/v6/openstack/projects/7a7a3bcb46c6450f95c53edb8dcebc7b/users"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"userId": "c150ab41f0d9443f8874e32e725a4cc8"
}
Response headers
Content-Type: application/json
Response body
{
"error": "You are not allowed to modify the main user"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Login access has already been granted for user 'c150ab41"
}
Response headers
Content-Type: application/json
Response body
{
"error": "User with id 'c150ab41f0d9443f8874e32e725a4cc8' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Specified project and user are not located on the same platform"
}
Add a user to a project
POST/openstack/projects/{projectId}/users
This API call will grant a user access to a project
- projectId
string
(required) Example: 7a7a3bcb46c6450f95c53edb8dcebc7bprojectId
- userId
Grant access to the user with this identifier
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/openstack/projects/7a7a3bcb46c6450f95c53edb8dcebc7b/users/c150ab41f0d9443f8874e32e725a4cc8"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "You are not allowed to modify the main user"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Login access has already been revoked for user 'c150ab41f0d9443f8874e32e725a4cc8' in project '7a7a3bcb46c6450f95c53edb8dcebc7b'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "User with id 'c150ab41f0d9443f8874e32e725a4cc8' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Specified project and user are not located on the same platform"
}
Remove a user from project
DELETE/openstack/projects/{projectId}/users/{userId}
This API call will revoke access for a user from a project
- projectId
string
(required) Example: 7a7a3bcb46c6450f95c53edb8dcebc7bprojectId
- userId
string
(required) Example: c150ab41f0d9443f8874e32e725a4cc8userId
AssignableUsers ¶
This is the API endpoint to show all assignable users to a specific project
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/openstack/projects/7a7a3bcb46c6450f95c53edb8dcebc7b/assignable-users"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"assignableUsers": [
{
"id": "6322872d9c7e445dbbb49c1f9ca28adc",
"username": "example-support",
"description": "Supporter account",
"email": "support@example.com",
"totpEnabled": true
}
]
}
List users that can be assigned to a project
GET/openstack/projects/{projectId}/assignable-users
List all users can be assigned to a project
- projectId
string
(required) Example: 7a7a3bcb46c6450f95c53edb8dcebc7bprojectId
- assignableUsers
- id
Identifier
- username
Login name
- description
Description
- email
Email address
- totpEnabled
Whether TOTP (Time-based One-Time Password) is enabled, e.g., true
Users ¶
This is the API endpoint for OpenStack project users.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/openstack/users"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"users": [
{
"id": "6322872d9c7e445dbbb49c1f9ca28adc",
"username": "example-support",
"description": "Supporter account",
"email": "support@example.com",
"totpEnabled": true
}
]
}
List all users
GET/openstack/users
Get information on all your OpenStack users
- users
- id
Identifier
- username
Login name
- description
Description
- email
Email address
- totpEnabled
Whether TOTP (Time-based One-Time Password) is enabled, e.g., true
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/openstack/users/6322872d9c7e445dbbb49c1f9ca28adc"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"user": {
"id": "6322872d9c7e445dbbb49c1f9ca28adc",
"username": "example-support",
"description": "Supporter account",
"email": "support@example.com",
"totpEnabled": true
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "User with id 'c150ab41f0d9443f8874e32e725a4cc8' not found"
}
List a user
GET/openstack/users/{userId}
Get information on a specific openstack user by id.
- userId
string
(required) Example: 6322872d9c7e445dbbb49c1f9ca28adcuserId
- user
- id
Identifier
- username
Login name
- description
Description
- email
Email address
- totpEnabled
Whether TOTP (Time-based One-Time Password) is enabled, e.g., true
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"projectId": "7a7a3bcb46c6450f95c53edb8dcebc7b",
"username": "example-support",
"password": "********",
"description": "Account for supporter",
"email": "supporter@example.com"
}
' \
"https://api.transip.nl/v6/openstack/users"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"projectId": "7a7a3bcb46c6450f95c53edb8dcebc7b",
"username": "example-support",
"password": "********",
"description": "Account for supporter",
"email": "supporter@example.com"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Project with id '7a7a3bcb46c6450f95c53edb8dcebc7b' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "User with username 'example-user' already exists"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Your password must be at least 8 characters long with one lower case, uppercase letter, and one digit."
}
Response headers
Content-Type: application/json
Response body
{
"error": "'user-example.com' is not a valid email address"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Your TransIP username MUST be provided as a prefix 'example-' in field 'username'"
}
Create a new user
POST/openstack/users
This API call creates a new user
-
Letters, numbers, and the dash symbol is only allowed in a username. Other symbols provided will be removed from the username
-
Your TransIP username must be prefixed in-front of your new sub-username
-
Your password must be at least 8 characters long with one lower case, uppercase letter, and one digit.
- projectId
Grant user access to a project
- username
Username
- password
Password
- description
Description
- email
Email address
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"user": {
"id": "6322872d9c7e445dbbb49c1f9ca28adc",
"username": "example-support",
"description": "Supporter account",
"email": "support@example.com",
"totpEnabled": true
}
}
' \
"https://api.transip.nl/v6/openstack/users/6322872d9c7e445dbbb49c1f9ca28adc"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"user": {
"id": "6322872d9c7e445dbbb49c1f9ca28adc",
"username": "example-support",
"description": "Supporter account",
"email": "support@example.com",
"totpEnabled": true
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "You are not allowed to modify the main user"
}
Response headers
Content-Type: application/json
Response body
{
"error": "User with id 'c150ab41f0d9443f8874e32e725a4cc8' not found"
}
Update a user
PUT/openstack/users/{userId}
This API calls allows for altering a OpenStack user in several ways outlined below:
-
Change the user description;
-
Change the user email address;
- userId
string
(required) Example: 6322872d9c7e445dbbb49c1f9ca28adcuserId
- user
- id
Identifier
- username
Login name
- description
Description
- email
Email address
- totpEnabled
Whether TOTP (Time-based One-Time Password) is enabled, e.g., true
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"newPassword": ""
}
' \
"https://api.transip.nl/v6/openstack/users/6322872d9c7e445dbbb49c1f9ca28adc"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"newPassword": ""
}
Response headers
Content-Type: application/json
Response body
{
"error": "User with id 'c150ab41f0d9443f8874e32e725a4cc8' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Your password must be at least 8 characters long with one lower case, uppercase letter, and one digit."
}
Change password for a user
PATCH/openstack/users/{userId}
This API call allows you to change the password of a user
- userId
string
(required) Example: 6322872d9c7e445dbbb49c1f9ca28adcuserId
- newPassword
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/openstack/users/6322872d9c7e445dbbb49c1f9ca28adc"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "You are not allowed to modify the main user"
}
Response headers
Content-Type: application/json
Response body
{
"error": "User with id 'c150ab41f0d9443f8874e32e725a4cc8' not found"
}
Delete a user
DELETE/openstack/users/{userId}
With this method you are able to delete a user.
- userId
string
(required) Example: 6322872d9c7e445dbbb49c1f9ca28adcuserId
Tokens ¶
This is an API endpoint for managing your Object Store S3 Tokens
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/openstack/users/6322872d9c7e445dbbb49c1f9ca28adc/tokens"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"tokens": [
{
"tokenId": "883a4849fc7644dd749f7a300005d9757694382b27b185d5e1fbd54446fc3949",
"userId": "419636c9a72c4c588285920f6cc4bb2c",
"projectId": "139636c9a78c4c588285920f6cc4bb5a",
"accessKey": "humje06ga902xdl3kydifbhvfyr2",
"secretKey": "6d2ty55ec8bsq9cj6d3ll79a46omi",
"managementUrl": "de976d041fa943babaa3af94f9ecbe2b.objectstore.eu"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "project with id '7a7a3bcb46c6450f95c53edb8dcebc7b' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "user with id '069b062afd334b80aabc027130cc40cb' not found"
}
List all S3 tokens for a user
GET/openstack/users/{userId}/tokens
Returns a list of all tokens for a user.
You are able to filter on a specific project by setting the ‘projectId’ query parameter
An example is presented in the URI Parameters section of this call
- userId
string
(required) Example: 6322872d9c7e445dbbb49c1f9ca28adcuserId
- projectId
string
(optional) Example: /openstack/users/{userId}/tokens?projectId=139636c9a78c4c588285920f6cc4bb5a
- tokens
- tokenId
S3 token id
- userId
Token user id
- projectId
Object Store project id
- accessKey
Object Store access key
- secretKey
Object Store secret key
- managementUrl
Object Store management url
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/openstack/users/6322872d9c7e445dbbb49c1f9ca28adc/tokens/0ca19e3q55b22f2b8a9b99f1b093879162a4c50435f4d83be88d081dfc633bbd"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"token": {
"tokenId": "883a4849fc7644dd749f7a300005d9757694382b27b185d5e1fbd54446fc3949",
"userId": "419636c9a72c4c588285920f6cc4bb2c",
"projectId": "139636c9a78c4c588285920f6cc4bb5a",
"accessKey": "humje06ga902xdl3kydifbhvfyr2",
"secretKey": "6d2ty55ec8bsq9cj6d3ll79a46omi",
"managementUrl": "de976d041fa943babaa3af94f9ecbe2b.objectstore.eu"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "token with id '7a7a3bcb46c6450f95c53edb8dcebc7b' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "user with id '069b062afd334b80aabc027130cc40cb' not found"
}
List a S3 token
GET/openstack/users/{userId}/tokens/{tokenId}
Returns a token
- userId
string
(required) Example: 6322872d9c7e445dbbb49c1f9ca28adcuserId
- tokenId
string
(required) Example: 0ca19e3q55b22f2b8a9b99f1b093879162a4c50435f4d83be88d081dfc633bbdtokenId
- token
- tokenId
S3 token id
- userId
Token user id
- projectId
Object Store project id
- accessKey
Object Store access key
- secretKey
Object Store secret key
- managementUrl
Object Store management url
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"projectId": "139636c9a78c4c588285920f6cc4bb5a"
}
' \
"https://api.transip.nl/v6/openstack/users/6322872d9c7e445dbbb49c1f9ca28adc/tokens"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"projectId": "139636c9a78c4c588285920f6cc4bb5a"
}
Response body
{
"token": {
"tokenId": "883a4849fc7644dd749f7a300005d9757694382b27b185d5e1fbd54446fc3949",
"userId": "419636c9a72c4c588285920f6cc4bb2c",
"projectId": "139636c9a78c4c588285920f6cc4bb5a",
"accessKey": "humje06ga902xdl3kydifbhvfyr2",
"secretKey": "6d2ty55ec8bsq9cj6d3ll79a46omi",
"managementUrl": "de976d041fa943babaa3af94f9ecbe2b.objectstore.eu"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "project with id '7a7a3bcb46c6450f95c53edb8dcebc7b' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "user with id '069b062afd334b80aabc027130cc40cb' not found"
}
Create a new S3 token
POST/openstack/users/{userId}/tokens
This API call creates a new S3 token
- userId
string
(required) Example: 6322872d9c7e445dbbb49c1f9ca28adcuserId
- projectId
specify which projectId this token will be made for
- token
- tokenId
S3 token id
- userId
Token user id
- projectId
Object Store project id
- accessKey
Object Store access key
- secretKey
Object Store secret key
- managementUrl
Object Store management url
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"tokenId": "0ca19e3q55b22f2b8a9b99f1b093879162a4c50435f4d83be88d081dfc633bbd"
}
' \
"https://api.transip.nl/v6/openstack/users/6322872d9c7e445dbbb49c1f9ca28adc/tokens/0ca19e3q55b22f2b8a9b99f1b093879162a4c50435f4d83be88d081dfc633bbd"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"tokenId": "0ca19e3q55b22f2b8a9b99f1b093879162a4c50435f4d83be88d081dfc633bbd"
}
Response headers
Content-Type: application/json
Response body
{
"error": "token with id '7a7a3bcb46c6450f95c53edb8dcebc7b' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "user with id '069b062afd334b80aabc027130cc40cb' not found"
}
Delete a S3 token
DELETE/openstack/users/{userId}/tokens/{tokenId}
With this method you are able to delete a S3 token
- userId
string
(required) Example: 6322872d9c7e445dbbb49c1f9ca28adcuserId
- tokenId
string
(required) Example: 0ca19e3q55b22f2b8a9b99f1b093879162a4c50435f4d83be88d081dfc633bbdtokenId
- tokenId
specify the tokenId for the token that should get deleted
Totp ¶
This API endpoint allows management of totp (time-based one-time password) for Openstack users
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"userId": "0c150ab41f0d9443f8874e32e725a4cc8"
}
' \
"https://api.transip.nl/v6/openstack/users/6322872d9c7e445dbbb49c1f9ca28adc/totp"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"userId": "0c150ab41f0d9443f8874e32e725a4cc8"
}
Response body
{
"totp": {
"secretKey": "883a4849fc7644dd749f7a300005d9757694382b27b185d5e1fbd54446fc3949"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "user id '7a7a3bcb46c6450f95c53edb8dcebc7b' not found"
}
Enable totp for a user
POST/openstack/users/{userId}/totp
This API call enables totp.
- userId
string
(required) Example: 6322872d9c7e445dbbb49c1f9ca28adcuserId
- userId
Specify the userId for which to enable totp
- totp
- secretKey
Secret key which can be used to create a QR code.
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"userId": "0c150ab41f0d9443f8874e32e725a4cc8"
}
' \
"https://api.transip.nl/v6/openstack/users/6322872d9c7e445dbbb49c1f9ca28adc/totp"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"userId": "0c150ab41f0d9443f8874e32e725a4cc8"
}
Response headers
Content-Type: application/json
Response body
{
"error": "user with id '069b062afd334b80aabc027130cc40cb' not found"
}
Disable totp for a user
DELETE/openstack/users/{userId}/totp
This API call disables, an existing, totp.
- userId
string
(required) Example: 6322872d9c7e445dbbb49c1f9ca28adcuserId
- userId
Specify the userId for which to disable totp
/ SSL Certificates ¶
SSL Certificates ¶
This is the API endpoint for SSL certificates.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/ssl-certificates"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"certificates": [
{
"certificateId": 12358,
"commonName": "example.com",
"expirationDate": "2019-10-24 12:59:59",
"status": "active",
"canReissue": "true"
}
]
}
List all SSL certificates
GET/ssl-certificates
Retrieves a list of all SSL certificates in the customer account.
- certificates
- certificateId
The id of the certificate, can be used to retrieve additional info
- commonName
The domain name that the SSL certificate is added to. Start with ‘*.’ when the certificate is a wildcard.
- expirationDate
Expiration date
- status
The current status, either ‘active’, ‘inactive’, ‘busy’ or ‘expired’
Active: Certificate is not expired and can be used
Inactive: Certificate is being processed
Busy: Order is in progress
Expired: Certificate is malformed or gone.- canReissue
Whether the certificate can be reissued
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/ssl-certificates/12358"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"certificate": {
"certificateId": 12358,
"commonName": "example.com",
"expirationDate": "2019-10-24 12:59:59",
"status": "active",
"canReissue": "true"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Certificate with id '1337' not found"
}
Get SSL certificate by id
GET/ssl-certificates/{certificateId}
Retrieves a single SSL certificate by id.
- certificateId
number
(required) Example: 12358The id of the SSL certificate
- certificate
- certificateId
The id of the certificate, can be used to retrieve additional info
- commonName
The domain name that the SSL certificate is added to. Start with ‘*.’ when the certificate is a wildcard.
- expirationDate
Expiration date
- status
The current status, either ‘active’, ‘inactive’, ‘busy’ or ‘expired’
Active: Certificate is not expired and can be used
Inactive: Certificate is being processed
Busy: Order is in progress
Expired: Certificate is malformed or gone.- canReissue
Whether the certificate can be reissued
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"productName": "ssl-certificate-comodo-ev",
"commonName": "*.example.com",
"approverFirstName": "John",
"approverLastName": "Doe",
"approverEmail": "example@example.com",
"approverPhone": "+31 715241919",
"company": "Example B.V.",
"department": "Example",
"kvk": "83057825",
"address": "Easy street 12",
"city": "Leiden",
"zipCode": "1337 XD",
"countryCode": "nl"
}
' \
"https://api.transip.nl/v6/ssl-certificates"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"productName": "ssl-certificate-comodo-ev",
"commonName": "*.example.com",
"approverFirstName": "John",
"approverLastName": "Doe",
"approverEmail": "example@example.com",
"approverPhone": "+31 715241919",
"company": "Example B.V.",
"department": "Example",
"kvk": "83057825",
"address": "Easy street 12",
"city": "Leiden",
"zipCode": "1337 XD",
"countryCode": "nl"
}
Response headers
Content-Type: application/json
Response body
{
"error": "No valid payment information found. Please add your payment information through the Controlpanel on the website."
}
Response headers
Content-Type: application/json
Response body
{
"error": "SSL Certificate product 'ssl-certificate-comodo-unknown' is not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Invalid common name: 'ex@mple.example.com'"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Provided email address is invalid"
}
Order a SSL certificate
POST/ssl-certificates
Order a new SSL certificate for a domain
When ordering a EV certificate make sure to provide the same information as registered with the KVK.
Warning: This API call will create an invoice!
- productName
Name of the product
- commonName
The common name for which to order a certificate
- approverFirstName
The first name of the approver
- approverLastName
The last name of the approver
- approverEmail
The email address of the approver
- approverPhone
The phone number of the approver
- company
The company name
- department
The department name
- kvk
The KVK number of the company
- address
The address
- city
The city
- zipCode
The zip code
- countryCode
The ISO 3166-1 country code
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "reissue",
"approverFirstName": "John",
"approverLastName": "Doe",
"approverEmail": "example@example.com",
"approverPhone": "+31 715241919",
"address": "Easy street 12",
"zipCode": "1337 XD",
"countryCode": "nl"
}
' \
"https://api.transip.nl/v6/ssl-certificates/12358"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "reissue",
"approverFirstName": "John",
"approverLastName": "Doe",
"approverEmail": "example@example.com",
"approverPhone": "+31 715241919",
"address": "Easy street 12",
"zipCode": "1337 XD",
"countryCode": "nl"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Certificate with id '1337' not found"
}
Reissue a certificate
PATCH/ssl-certificates/{certificateId}
This API call allows you to reissue a SslCertificate, given that it’s currently reissue-able.
To reissue a Certificate, send a PATCH request with the action
attribute set to reissue
.
Optionally extra certificate data can be provided to overwrite the existing information. The approverPhone
, address
, zipCode
and countryCode
are only used for EV certificates.
Note: Let’s Encrypt certificates cannot be reissued
- certificateId
number
(required) Example: 12358The id of the SSL certificate
- action
- approverFirstName
The first name of the approver
- approverLastName
The last name of the approver
- approverEmail
The email address of the approver
- approverPhone
The phone number of the approver
- address
The address
- zipCode
The zip code
- countryCode
The ISO 3166-1 country code
Details ¶
Details for Certificate
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/ssl-certificates/12358/details"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"certificateDetails": [
{
"company": "Company B.V.",
"department": "IT",
"postbox": "springfieldroad 123",
"address": "springfieldroad 123",
"zipcode": "2345 BB",
"city": "The Hague",
"state": "Noord-Holland",
"countryCode": "NL",
"firstName": "Johnny",
"lastName": "Sins",
"email": "test@example.com",
"phoneNumber": "+316 12345678",
"expirationDate": "1970-01-01 00:00:00",
"name": "/CN=*.example.com",
"hash": "12abc4567",
"version": "2",
"serialNumber": "0x03DEDF0EBA8C8BE53B082CB002579BCC134E",
"serialNumberHex": "03DEDF0EBA8C8BE53B082CB002579BCC134E",
"validFrom": "211012092403Z",
"validTo": "220110092402Z",
"validFromTimestamp": "1647443313",
"validToTimestamp": "1647443313",
"signatureTypeSN": "RSA-SHA256",
"signatureTypeLN": "sha256WithRSAEncryption",
"signatureTypeNID": "123",
"subjectCommonName": "*.example.com",
"issuerCountry": "US",
"issuerOrganization": "Let's Encrypt",
"issuerCommonName": "R3",
"keyUsage": "Digital Signature, Key Encipherment",
"basicConstraints": "CA:FALSE",
"enhancedKeyUsage": "TLS Web Server Authentication, TLS Web Client Authentication",
"subjectKeyIdentifier": "A1:B2:C3:D4:E5:F6:G7:H8:I9:J1:K2:L3:M4:N5:O6:P7:Q8:R9:S0:T1",
"authorityKeyIdentifier": "keyid:A1:B2:C3:D4:E5:F6:G7:H8:I9:J1:K2:L3:M4:N5:O6:P7:Q8:R9:S0:T1",
"authorityInformationAccess": "OCSP - URI:http://r3.o.lencr.org CA Issuers - URI:http://r3.i.lencr.org/",
"subjectAlternativeName": "DNS:*.example.com, DNS:example.com",
"certificatePolicies": "Policy: 1.23.456.7.8.9 Policy: 1.2.3.4.5.6.12345.3.2.1 CPS: http://cps.letsencrypt.org",
"signedCertificateTimestamp": "Signed Certificate Timestamp: Version : v1 (0x0) Log ID..."
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Ok"
}
Details for SSL certificate by id
GET/ssl-certificates/{certificateId}/details
Get all details for SSL certificate
- certificateId
number
(required) Example: 12358The id of the SSL certificate
- certificateDetails
- company
Company affiliation of certificate holder
- department
Internal organization department/division name of certificate holder
- postbox
Post office box address for certificate holder
- address
Address for certificate holder
- zipcode
Zipcode for certificate holder
- city
City for certificate holder
- state
State for certificate holder
- countryCode
Country code for certificate holder
- firstName
First name for certificate holder
- lastName
Last name for certificate holder
- email
Email for certificate holder
- phoneNumber
Phone number for certificate holder
- expirationDate
Expiration date of certificate
- name
Name of certificate
- hash
Hash of certificate
- version
Version of certificate
- serialNumber
Serial number of certificate
- serialNumberHex
Serial hex number of certificate
- validFrom
UTC timestamp start validity of certificate
- validTo
UTC timestamp end validity of certificate
- validFromTimestamp
unix timestamp start validity of certificate
- validToTimestamp
unix timestamp end validity of certificate
- signatureTypeSN
Signature short name of certificate
- signatureTypeLN
Signature long name of certificate
- signatureTypeNID
NID of certificate
- subjectCommonName
Subject common name of certificate
- issuerCountry
Country of issuer
- issuerOrganization
Organization of issuer
- issuerCommonName
Common name of issuer
- keyUsage
Key usage of certificate extension
- basicConstraints
Basic constraints of certificate extension
- enhancedKeyUsage
Enhanced key usage of certificate extension
- subjectKeyIdentifier
Subject key identifier of certificate extension
- authorityKeyIdentifier
Authority key identifier of certificate extension
- authorityInformationAccess
Authority information access of certificate extension
- subjectAlternativeName
Subject alternative name of certificate extension
- certificatePolicies
Certificate policies of certificate extension
- signedCertificateTimestamp
Certificate timestamp of certificate extension
Download ¶
Download certificate
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"passphrase": "secretpassphrase"
}
' \
"https://api.transip.nl/v6/ssl-certificates/12358/download"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"passphrase": "secretpassphrase"
}
Response body
{
"certificateData": {
"caBundleCrt": "",
"certificateCrt": "",
"certificateP7b": "",
"certificateKey": ""
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Certificate with id '1337' not found"
}
Download a SSL certificate by id
POST/ssl-certificates/{certificateId}/download
Provides the SSL certificate to install on a server
When a certificate was configured using a custom passphrase you can optionally provide it to receive a decrypted certificate in return. If no passphrase is provided the encrypted certificate key will be returned
TransIP managed certificates will always be returned decrypted.
- certificateId
number
(required) Example: 12358The id of the SSL certificate
- passphrase
Provide a passphrase to receive a decrypted certificate key
- certificateData
- caBundleCrt
The certificates ca bundle
- certificateCrt
The certificates crt
- certificateP7b
The certificates P7B
- certificateKey
The certificates private key
Install ¶
Install certificate
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"domainName": "domainName",
"passphrase": "secretpassphrase"
}
' \
"https://api.transip.nl/v6/ssl-certificates/12358/install"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"domainName": "domainName",
"passphrase": "secretpassphrase"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Certificate with id '1337' not found"
}
Install an ssl certificate
PATCH/ssl-certificates/{certificateId}/install
Install the selected ssl certificate on the selected web hosting account.
If a certificate was configured using a custom passphrase, you must provide it in order to install the certificate.
(This is not for LetsEncrypt Certificates!)
- certificateId
number
(required) Example: 12358The id of the SSL certificate
- domainName
Provide a domain name to install the certificate on
- passphrase
Provide a passphrase to receive a decrypted certificate key
Uninstall ¶
Uninstall certificate
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"domainName": "domainName"
}
' \
"https://api.transip.nl/v6/ssl-certificates/12358/uninstall"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"domainName": "domainName"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Certificate with id '1337' not found"
}
Uninstall an ssl certificate
DELETE/ssl-certificates/{certificateId}/uninstall
Uninstall the selected ssl certificate from the selected web hosting account.
- certificateId
number
(required) Example: 12358The id of the SSL certificate
- domainName
Provide a domain name to install the certificate on
/ Colocations ¶
Colocations ¶
This is the API endpoint for colocation.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/colocations"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"colocations": [
{
"name": "example2",
"ipRanges": [
"2a01:7c8:c038:6::/64"
]
}
]
}
List all colocations
GET/colocations
Gets a list of colocations currently registered in your account. For every colocation service in your account, the corresponding name and IP range(s) are returned.
- colocations
- name
Colocation name
- ipRanges
List of IP ranges
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/colocations/example2"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"colocation": {
"name": "example2",
"ipRanges": [
"2a01:7c8:c038:6::/64"
]
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Colocation with name 'lala' not found"
}
Get colocation
GET/colocations/{colocationName}
Get a information about a specific colocation.
- colocationName
string
(required) Example: example2Colocation name
- colocation
- name
Colocation name
- ipRanges
List of IP ranges
IP addresses ¶
This is the API endpoint for colocation IP address services.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/colocations/example2/ip-addresses"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"ipAddresses": [
{
"address": "37.97.254.6",
"subnetMask": "255.255.255.0",
"gateway": "37.97.254.1",
"dnsResolvers": [
"195.8.195.8",
"195.135.195.135"
],
"reverseDns": "example.com"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Colocation with name 'lala' not found"
}
List IP addresses for a colocation
GET/colocations/{colocationName}/ip-addresses
List IP addresses based on the colocation they’re assigned to. The address itself, its subnet mask, gateway and DNS resolvers in that range.
- colocationName
string
(required) Example: example2Colocation name
- ipAddresses
- address
The IP address
- subnetMask
Subnet mask
- gateway
Gateway
- dnsResolvers
The DNS resolvers you can use
- reverseDns
Reverse DNS, also known as the PTR record
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/colocations/example2/ip-addresses/149.210.215.249"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"ipAddress": {
"address": "37.97.254.6",
"subnetMask": "255.255.255.0",
"gateway": "37.97.254.1",
"dnsResolvers": [
"195.8.195.8",
"195.135.195.135"
],
"reverseDns": "example.com"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "IP address '8.8.8.8' not found"
}
Get IP addresses for a colocation
GET/colocations/{colocationName}/ip-addresses/{ipAddress}
Get IP addresses information for a specific colocation and IP address.
The address itself, its subnet mask, gateway and DNS resolvers in that range.
- colocationName
string
(required) Example: example2Colocation name
- ipAddress
string
(required) Example: 149.210.215.249Colocation IP address
- ipAddress
- address
The IP address
- subnetMask
Subnet mask
- gateway
Gateway
- dnsResolvers
The DNS resolvers you can use
- reverseDns
Reverse DNS, also known as the PTR record
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"ipAddress": "2a01:7c8:3:1337::6",
"reverseDns": "example.com"
}
' \
"https://api.transip.nl/v6/colocations/example2/ip-addresses"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"ipAddress": "2a01:7c8:3:1337::6",
"reverseDns": "example.com"
}
Response headers
Content-Type: application/json
Response body
{
"error": "IP address '149.210.215.249' does not belong to a range this user can modify"
}
Response headers
Content-Type: application/json
Response body
{
"error": "IP address '149.210.215.249' already exists"
}
Create a new IP address for a colocation
POST/colocations/{colocationName}/ip-addresses
Create an IP address for a colocation by specifying the colocation name the IP address should be assigned to. Note the IP address should be in a range you own.
Currently, new IP addresses have to be requested manually through the support system.
Optionally, you can also set the reverse DNS by specifying the reverseDns
attribute.
- colocationName
string
(required) Example: example2Colocation name
- ipAddress
The IP address to register to the colocation
- reverseDns
Reverse DNS, also known as the PTR record
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"ipAddress": {
"address": "37.97.254.6",
"subnetMask": "255.255.255.0",
"gateway": "37.97.254.1",
"dnsResolvers": [
"195.8.195.8",
"195.135.195.135"
],
"reverseDns": "example.com"
}
}
' \
"https://api.transip.nl/v6/colocations/example2/ip-addresses/149.210.215.249"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"ipAddress": {
"address": "37.97.254.6",
"subnetMask": "255.255.255.0",
"gateway": "37.97.254.1",
"dnsResolvers": [
"195.8.195.8",
"195.135.195.135"
],
"reverseDns": "example.com"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "IP address '149.210.215.249' does not belong to a range this user can modify"
}
Response headers
Content-Type: application/json
Response body
{
"error": "IP address '8.8.8.8' not found"
}
Set reverse DNS for an IP address
PUT/colocations/{colocationName}/ip-addresses/{ipAddress}
Sets a reverse DNS name for an IP address.
Upon adding a new IP address for a colocation, you’re able to set the reverse DNS instantly along with the API call.
- colocationName
string
(required) Example: example2Colocation name
- ipAddress
string
(required) Example: 149.210.215.249Colocation IP address
- ipAddress
- address
The IP address
- subnetMask
Subnet mask
- gateway
Gateway
- dnsResolvers
The DNS resolvers you can use
- reverseDns
Reverse DNS, also known as the PTR record
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/colocations/example2/ip-addresses/149.210.215.249"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "IP address '149.210.215.249' does not belong to a range this user can modify"
}
Response headers
Content-Type: application/json
Response body
{
"error": "IP address '8.8.8.8' not found"
}
Delete an IP address
DELETE/colocations/{colocationName}/ip-addresses/{ipAddress}
Delete an IP addresses for a colocation. The IP address will be removed.
- colocationName
string
(required) Example: example2Colocation name
- ipAddress
string
(required) Example: 149.210.215.249Colocation IP address
RemoteHands ¶
This is the API endpoint to create remote hands requests.
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"remoteHands": {
"coloName": "example2",
"contactName": "Herman Kaakdorst",
"phoneNumber": "+31 612345678",
"expectedDuration": 15,
"instructions": "Reboot server with label Loadbalancer0"
}
}
' \
"https://api.transip.nl/v6/colocations/example2/remote-hands"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"remoteHands": {
"coloName": "example2",
"contactName": "Herman Kaakdorst",
"phoneNumber": "+31 612345678",
"expectedDuration": 15,
"instructions": "Reboot server with label Loadbalancer0"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Colocation with name 'lala' not found"
}
Create a Remotehands request
POST/colocations/{colocationName}/remote-hands
Send a request to the datacenter engineer to perform simple task on your server, e.g. a powercycle.
- colocationName
string
(required) Example: example2Colocation name
- remoteHands
- coloName
Name of the colocation contract
- contactName
Name of the person that created the remote hands request
- phoneNumber
Phonenumber to contact in case of questions regarding the remotehands request
- expectedDuration
Expected duration in minutes
- instructions
The instructions for the datacenter engineer to perform
AccessRequest ¶
This is the API endpoint to create datacenter access requests.
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"accessRequest": {
"dateTime": "2022-04-10 08:30:00",
"duration": 30,
"visitorNames": [
"Charly",
"John"
],
"phoneNumber": "+31612345678"
}
}
' \
"https://api.transip.nl/v6/colocations/example2/access-request"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"accessRequest": {
"dateTime": "2022-04-10 08:30:00",
"duration": 30,
"visitorNames": [
"Charly",
"John"
],
"phoneNumber": "+31612345678"
}
}
Response body
{
"dataCenterVisitors": [
{
"name": "Charly",
"reservationNumber": 2000003003,
"accessCode": "wskxqqez",
"hasBeenRegisteredBefore": false
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Permission denied"
}
Response headers
Content-Type: application/json
Response body
{
"error": "No customer found for identifier [1122334455]"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Colocation with name 'colocation-name-example' not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "The colocation has no rackspace assigned"
}
Response headers
Content-Type: application/json
Response body
{
"error": "This is not a valid date: '2022-XX-04 10:XX:10', please try formatting like YYYY-MM-DD hh:mm:ss"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Duration must be a positive integer"
}
Response headers
Content-Type: application/json
Response body
{
"error": "There must be at least one visitor per request"
}
Response headers
Content-Type: application/json
Response body
{
"error": "There is a maximum of 20 visitors per request"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Invalid phone number format, please try formatting it like +31612345678"
}
Create an access request
POST/colocations/{colocationName}/access-request
Send a request for some visitors to access the datacenter at some date and time for some specific duration.
- colocationName
string
(required) Example: example2Colocation name
- accessRequest
- dateTime
The datetime of the wanted datacenter access, in YYYY-MM-DD hh:mm:ss format
- duration
The expected duration of the visit, in minutes
- visitorNames
list of visitor names for this datacenter visit, must be at least 1 and at most 20
- phoneNumber
If an SMS with access codes needs to be sent, set the phone number of the receiving phone here
- dataCenterVisitors
- name
The name of the visitor
- reservationNumber
The reservation number of the visitor
- accessCode
The accesscode of the visitor
- hasBeenRegisteredBefore
True if this visitor been registered before at the datacenter. If true, does not need the accesscode
/ Email ¶
MailAddons ¶
This is the API endpoint for Mail Addons
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/email/example.com/mail-addons"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"addons": [
{
"id": 282154,
"diskSpace": 1024,
"mailboxes": 5,
"linkedMailBox": "hello@example.com",
"canBeLinked": false
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Ok"
}
List all mail addons
GET/email/{domain}/mail-addons
List all Mail Addons for an domain
- domain
string
(required) Example: example.comdomainName
- addons
- id
Identifier for the EmailAddon
- diskSpace
The amount of extra disk space this addon adds
- mailboxes
The amount of extra mailboxes this addon adds
- linkedMailBox
The mailbox that this addon is linked to
- canBeLinked
Indication of whether this addon can be linked, any addons that do not add extra disk space cannot be linked.
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "linkmailbox",
"addonId": 7,
"mailbox": "hello@example.com"
}
' \
"https://api.transip.nl/v6/email/example.com/mail-addons"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "linkmailbox",
"addonId": 7,
"mailbox": "hello@example.com"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Accepted, addon will be linked"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mailbox not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Addon not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mailbox locked, Modification not allowed"
}
Link email addon to mailbox
PATCH/email/{domain}/mail-addons
Link an Addon to a Mailbox
- domain
string
(required) Example: example.comdomainName
- action
The action to perform, to link an addon provide “linkmailbox”
- addonId
The addon to link to the mailbox
- mailbox
The mailbox to link this addon to, identified by the email address
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "unlinkmailbox",
"addonId": 7,
"mailbox": "hello@example.com"
}
' \
"https://api.transip.nl/v6/email/example.com/mail-addons"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"action": "unlinkmailbox",
"addonId": 7,
"mailbox": "hello@example.com"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Accepted, addon will be unlinked"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Addon not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mailbox locked, Modification not allowed"
}
Unlink email addon to mailbox
PATCH/email/{domain}/mail-addons
Unlink an Addon to a Mailbox
- domain
string
(required) Example: example.comdomainName
- action
The action to perform, to unlink an addon provide “unlinkmailbox”
- addonId
The addon to unlink from the mailbox
- mailbox
The mailbox to unlink this addon from, identified by the email address
Mail Forwards ¶
This is the API endpoint for Mail Forwards.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/email/example.com/mail-forwards"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"forwards": [
{
"id": "20143",
"localPart": "forwardme",
"domain": "example.com",
"status": "created",
"forwardTo": "john.doe@example.com"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mail forwards not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Ok"
}
List all mail forwards
GET/email/{domain}/mail-forwards
List all mail forwards for an account
- domain
string
(required) Example: example.comdomainName
- forwards
- id
Unique identifier of the MailForward
- localPart
local part of the mailbox for the forward
- domain
The domain to forward (will be combined with the alias to make the full email address).
- status
Status of the forward.
- forwardTo
The email address to forward to.
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"localPart": "localPart",
"forwardTo": "forwardTo"
}
' \
"https://api.transip.nl/v6/email/example.com/mail-forwards"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"localPart": "localPart",
"forwardTo": "forwardTo"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Account not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mail forward already exists"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mail forward limit reached, not permitted"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Created"
}
Create mail forward
POST/email/{domain}/mail-forwards
Schedule creation of a mail forward
Creation of a mail forward will be linked to the provided account based on the domain.
Forwards are always linked to the domain
- domain
string
(required) Example: example.comdomainName
- localPart
the label for the email address (will be the part before left of AT). If an empty string is provided, the forward will catch all mail for the domain.
- forwardTo
The target email to forward to
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/email/example.com/mail-forwards/7"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "Mail forward not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mail forward locked, modification not allowed"
}
Delete mail forward
DELETE/email/{domain}/mail-forwards/{forwardId}
Schedule deletion of a mail forward
Deletion of a mail forward will be scheduled
Forwards that are being modified cannot be deleted.
- domain
string
(required) Example: example.comdomainName
- forwardId
string
(required) Example: 7the ID of the forward being worked on
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/email/example.com/mail-forwards/7"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"forward": {
"id": "20143",
"localPart": "forwardme",
"domain": "example.com",
"status": "created",
"forwardTo": "john.doe@example.com"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mail forward not found"
}
Get mail forward
GET/email/{domain}/mail-forwards/{forwardId}
Read a mail forward’s details
Reading of a forward
- domain
string
(required) Example: example.comdomainName
- forwardId
string
(required) Example: 7the ID of the forward being worked on
- forward
- id
Unique identifier of the MailForward
- localPart
local part of the mailbox for the forward
- domain
The domain to forward (will be combined with the alias to make the full email address).
- status
Status of the forward.
- forwardTo
The email address to forward to.
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"localPart": "localPart",
"forwardTo": "forwardTo"
}
' \
"https://api.transip.nl/v6/email/example.com/mail-forwards/7"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"localPart": "localPart",
"forwardTo": "forwardTo"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mail forward not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mail forward locked, modification not allowed"
}
Update mail forward
PUT/email/{domain}/mail-forwards/{forwardId}
Update a mail forward’s details
Update of a mail forward will be scheduled. You may update only localPart, or forwardTo.
Forwards that are being modified cannot be updated.
- domain
string
(required) Example: example.comdomainName
- forwardId
string
(required) Example: 7the ID of the forward being worked on
- localPart
the label for the localPart (will be the part before left of AT). If an empty string is provided, the forward will catch all mail for the domain.
- forwardTo
The target email to forward to
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"localPart": "localPart",
"forwardTo": "forwardTo"
}
' \
"https://api.transip.nl/v6/email/example.com/mail-forwards/7"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"localPart": "localPart",
"forwardTo": "forwardTo"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mail forward not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mail forward Locked, modification not allowed"
}
Update mail forward field
PATCH/email/{domain}/mail-forwards/{forwardId}
Update 1 (or more) of a mail forward’s Details
Update of a mail forward will be scheduled. You may update only localPart, or forwardTo.
Forwards that are being modified cannot be updated.
- domain
string
(required) Example: example.comdomainName
- forwardId
string
(required) Example: 7the ID of the forward being worked on
- localPart
the label for the localPart (will be the part before left of AT)
- forwardTo
The target email to forward to
MailLists ¶
This is the API endpoint for mail lists.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/email/example.com/mail-lists"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"mailLists": [
{
"id": "20143",
"name": "myname",
"emailAddress": "list@example.com",
"entries": [
"email1@example.com",
"email2@example.com"
]
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mail lists not found"
}
List all Mail lists
GET/email/{domain}/mail-lists
List all mail lists for an account
- domain
string
(required) Example: example.comdomainName
- mailLists
- id
Unique identifier of the MailList
- name
Name of the MailList
- emailAddress
The emailAddress of the list.
- entries
The Email Addresses in the list.
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"name": "name",
"emailAddress": "emailAddress",
"entries": [
"entries"
]
}
' \
"https://api.transip.nl/v6/email/example.com/mail-lists"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"name": "name",
"emailAddress": "emailAddress",
"entries": [
"entries"
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Account not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mail list already exists."
}
Create Mail list
POST/email/{domain}/mail-lists
Schedule Creation of a Mail list
Creation of a mail list will be linked to the provided account based on the domainName.
Lists are always linked to the domainName
- domain
string
(required) Example: example.comdomainName
- name
the name of the list being created
- emailAddress
The email address of the list itself
- entries
The email addresses in the mail list
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/email/example.com/mail-lists/7"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "Mail list not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mail list Locked, modification not allowed"
}
Delete Mail List
DELETE/email/{domain}/mail-lists/{listId}
Schedule Deletion of a mail list
Deletion of a mail list will be scheduled
Lists that are being modified cannot be deleted.
- domain
string
(required) Example: example.comdomainName
- listId
string
(required) Example: 7the ID of the list being worked on
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/email/example.com/mail-lists/7"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"mailList": {
"id": "20143",
"name": "myname",
"emailAddress": "list@example.com",
"entries": [
"email1@example.com",
"email2@example.com"
]
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mail list not found"
}
Get Mail list
GET/email/{domain}/mail-lists/{listId}
Read a Mail list’s Details
Reading of a list
- domain
string
(required) Example: example.comdomainName
- listId
string
(required) Example: 7the ID of the list being worked on
- mailList
- id
Unique identifier of the MailList
- name
Name of the MailList
- emailAddress
The emailAddress of the list.
- entries
The Email Addresses in the list.
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"mailList": {
"id": "20143",
"name": "myname",
"emailAddress": "list@example.com",
"entries": [
"email1@example.com",
"email2@example.com"
]
}
}
' \
"https://api.transip.nl/v6/email/example.com/mail-lists/7"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"mailList": {
"id": "20143",
"name": "myname",
"emailAddress": "list@example.com",
"entries": [
"email1@example.com",
"email2@example.com"
]
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mail list not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mail list Locked, modification not allowed"
}
Update Mail list
PUT/email/{domain}/mail-lists/{listId}
Update a mail list
Update of a mail list will be scheduled.
Only changes to the name and entry will be processed.
Lists that are being modified cannot be updated.
- domain
string
(required) Example: example.comdomainName
- listId
string
(required) Example: 7the ID of the list being worked on
- mailList
- id
Unique identifier of the MailList
- name
Name of the MailList
- emailAddress
The emailAddress of the list.
- entries
The Email Addresses in the list.
Mailboxes ¶
This is the API endpoint for Mailboxes.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/email/example.com/mailboxes"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"Mailboxes": [
{
"identifier": "test@example.com",
"localPart": "test",
"domain": "example.com",
"forwardTo": "test@example.com",
"availableDiskSpace": "100.0",
"usedDiskSpace": "100.0",
"status": "creating",
"isLocked": "true",
"imapServer": "imap.example.com",
"imapPort": "123",
"smtpServer": "smtp.example.com",
"smtpPort": "123",
"pop3Server": "pop3.example.com",
"pop3Port": "123",
"webmailUrl": "https://transip.email/"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mailboxes not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Ok"
}
List all Mailboxes
GET/email/{domain}/mailboxes
List all mailboxes for an account
- domain
string
(required) Example: example.comdomainName
- Mailboxes
- identifier
Identifier for the mailbox
- localPart
Local part of the mailbox
- domain
Domain of the mailbox
- forwardTo
Email address to also forward the email to
- availableDiskSpace
Disk space that is available for the mailbox
- usedDiskSpace
Disk space that is used for the mailbox
- status
Current status of the mailbox
- isLocked
Shows whether a mailbox is locked
- imapServer
IMAP server for mailbox
- imapPort
IMAP port for IMAP server
- smtpServer
SMTP server for mailbox
- smtpPort
SMTP port for SMTP server
- pop3Server
POP3 server for mailbox
- pop3Port
POP3 port for IMAP server
- webmailUrl
Webmail url
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/email/example.com/mailboxes/test@example.com"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"Mailbox": {
"identifier": "test@example.com",
"localPart": "test",
"domain": "example.com",
"forwardTo": "test@example.com",
"availableDiskSpace": "100.0",
"usedDiskSpace": "100.0",
"status": "creating",
"isLocked": "true",
"imapServer": "imap.example.com",
"imapPort": "123",
"smtpServer": "smtp.example.com",
"smtpPort": "123",
"pop3Server": "pop3.example.com",
"pop3Port": "123",
"webmailUrl": "https://transip.email/"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mailbox not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Created"
}
Get Mailbox
GET/email/{domain}/mailboxes/{identifier}
Read a Mailbox’s Details
Reading of a mailbox
- domain
string
(required) Example: example.comdomainName
- identifier
string
(required) Example: test@example.comthe email address of the mailbox being worked on
- Mailbox
- identifier
Identifier for the mailbox
- localPart
Local part of the mailbox
- domain
Domain of the mailbox
- forwardTo
Email address to also forward the email to
- availableDiskSpace
Disk space that is available for the mailbox
- usedDiskSpace
Disk space that is used for the mailbox
- status
Current status of the mailbox
- isLocked
Shows whether a mailbox is locked
- imapServer
IMAP server for mailbox
- imapPort
IMAP port for IMAP server
- smtpServer
SMTP server for mailbox
- smtpPort
SMTP port for SMTP server
- pop3Server
POP3 server for mailbox
- pop3Port
POP3 port for IMAP server
- webmailUrl
Webmail url
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"maxDiskUsage": 0,
"password": "password",
"forwardTo": "forwardTo"
}
' \
"https://api.transip.nl/v6/email/example.com/mailboxes/test@example.com"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"maxDiskUsage": 0,
"password": "password",
"forwardTo": "forwardTo"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mailbox not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mailbox Locked, Modification not allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Created"
}
Update Mailbox
PUT/email/{domain}/mailboxes/{identifier}
Update a Mailbox’s Details
Update of a Mailbox will be scheduled. You may update only maxDiskUsage, password, or forwardTo.
Mailboxes that are being modified cannot be updated.
- domain
string
(required) Example: example.comdomainName
- identifier
string
(required) Example: test@example.comthe email address of the mailbox being worked on
- maxDiskUsage
Size of the mailbox in MB
- password
The password for the mailbox
- forwardTo
The target email to forward to
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"localPart": "localPart",
"password": "password",
"maxDiskUsage": 0,
"forwardTo": "forwardTo"
}
' \
"https://api.transip.nl/v6/email/example.com/mailboxes"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"localPart": "localPart",
"password": "password",
"maxDiskUsage": 0,
"forwardTo": "forwardTo"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Account not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Created"
}
Create Mailbox
POST/email/{domain}/mailboxes
Schedule Creation of a Mailbox
Creation of a Mailbox will be linked to the provided account based on the domain.
Mailboxes are always linked to the domain
- domain
string
(required) Example: example.comdomainName
- localPart
the label for the local part (will be the part before left of AT)
- password
The password for the new mailbox
- maxDiskUsage
Size of the mailbox in MB
- forwardTo
The target email to forward to
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"maxDiskUsage": 0,
"password": "password",
"forwardTo": "forwardTo"
}
' \
"https://api.transip.nl/v6/email/example.com/mailboxes/test@example.com"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
"maxDiskUsage": 0,
"password": "password",
"forwardTo": "forwardTo"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mailbox not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mailbox Locked, Modification not allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Created"
}
Update Mailbox field
PATCH/email/{domain}/mailboxes/{identifier}
Update 1 (or more) of a Mailbox’s Details
Update of a Mailbox will be scheduled. You may update only maxDiskUsage, password, or forwardTo.
Mailboxes that are being modified cannot be updated.
- domain
string
(required) Example: example.comdomainName
- identifier
string
(required) Example: test@example.comthe email address of the mailbox being worked on
- maxDiskUsage
Size of the mailbox in MB
- password
The password for the mailbox
- forwardTo
The target email to forward to
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/email/example.com/mailboxes/test@example.com"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"error": "Mailbox not found"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Mailbox Locked, Modification not allowed"
}
Response headers
Content-Type: application/json
Response body
{
"error": "Created"
}
Delete Mailbox
DELETE/email/{domain}/mailboxes/{identifier}
Schedule Deletion of a mailbox
Deletion of a Mailbox will be scheduled
Mailboxes that are being modified cannot be deleted.
- domain
string
(required) Example: example.comdomainName
- identifier
string
(required) Example: test@example.comthe email address of the mailbox being worked on
Email ¶
Api endpoint for Email
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/email"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"packages": [
{
"domain": "example.com",
"status": "creating"
}
]
}
Response headers
Content-Type: application/json
Response body
{
"error": "Ok"
}
List all mail packages
GET/email
List all mail packages for a customer
- packages
- domain
Domain of the EmailPackage
- status
Current status of the EmailPackage
/ Actions ¶
Actions ¶
This resource is meant for fetching information about actions. The purpose of this endpoint is to record the actions that have occurred on the resources in your account.
Content Location Header
When making a request to an API endpoint with implemented Actions, it will return a Content Location header.
This header contains an endpoint url as value.
Example: Content-Location: /v6/actions/419636c9a72c4c588285920f6cc4bb2c
You can utilize this endpoint url to retrieve data about the ongoing action by appending the value to the base URL.
Metadata
The metadata of the action stores information specific to the kind of action that is being performed. To give visual examples on how the metadata could look like, please look at the following code blocks
"metadata": {"progress": 13.37}
This indicates that the backup restore is currently at 13.37% and this will update over time.
The second example is a vps order action, the productName is returned
"metadata": {"productName": "example-vps"}
You are now able to poll the action until its finished and use the productName for the next API calls that may be related to that new product.
Below you can find an overview of the metadata
return types that we currently support.
progress: Used for actions that can return a progress indication, e.g. snapshot revert
productName: Returns the product name when the action is related to ordering our products, e.g. action order VPS returns name of the new VPS
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/actions"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"actions": [
{
"uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
"name": "Vps.restoreBackup",
"actionStartTime": "2022-08-31 07:58",
"status": "running",
"resourceIdentifier": "testuser-vps12",
"resourceType": "vps",
"metadata": "blob",
"parentActionUuid": "afa08ad9-6c12-4e03-95dd-a888b97ffe22"
}
]
}
List all actions
GET/actions
List all actions that are currently in running status
Filter on Resource Identifier
You are able to filter on running actions with the resourceIdentifier by specifying both the resourceIdentifier and the resourceType in the query params. resourceIdentifier and resourceType are both string values.
Example: /actions?resourceIdentifier=testuser-vps12&resourceType=vps
This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.
- actions
- uuid
uuid for this action
- name
name of the action
- actionStartTime
datetime for this action
- status
status of this action
- resourceIdentifier
Resource Identifier of the resource of this action
- resourceType
The externalType of the resource this action
- metadata
metadata of this action
- parentActionUuid
holds uuid of parent when action is a child action.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/actions/419636c9a72c4c588285920f6cc4bb2c"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"action": {
"uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
"name": "Vps.restoreBackup",
"actionStartTime": "2022-08-31 07:58",
"status": "running",
"resourceIdentifier": "testuser-vps12",
"resourceType": "vps",
"metadata": "blob",
"parentActionUuid": "afa08ad9-6c12-4e03-95dd-a888b97ffe22"
}
}
Response headers
Content-Type: application/json
Response body
{
"error": "Event with uuid '123' not found"
}
Get action by uuid
GET/actions/{uuid}
Request information about a specific action
- uuid
string
(required) Example: 419636c9a72c4c588285920f6cc4bb2cAction uuid identifier
- action
- uuid
uuid for this action
- name
name of the action
- actionStartTime
datetime for this action
- status
status of this action
- resourceIdentifier
Resource Identifier of the resource of this action
- resourceType
The externalType of the resource this action
- metadata
metadata of this action
- parentActionUuid
holds uuid of parent when action is a child action.
Child Actions ¶
This is the API endpoint for fetching the child actions of a parent action. Most typically used for scenarios where multiple actions will be started, such as a ordering multiple vpses.
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/actions/419636c9a72c4c588285920f6cc4bb2c/children"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response headers
Content-Type: application/json
Response body
{
"actions": [
{
"uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
"name": "Vps.restoreBackup",
"actionStartTime": "2022-08-31 07:58",
"status": "running",
"resourceIdentifier": "testuser-vps12",
"resourceType": "vps",
"metadata": "blob",
"parentActionUuid": "afa08ad9-6c12-4e03-95dd-a888b97ffe22"
}
]
}
List all child actions for a parent action
GET/actions/{uuid}/children
Using this API call, you are able to list all child actions for a parent action
- uuid
string
(required) Example: 419636c9a72c4c588285920f6cc4bb2cAction uuid identifier
- actions
- uuid
uuid for this action
- name
name of the action
- actionStartTime
datetime for this action
- status
status of this action
- resourceIdentifier
Resource Identifier of the resource of this action
- resourceType
The externalType of the resource this action
- metadata
metadata of this action
- parentActionUuid
holds uuid of parent when action is a child action.