OpenAPI English gyrohosting.com ↗
Markdown olarak görClaude'da aç ↗

Fatura ve bakiye

Faturalar ve hesap bakiyesi (önerilen kapsamlarla salt okunur).

#GET/invoices

Faturaları listeleKapsam: Invoices/GetInvoiceslistInvoicesBu işlemin OpenAPI parçası

Parametreler

AlaninTürAçıklama
statusquerystringunpaid, paid, cancelled, refund
pagequeryinteger
limitqueryinteger

Yanıtlar

200Invoices — data: array<Invoice>
401Missing, invalid or revoked key

Örnekler

curl -s 'https://www.gyrohosting.com/api/v1/client/invoices' \
  -H "Authorization: Bearer $GYRO_TOKEN"
gyro invoice list
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/invoices", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/invoices", {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
  },
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);

#GET/invoices/{id}

Faturayı getirKapsam: Invoices/GetInvoicegetInvoiceBu işlemin OpenAPI parçası

Parametreler

AlaninTürAçıklama
id zorunlupathinteger

Yanıtlar

200Invoice with lines — data: Invoice
404Not found — also returned for objects owned by someone else

Örnekler

curl -s 'https://www.gyrohosting.com/api/v1/client/invoices/12345' \
  -H "Authorization: Bearer $GYRO_TOKEN"
gyro invoice get 12345
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/invoices/12345", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/invoices/12345", {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
  },
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);

#GET/balance

Hesap bakiyesiKapsam: Balance/GetBalancegetBalanceBu işlemin OpenAPI parçası

Yanıtlar

200Balance — data: object
401Missing, invalid or revoked key

Örnekler

curl -s 'https://www.gyrohosting.com/api/v1/client/balance' \
  -H "Authorization: Bearer $GYRO_TOKEN"
gyro balance
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/balance", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/balance", {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
  },
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);

#GET/balance/transactions

Bakiye hareketleriKapsam: Balance/GetBalanceTransactionslistBalanceTransactionsBu işlemin OpenAPI parçası

Parametreler

AlaninTürAçıklama
pagequeryinteger
limitqueryinteger

Yanıtlar

200Ledger entries — data: array<object>
401Missing, invalid or revoked key

Örnekler

curl -s 'https://www.gyrohosting.com/api/v1/client/balance/transactions' \
  -H "Authorization: Bearer $GYRO_TOKEN"
gyro balance transaction list
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/balance/transactions", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/balance/transactions", {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
  },
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);

#POST/cloud/invoices/{id}/pay

Faturayı hesap bakiyesinden ödeKapsam: billing_paypayInvoiceFromBalanceBu işlemin OpenAPI parçası

Yalnız bakiye (kart asla). "confirm": true ve Idempotency-Key başlığı zorunlu.

Parametreler

AlaninTürAçıklama
id zorunlupathinteger
Idempotency-Key zorunluheaderstringUnique per logical request (e.g. a UUID). Replays within 24 hours return the stored answer.

İstek gövdesi

AlanTürAçıklama
confirm zorunluboolean = true

Yanıtlar

200Paid — data: object
400Malformed request (e.g. missing Idempotency-Key)
402Account balance does not cover the order (insufficient_balance)
404Not found — also returned for objects owned by someone else
422Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...)

Örnekler

curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/invoices/12345/pay' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"confirm": true}'
gyro invoice pay 12345 --help    # tüm seçenekler
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
h["Idempotency-Key"] = str(uuid.uuid4())
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/invoices/12345/pay", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/invoices/12345/pay", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);

#GET/cloud/invoices/{id}/pdf

Fatura PDF (JSON içinde base64)Kapsam: billing_readgetInvoicePdfBu işlemin OpenAPI parçası

Parametreler

AlaninTürAçıklama
id zorunlupathinteger

Yanıtlar

200PDF — data: object
404Not found — also returned for objects owned by someone else

Örnekler

curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/invoices/12345/pdf' \
  -H "Authorization: Bearer $GYRO_TOKEN"
gyro invoice pdf get 12345
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/invoices/12345/pdf", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/invoices/12345/pdf", {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
  },
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);

#POST/cloud/balance/top-up

