Skip to content

API-eksempler ​

Eksempler for oppgaver som ikke har en egen referanseside.

Oppsett ​

Eksemplene leser tokenet ditt fra GIGAHOST_TOKEN:

bash
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 ​

bash
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:

bash
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"
      }
    ]
  }'
FeltTypeBeskrivelse
enablebooleanBrannmur på eller av.
default_actionbooleanPolicy for innkommende trafikk som ikke treffer noen regel: true = ACCEPT, false = DROP. Policy for utgående trafikk er alltid ACCEPT.
rulesarrayReglene i den rekkefølgen de skal evalueres.
rules[].typestringin eller out.
rules[].actionstringACCEPT eller DROP.
rules[].protostringProtokoll, f.eks. tcp eller udp.
rules[].dportstringMålport.
rules[].commentstringValgfri.

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.

bash
curl -s https://api.gigahost.no/api/v0/billing/invoice/$INV_MD5 \
  -H "Authorization: Bearer $GIGAHOST_TOKEN" \
  | jq -r '.data.data' | base64 -d > invoice.pdf

data.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.

bash
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 ​

bash
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 ​

bash
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 ​

bash
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 ​

bash
#!/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."
done

Bash: Eksporter alle DNS-soner og poster ​

bash
#!/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 ​

python
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 ​

python
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())

Gigahost Docs

This site is currently in development.
Enter the password to continue.