- Ben je bekend met onze REST API en wil je direct aan de slag? Op deze Github-pagina vind je de PHP-library van onze REST API.
- In de 'examples'-map in de PHP-library vind je nog meer voorbeelden terug voor het gebruik van de PHP-library.
In deze handleiding laten wij in enkele eenvoudige voorbeelden zien hoe je de PHP-library van de TransIP REST API gebruikt. Zorg dat je voor je de voorbeelden in dit artikel doorloopt de volgende artikelen hebt gelezen:
- De API inschakelen in je TransIP-account & een private key genereren voor authenticatie
- Starten met de PHP-library en automatische authenticatie opzetten
De volgende API-voorbeelden worden in dit artikel behandeld:
- Een lijst van al je VPS'en ophalen (inclusief specificaties)
- Een VPS stoppen
- Een VPS starten
- Een VPS resetten
- Beschikbare VPS-producten ophalen
- Een VPS bestellen
- Big Storage aan je VPS koppelen
- Een lijst van je domeinen ophalen
- DNS van een domein opvragen
- Een enkel bestaand DNS-record updaten
- Een enkel DNS-record aan een domein toevoegen
Daarnaast hebben wij nog enkele voorbeelden van geavanceerdere toepassingen in PHP van de REST API. Wij zullen gaandeweg deze lijst uitbreiden:
Een overzicht van je VPS'en ophalen
In dit voorbeeld laten wij zien hoe je een overzicht ophaalt van alle VPS'en in je TransIP-account. Hiermee maak je een Array waarin de volgende informatie is opgenomen:
- name
- description
- productname
- operatingSystem
- diskSize
- memorySize
- cpus
- status
- ipAddress
- macAddress
- currentSnapshots
- maxSnapshots
- isLocked
- isBlocked
- isCustomerLocked
- availabilityZone
- tags
Maak een bestand aan waar je de onderstaande code in opneemt, bijvoorbeeld /var/www/html/example.com/vps/GetVpss.php
<?php
/**
* This is an example on how to retrieve and list all VPSs in your TransIP account.
*/
require_once (__DIR__ . '/../Authenticate.php');
// Get all VPSs in your account
$vpss = $api->vps()->getAll();
$vpss = print_r($vpss, true);
echo "<pre>{$vpss}</pre>";
Wil je van een specifieke VPS de specificaties ophalen? Gebruik dan in plaats van getAll de functie getByName($vpsName).
Een VPS stoppen
Met de stop actie plaats je de VPS in een 'stopped' status. Deze functie is gelijk aan het uitzetten van een computer met de fysieke 'uit/aan'-knop. Dit is geen graceful stop van je VPS en het is belangrijk om eerst je werk op te slaan.
Als de VPS zich in een power cycle (reset) bevindt zal deze API call falen omdat het stoppen van de VPS een onderdeel is van het power cycle proces.
Vervang 'example-vps' door de naam (niet de description) van je VPS.
<?php
/**
* Use this API call in order to stop your VPS
*/
require_once(__DIR__ . '/../Authenticate.php');
$vpsName = 'example-vps';
$api->vps()->stop($vpsName);
Een VPS starten
Deze API call start een VPS die uit staat. Deze functie is gelijk aan het aanzetten van een computer met de fysieke 'uit/aan'-knop.
Als de VPS zich in een power cycle (reset) bevindt zal deze API call falen omdat het starten van de VPS een onderdeel is van het power cycle proces.
<?php
/**
* Use this API call in order to start your VPS
*/
require_once(__DIR__ . '/../Authenticate.php');
$vpsName = 'example-vps';
$api->vps()->start($vpsName);
Een VPS resetten
Deze functie herstart je VPS onmiddellijk en is gelijk aan het resetten van een computer met de fysieke 'reset'-knop. Dit is geen graceful reset van je VPS en het is belangrijk om eerst je werk op te slaan.
<?php
/**
* Use this API call in order to restart your VPS with a reset command
*/
require_once(__DIR__ . '/../Authenticate.php');
$vpsName = 'example-vps';
$api->vps()->reset($vpsName);
Beschikbare VPS-producten ophalen
Met de products API-call toon je een overzicht van alle beschikbare VPS-producten die via de API besteld kunnen worden. Als er nieuwe producten uitgebracht worden, zullen die in de output opgenomen worden.
<?php
/**
* This is an example on how to retrieve all available VPS products.
*/
require_once(__DIR__ . '/Authenticate.php');
// Get all available products
$products = $api->products()->getAll();
$products = print_r($products, true);
echo "<pre>{$products}</pre>";
Beschikbare besturingssystemen tonen
Met de vpsOperatingSystems API-call toon je een overzicht van alle beschikbare besturingssystemen. Als er nieuwe producten uitgebracht worden, zullen die in de output opgenomen worden.
In dit voorbeeld gaan wij ervan uit dat je het bestand met de onderstaande code in dezelfde map plaatst als 'Authenticate.php'.
<?php /** * This is an example on how to retrieve all available VPS products. */ require_once(__DIR__ . '/Authenticate.php'); // Get all available products $OperatingSystems = $api->vpsOperatingSystems()->getAll(); $products = print_r($OperatingSystems, true);
echo "<pre>{$OperatingSystems
}</pre>";
Een VPS bestellen
Met de vps->order API-call kun je een VPS bestellen. Na het bestellen wordt de VPS automatisch geleverd en deployed.
- Je kunt optioneel add-ons in een array opgeven die dan automatisch meegeleverd worden.
- Specificeer je geen availability zone, dan word je VPS in Amsterdam geleverd.
- Wanneer je een hostname opgeeft, worden de eerste 32 karakters hiervan gebruikt als 'description' van je VPS (i.e. de eigen naam/omschrijving die je aan een VPS kunt geven in het controlepaneel).
- Bij cPanel is een hostname verplicht.
- Wil je geen addons, maar wel een hostname, availability zone en/of description meegeven? Definieer addons dan als een leeg array met: $addons = [];
- Het is mogelijk een script mee te geven voor een unattended installatie van de VPS na de bestelling. Zie de toelichting onder de code.
Bij het gebruik van deze API call zal een factuur worden gegenereerd in je TransIP-account.
<?php
/**
* Using this API call, you are able to order a new VPS. After the order process has been completed (payment will occur
* at a later stage should direct debit be used) the VPS will automatically be provisioned and deployed. Values
* associated to the newly delivered VPS will be returned in a new call respectively.
*/
require_once(__DIR__ . '/../Authenticate.php');
/**
* Example 1: Order a VPS
*/
$productName = 'vps-bladevps-x1';
$operatingSystemToInstall = 'debian-9';
// Order VPS
$api->vps()->order(
$productName,
$operatingSystemToInstall
);
/**
* Example 2: Order a VPS with an addon and choose your data center
*/
$addons = ['vpsAddon-1-extra-ip-address'];
$hostName = 'server.yoursite.com';
$availabilityZone = 'ams0';
$description = 'My server';
// Order VPS
$api->vps()->order(
$productName,
$operatingSystemToInstall,
$addons,
$hostName,
$availabilityZone,
$description,
);
Wil je gebruik maken van een unattended installatie bij het bestellen, geef dan ook in het tweede voorbeeld de volgende variabele mee:
$base64InstallText = 'installatiescript';
Het bestelcommando zou er dan als volgt uitzien:
// Order VPS
$api->vps()->order(
$productName,
$operatingSystemToInstall,
$addons,
$hostName,
$availabilityZone,
$description,
$base64InstallText
);
De inhoud van een unattended installatiescript valt buiten de scope van deze handleiding, maar je kunt hiervoor gebruik maken van de documentatie van Ubuntu, Debian en RedHat (voor CentOS).
Klik hier onder voor een voorbeeld van een minimal install voor Ubuntu 18.04.
Bestaande Big Storage aan je VPS koppelen
Het koppelen van een Big Storage doe je met behulp van de 'update' functie uit de BigStorage Repository. Let wel dat je Big Storage aan maximaal één VPS gekoppeld kan worden en maximaal tien Big Storages aan één VPS gekoppeld kunnen zijn.
<?php
/**
* This is an example on how to attach a Big Storage to a VPS.
*/
require_once(__DIR__ . '/../Authenticate.php');
// Name of your Big Storage and VPS to which it will be attached
$bigStorageName = 'testtransip-bigstorage40';
$bigStorageVpsName = 'testtransip-vps28';
// Attach Big Storage to your VPS
$bigStorage = $api->bigStorages()->getByName($bigStorageName);
$bigStorage->setVpsName($bigStorageVpsName);
$api->bigStorages()->update($bigStorage);
Een lijst van je domeinen ophalen
In dit voorbeeld laten wij zien hoe je een overzicht ophaalt van alle domeinen in je TransIP-account, ongeacht of ze via de API of de TransIP-website zijn besteld. De output is een array waarin de volgende informatie is opgenomen:
- name
- authCode
- isTransferLocked
- registrationDate
- renewalDate
- isWhitelabel
- cancellationDate
- cancellationStatus
- isDnsOnly
- tags
<?php
/**
* This is an example on how to retrieve and list all domains in your TransIP account.
*/
require_once (__DIR__ . '/../Authenticate.php');
// Get a list of all domains in your account
$domains = $api->domains()->getAll();
$domains = print_r($domains, true);
echo "<pre>{$domains}</pre>";
DNS-records van een domein opvragen
In het voorbeeld hieronder laten wij zien hoe je van een specifiek domein alle DNS-records opvraagt.
<?php
/**
* This is an example on how to retrieve and list all DNS records for a domain in your TransIP account.
*/
require_once (__DIR__ . '/../Authenticate.php');
$domainName = 'example.com';
// Get the DNS for your domain
$domainDns = $api->domainDns()->getByDomainName($domainName);
$domainDns = print_r($domainDns, true);
echo "<pre>$domainDns</pre>";
Een enkel bestaand DNS-record updaten
Update de inhoud van een bestaand DNS-record. Je kunt de naam (setName), TTL (setExpire), type (setType) en/of waarde (setContent) updaten. Geaccepteerde waardes voor TTL en type zijn:
- TTL: 60, 300, 3600, 86400
- Type: A, AAAA, CNAME, MX, NS, TXT, SRV, SSHFP, TLSA, CAA
Je krijgt een foutmelding als het record nog niet bestaat.
<?php
/**
* This is an example on how to update a single existing DNS entry for a specific domain
*/
use Transip\Api\Library\Entity\Domain\DnsEntry;
require_once (__DIR__ . '/../Authenticate.php');
$domainName = 'example.com';
// Create a DNS entry object
$dnsEntry = new DnsEntry();
$dnsEntry->setName('apidemo');
$dnsEntry->setExpire('300');
$dnsEntry->setType('TXT');
$dnsEntry->setContent('transip demo');
// Apply entry
$api->domainDns()->updateEntry($domainName, $dnsEntry);
Een enkel DNS-record toevoegen
Voegt een nieuw DNS-record toe aan een domein. Je kunt de naam (setName), TTL (setExpire), type (setType) en/of waarde (setContent) updaten. Geaccepteerde waardes voor TTL en type zijn:
- TTL: 60, 300, 3600, 86400
- Type: A, AAAA, CNAME, MX, NS, TXT, SRV, SSHFP, TLSA, CAA
<?php
/**
* This is an example on how to add a single new DNS entry to a specific domain
*/
use Transip\Api\Library\Entity\Domain\DnsEntry;
require_once (__DIR__ . '/../Authenticate.php');
$domainName = 'supporttest.nl';
// Create a DNS entry object
$dnsEntry = new DnsEntry();
$dnsEntry->setName('apidemo2');
$dnsEntry->setExpire('300');
$dnsEntry->setType('TXT');
$dnsEntry->setContent('transip demo');
// Apply entry
$api->domainDns()->addDnsEntryToDomain($domainName, $dnsEntry);
Mocht je aan de hand van deze handleiding nog vragen hebben, aarzel dan niet om onze supportafdeling te benaderen. Je kunt hen bereiken via de knop 'Neem contact op' onderaan deze pagina.