Bakiye yükleme faturası oluştur, ödeme linkini alKapsam: billing_paybalanceTopUpBu işlemin OpenAPI parçası

İstek gövdesi

AlanTürAçıklama
amount zorunlunumber

Yanıtlar

201Invoice + pay_url — data: object
403Key lacks the scope, IP not allowed, or feature disabled
422Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...)

Örnekler

curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/balance/top-up' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"amount": 1.0}'
gyro balance top-up --help    # tüm seçenekler
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/balance/top-up", headers=h, json={"amount": 1.0}, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/balance/top-up", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"amount": 1.0}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);

#POST/invoices/{id}/pay

Faturayı ÖdemeKapsam: Invoices/PayInvoicecorePayInvoiceBu işlemin OpenAPI parçası

Para harcar / fatura oluşturur. Para kuralları (AK-40): gövdede "confirm": true, Idempotency-Key başlığı, yalnız bakiye (kayıtlı kart yok), hesap başına günlük ücretli işlem sınırı (varsayılan 50, hesap/bayi bazında değiştirilebilir, 00:00 TR'de sıfırlanır). Açık bir faturayı bakiyeyle ya da kayıtlı kartla kapatır. — bakiye ya da kayıtlı kart

Parametreler

AlaninTürAçıklama
id zorunlupathinteger
Idempotency-Key zorunluheaderstring

İstek gövdesi

AlanTürAçıklama
payment zorunluobjectpaymentÖdeme kaynağı.
method zorunlustringÖdeme yolu: hesap bakiyesi ya da kayıtlı kart.
card_idintegerÇekilecek kartın numarası. Verilmezse hesabın varsayılan kartı çekilir.

Yanıtlar

200Success — data: object
401Missing, invalid or revoked key
403Key lacks the scope, IP not allowed, or feature disabled
404not_found
422balance_not_allowed, card_expired, card_not_chargeable, insufficient_balance, invoice_not_payable, no_stored_card, payment_method_invalid, subscription_collects

Örnekler

curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/invoices/12345/pay' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"payment": {}, "method": "string", "card_id": 1}'
gyro core invoice pay 12345 --help    # tüm seçenekler
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
h["Idempotency-Key"] = str(uuid.uuid4())
r = requests.post("https://www.gyrohosting.com/api/v1/client/invoices/12345/pay", headers=h, json={"payment": {}, "method": "string", "card_id": 1}, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/invoices/12345/pay", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({"payment": {}, "method": "string", "card_id": 1}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);

#POST/invoices/{id}/coupon

Faturaya Kupon UygulamaKapsam: Invoices/ApplyInvoiceCouponcoreApplyInvoiceCouponBu işlemin OpenAPI parçası

Açık bir faturaya kupon uygular ve belgeyi yeniden fiyatlar. — belge başına tek kupon

Parametreler

AlaninTürAçıklama
id zorunlupathinteger

İstek gövdesi

AlanTürAçıklama
code zorunlustringKupon kodu.

Yanıtlar

200Success — data: object
401Missing, invalid or revoked key
403Key lacks the scope, IP not allowed, or feature disabled
404not_found
422coupon_code_required, coupon_invalid, coupon_not_invoice, coupon_rejected, coupon_scope, coupon_used, invoice_not_payable

Örnekler

curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/invoices/12345/coupon' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"code": "string"}'
gyro invoice coupon 12345 --help    # tüm seçenekler
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/invoices/12345/coupon", headers=h, json={"code": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/invoices/12345/coupon", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"code": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);

#PATCH/balance/settings

Cüzdan Ayarlarını DeğiştirmeKapsam: Balance/UpdateBalanceSettingscoreUpdateBalanceSettingsBu işlemin OpenAPI parçası

Otomatik ödemeyi ve düşük bakiye uyarısını ayarlar. — faturaları etkiler

İstek gövdesi

AlanTürAçıklama
auto_pay_from_balancebooleanYenilemeler cüzdandan tahsil edilsin mi. Bu değiştiğinde açık yenileme faturaları yeni tercihe göre yeniden ele alınır.
backup_card_idintegerCüzdan yetmediğinde çekilecek kart. Sıfır göndermek kart zincirini tümüyle kaldırır.
alertobjectUyarı bloğu. Açık ve eşik alanlarını taşır; açarken pozitif bir eşik gerekir.
alert_recipientsstringUyarıyı alacak fatura adresi numaraları. Liste yerine geçer; hesabın sahibi burada yer almaz, her zaman alır.

Yanıtlar

200Success — data: object
401Missing, invalid or revoked key
403Key lacks the scope, IP not allowed, or feature disabled
404not_found
422alert_invalid, auto_pay_invalid, card_expired, nothing_to_update

Örnekler

curl -s -X PATCH 'https://www.gyrohosting.com/api/v1/client/balance/settings' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"auto_pay_from_balance": true, "backup_card_id": 1, "alert": {}, "alert_recipients": "string"}'
gyro balance setting update --help    # tüm seçenekler
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.patch("https://www.gyrohosting.com/api/v1/client/balance/settings", headers=h, json={"auto_pay_from_balance": True, "backup_card_id": 1, "alert": {}, "alert_recipients": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/balance/settings", {
  method: "PATCH",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"auto_pay_from_balance": true, "backup_card_id": 1, "alert": {}, "alert_recipients": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);

#GET/cloud/billing/balance

getPrepaidBalanceKapsam: billing_readgetPrepaidBalanceBu işlemin OpenAPI parçası

Yanıtlar

200OK — data: PrepaidBalance
403insufficient_scope | subkey_forbidden

Örnekler

curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/billing/balance' \
  -H "Authorization: Bearer $GYRO_TOKEN"
gyro api request GET /cloud/billing/balance
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/billing/balance", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/billing/balance", {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
  },
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);

