API-eksempler
Eksempler for oppgaver som ikke har en egen referanseside.
Oppsett
Eksemplene leser tokenet ditt fra GIGAHOST_TOKEN:
export GIGAHOST_TOKEN="your-token-here"Brannmur
Kun virtuelle servere. Regelsettet du sender inn erstatter alle eksisterende regler; send hele listen hver gang.
Hent gjeldende brannmurregler
curl -s https://api.gigahost.no/api/v0/servers/42/firewall \
-H "Authorization: Bearer $GIGAHOST_TOKEN" \
| jq '.data'data.options inneholder enable og policyene som booleans (true = ACCEPT), data.rules reglene i posisjonsrekkefølge.
Sett brannmurregler
Tillat SSH, HTTP og HTTPS inn, slipp alt annet:
curl -X POST https://api.gigahost.no/api/v0/servers/42/firewall \
-H "Authorization: Bearer $GIGAHOST_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"enable": true,
"default_action": false,
"rules": [
{
"type": "in",
"action": "ACCEPT",
"proto": "tcp",
"dport": "22",
"comment": "SSH"
},
{
"type": "in",
"action": "ACCEPT",
"proto": "tcp",
"dport": "80"
},
{
"type": "in",
"action": "ACCEPT",
"proto": "tcp",
"dport": "443"
}
]
}'| Felt | Type | Beskrivelse |
|---|---|---|
enable | boolean | Brannmur på eller av. |
default_action | boolean | Policy for innkommende trafikk som ikke treffer noen regel: true = ACCEPT, false = DROP. Policy for utgående trafikk er alltid ACCEPT. |
rules | array | Reglene i den rekkefølgen de skal evalueres. |
rules[].type | string | in eller out. |
rules[].action | string | ACCEPT eller DROP. |
rules[].proto | string | Protokoll, f.eks. tcp eller udp. |
rules[].dport | string | Målport. |
rules[].comment | string | Valgfri. |
pos, log og ipversion ignoreres om de sendes. Mellomrom i dport, sport, source og dest fjernes, så 80, 443 blir 80,443. Et vellykket kall returnerer 200 med tom data.
Reglene tas i bruk samlet. Avvises én av dem, settes de forrige reglene tilbake, og kallet returnerer 400 med regelens plass i rules-arrayet ditt, for eksempel Firewall rule 3 was rejected (invalid dport). No changes were saved.
Hvis utgående SMTP er blokkert på serveren, kan enable ikke være false, og regelsettet må beholde de to out / DROP-reglene for port 25 og 465, ellers avvises forespørselen.
Fakturering
Fakturaer listes av GET /billing.
Last ned faktura-PDF
{inv_md5} er inv_md5-verdien til fakturaen.
curl -s https://api.gigahost.no/api/v0/billing/invoice/$INV_MD5 \
-H "Authorization: Bearer $GIGAHOST_TOKEN" \
| jq -r '.data.data' | base64 -d > invoice.pdfdata.filename inneholder det foreslåtte filnavnet og data.data den base64-kodede PDF-en.
Betal en faktura
Belaster standard betalingsmåte på kontoen. payment_id er valgfri og velger en annen betalingsmåte på kontoen.
curl -X POST https://api.gigahost.no/api/v0/billing/charge \
-H "Authorization: Bearer $GIGAHOST_TOKEN" \
-H "Content-Type: application/json" \
-d '{"inv_id": 12345}'En fullført betaling returnerer message: "Invoice has been paid successfully." i meta. Kort- og PayPal-flyter som må bekreftes i en nettleser returnerer client_secret i meta i stedet.
Supportsaker
List saker
curl -s https://api.gigahost.no/api/v0/tickets \
-H "Authorization: Bearer $GIGAHOST_TOKEN" \
| jq '.data'Hver oppføring har ticket_id, subject, created_at, last_reply_at og status.
Opprett en sak
curl -X POST https://api.gigahost.no/api/v0/tickets \
-H "Authorization: Bearer $GIGAHOST_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"subject": "Network issue on server 42",
"message": "I am seeing packet loss on eth0 since 14:00 UTC.",
"srv_id": 42
}'srv_id er valgfri og ignoreres om serveren ikke er på kontoen din. En konto kan ha maks 10 åpne saker.
Svar på en sak
curl -X POST https://api.gigahost.no/api/v0/tickets/789 \
-H "Authorization: Bearer $GIGAHOST_TOKEN" \
-H "Content-Type: application/json" \
-d '{"reply": "The issue started after the latest kernel update."}'Svarer du på en lukket sak, åpnes den igjen.
Skripteksempler
Bash: Start alle servere på nytt
#!/bin/bash
TOKEN="$GIGAHOST_TOKEN"
API="https://api.gigahost.no/api/v0"
# Get all server IDs
SERVER_IDS=$(curl -s "$API/servers" \
-H "Authorization: Bearer $TOKEN" \
| jq -r '.data[].srv_id')
for ID in $SERVER_IDS; do
echo "Rebooting server $ID..."
curl -s "$API/servers/$ID/reboot" \
-H "Authorization: Bearer $TOKEN" > /dev/null
echo "Done."
doneBash: Eksporter alle DNS-soner og poster
#!/bin/bash
TOKEN="$GIGAHOST_TOKEN"
API="https://api.gigahost.no/api/v0"
ZONES=$(curl -s "$API/dns/zones" \
-H "Authorization: Bearer $TOKEN" \
| jq -r '.data[] | "\(.zone_id) \(.zone_name)"')
while read -r ZONE_ID ZONE_NAME; do
echo "=== $ZONE_NAME ==="
curl -s "$API/dns/zones/$ZONE_ID/records" \
-H "Authorization: Bearer $TOKEN" \
| jq -r '.data[] | "\(.record_name)\t\(.record_ttl)\t\(.record_type)\t\(.record_value)"'
echo ""
done <<< "$ZONES"Python: List servere
import requests
API = "https://api.gigahost.no/api/v0"
TOKEN = "your-token-here"
headers = {"Authorization": f"Bearer {TOKEN}"}
response = requests.get(f"{API}/servers", headers=headers)
servers = response.json()["data"]
for server in servers:
print(f"{server['srv_id']}: {server['srv_name']} ({server['srv_status']})")Python: Oppdater en DNS-post
import requests
API = "https://api.gigahost.no/api/v0"
TOKEN = "your-token-here"
headers = {
"Authorization": f"Bearer {TOKEN}",
"Content-Type": "application/json",
}
zone_id = 100
record_id = 500
response = requests.put(
f"{API}/dns/zones/{zone_id}/records/{record_id}",
headers=headers,
json={
"record_value": "203.0.113.50",
"record_ttl": 1800,
},
)
print(response.json())