#GET/cloud/billing/usage

listPrepaidUsageKapsam: billing_readlistPrepaidUsageBu işlemin OpenAPI parçası

Parametreler

AlaninTürAçıklama
fromquerystringfirst day (default: 1st of this month)
toquerystringlast day (default: today); at most 400 days
service_idqueryinteger
statusquerystring (ucretli, tavan, kismi, odenmedi, ucretsiz)
granularityquerystring (hour, day, month)
formatquerystring (json, csv)csv = base64 file in data.content_base64 (max 5000 rows)
pagequeryinteger
limitqueryinteger

Yanıtlar

200OK (meta = total, page, limit, next_page) — data: object

Örnekler

curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/billing/usage' \
  -H "Authorization: Bearer $GYRO_TOKEN"
gyro api request GET /cloud/billing/usage
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/billing/usage", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/billing/usage", {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
  },
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);

#GET/cloud/billing/statement/{month}

getPrepaidStatementKapsam: billing_readgetPrepaidStatementBu işlemin OpenAPI parçası

Parametreler

AlaninTürAçıklama
month zorunlupathstring
formatquerystring (json, pdf, csv)
langquerystring (tr, en)

Yanıtlar

200json: totals/by_service/by_day; pdf|csv: filename, content_type, content_base64
422invalid_month

Örnekler

curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/billing/statement/1' \
  -H "Authorization: Bearer $GYRO_TOKEN"
gyro api request GET /cloud/billing/statement/1
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/billing/statement/1", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/billing/statement/1", {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
  },
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);

#POST/cloud/billing/estimate

estimatePrepaidCostKapsam: billing_readestimatePrepaidCostBu işlemin OpenAPI parçası

Sunucu ve ayrılmış düğüm planları: saatlik = aylık / 672, aylık fiyatla sınırlı (capped: true). Sunucusuz kapsayıcı (type: serverless, cpu_m, memory_mi, count, hours): ölçülen kullanıma göre, aylık tavan yok (capped: false), monthly_cap = tam ay (730 saat) çalışma, total = hours x saatlik (billed_hours = hours).

İstek gövdesi

AlanTürAçıklama
itemsarray<object>
planstringsingle-item shortcut
countinteger
cpu_mintegerserverless single-item shortcut
memory_miinteger
hoursinteger
typestring (serverless)

Yanıtlar

200items[], hourly, daily, monthly_cap, eur_rate, balance, hours_covered, order_requires (first 24 h), can_order
422unknown_plan | region_not_prepaid | too_many_items | invalid_cpu | invalid_memory | serverless_not_available

Örnekler

curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/billing/estimate' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"items": [{"plan": "standart-2-4", "product_id": 1, "region": "tr-ist-1", "count": 1, "type": "serverless", "cpu_m": 250, "memory_mi": 512, "hours": 1}], "plan": "string", "count": 1, "cpu_m": 1, "memory_mi": 1, "hours": 1, "type": "serverless"}'
gyro api request POST /cloud/billing/estimate --data '{"items": [{"plan": "standart-2-4", "product_id": 1, "region": "tr-ist-1", "count": 1, "type": "serverless", "cpu_m": 250, "memory_mi": 512, "hours": 1}], "plan": "string", "count": 1, "cpu_m": 1, "memory_mi": 1, "hours": 1, "type": "serverless"}'
# veri kaynağı gyro_prepaid_estimate: https://registry.terraform.io/providers/gyro-hosting/gyro/latest/docs/data-sources/prepaid_estimate
# What would two 0.5 vCPU / 1 GB serverless containers and one Istanbul server cost?
data "gyro_prepaid_estimate" "stack" {
  items = [
    { cpu_m = 500, memory_mi = 1024, count = 2, hours = 730 },
    { plan = "standart-2-4" },
  ]
}

output "monthly" {
  value = "${data.gyro_prepaid_estimate.stack.monthly} ${data.gyro_prepaid_estimate.stack.currency}"
}
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/billing/estimate", headers=h, json={"items": [{"plan": "standart-2-4", "product_id": 1, "region": "tr-ist-1", "count": 1, "type": "serverless", "cpu_m": 250, "memory_mi": 512, "hours": 1}], "plan": "string", "count": 1, "cpu_m": 1, "memory_mi": 1, "hours": 1, "type": "serverless"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/billing/estimate", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"items": [{"plan": "standart-2-4", "product_id": 1, "region": "tr-ist-1", "count": 1, "type": "serverless", "cpu_m": 250, "memory_mi": 512, "hours": 1}], "plan": "string", "count": 1, "cpu_m": 1, "memory_mi": 1, "hours": 1, "type": "serverless"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);

#GET/cloud/billing/topup-url

getPrepaidTopupUrlKapsam: billing_readgetPrepaidTopupUrlBu işlemin OpenAPI parçası

Yanıtlar

200url, minimum

Örnekler

curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/billing/topup-url' \
  -H "Authorization: Bearer $GYRO_TOKEN"
gyro billing topup-url get
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/billing/topup-url", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/billing/topup-url", {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
  },
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);

#GET/cloud/billing/container-sizes

Sunucusuz kapsayıcı boyutları (vCPU / bellek) ve fiyatlarıKapsam: billing_readgetContainerSizesBu işlemin OpenAPI parçası

Gyro Kapsayıcı Sunucusuz her çalışan kopyayı saatlik ücretlendirir: cpu_m/1000 x vCPU-saat + memory_mi/1024 x GB-saat, ön ödemeli bakiyeden, aylık tavan yok. Sunucusuz ortamda POST /cloud/containers/{id}/services yalnız burada listelenen cpu_m / memory_mi çiftlerini kabul eder (422 invalid_cpu / invalid_memory).

Yanıtlar

200Sizes — data: ContainerSizes
401Missing, invalid or revoked key
403Key lacks the scope, IP not allowed, or feature disabled
404Not found — also returned for objects owned by someone else

Örnekler

curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/billing/container-sizes' \
  -H "Authorization: Bearer $GYRO_TOKEN"
gyro container sizes
# veri kaynağı gyro_container_sizes: https://registry.terraform.io/providers/gyro-hosting/gyro/latest/docs/data-sources/container_sizes
# Serverless container sizes (vCPU / memory pairs) and prices
data "gyro_container_sizes" "all" {}

output "smallest" {
  value = {
    cpu_m     = data.gyro_container_sizes.all.sizes[0].cpu_m
    memory_mi = data.gyro_container_sizes.all.sizes[0].memory_mi[0]
    eur_hour  = data.gyro_container_sizes.all.sizes[0].hourly_eur_min
  }
}
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/billing/container-sizes", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/billing/container-sizes", {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
  },
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);