Kapsamlar, URL’ler ve istek biçimi

REST API URL’lerinin proje ID’sinden nasıl oluşturulduğu, istek ve yanıt başlıkları ile gövde, zaman damgası ve tutar biçimleri.

Bu referans, REST API URL’lerinin nasıl oluşturulduğunu, isteklerin ve yanıtların hangi başlıkları taşıdığını ve istek ve yanıt gövdelerinin nasıl biçimlendirildiğini açıklar. İşlemlerin kendisi için bkz. API referansı.

URL yapısı

Bir istek URL’si şu bölümlerden oluşur:

İstek URL’sinin bölümleri
https://<api-host>/api/v1/scopes/<project-id>/<service>/<collection>/<resource-id>/actions/<action>
BölümAnlamı
https://<api-host>/api/v1Temel URL: API ana bilgisayar adında /api/v1.
/scopes/<project-id>Kaynağı barındıran proje. API bu ID’ye kapsam ID’si (scopeId) der.
<service>compute, storage veya network gibi hizmet. Bkz. Hizmetler.
<collection>Hizmetteki bir kaynak türü; örneğin instances veya volumes.
<resource-id>Koleksiyondaki tek bir kaynak. Koleksiyonun tamamını hedeflemek için bu bölümü kullanmayın.
/actions/<action>Kaynak üzerinde start veya stop gibi bir eylem. Eylemler her zaman POST isteğidir.

Bazı örnekler:

İstekAnlamı
GET /scopes/<project-id>/compute/instancesProjenin sanal makinelerini listeler.
GET /scopes/<project-id>/compute/instances/<instance-id>Tek bir sanal makineyi okur.
POST /scopes/<project-id>/compute/instances/<instance-id>/actions/stopBir sanal makineyi durdurur.
DELETE /scopes/<project-id>/storage/volumes/<volume-id>Bir diski siler.

Yola eklediğiniz ID veya ad gibi her bölümü URL’de kullanılmak üzere kodlayın.

Projenin ID’sini bulma

Yoldaki kapsam ID’si bir projenin ID’sidir. Bunu iki yerde bulabilirsiniz:

  • Konsolun adresi. Bir projenin her sayfasının adresi, dil kodundan sonra /t/<tenant-id>/s/<subscription-id>/project/<project-id>/… biçimindedir. /project/ sonrasındaki bölüm proje ID’sidir.
  • API. GET /account/whoami, erişebildiğiniz kuruluşları, abonelikleri ve projeleri ID’leriyle birlikte döndürür.
GET /account/whoami yanıtının bir bölümü
{
  "tenants": [
    {
      "id": "acme",
      "name": "Acme Corp",
      "subscriptions": [
        {
          "id": "acme-production",
          "tenantId": "acme",
          "name": "Production",
          "currency": "TRY",
          "defaultRegion": "ist-1",
          "projects": [
            {
              "id": "acme-production-web-platform",
              "subscriptionId": "acme-production",
              "name": "web-platform",
              "region": "ist-1"
            }
          ]
        }
      ]
    }
  ]
}

Abonelik ve proje ID’leri, bunları yeniden adlandırdığınızda değişmez. ID’leri adlardan türetmek yerine GET /account/whoami yanıtından okuyun.

whoami işlemini bir API belirteci veya servis hesabı anahtarıyla çağırdığınızda yalnızca kimlik bilgisinin ait olduğu kuruluş listelenir.

Hizmetler

Hizmet bölümüKoleksiyonlarÜrün
computeinstances, flavors, key-pairsVirtual Machines
computeimagesImages
compute, storagesnapshotsSnapshots
storagevolumes, volume-transfersBlock Storage
storagebuckets, temp-url-keyObject Storage
storagebackup-plansBackup Center
networknetworks, routers, network-interfacesVirtual Networks
networksecurity-groupsSecurity Groups
networkload-balancersLoad Balancers
networkvpnSite-to-Site VPN
networkfloating-ipsFloating IPs
iamusers, roles, service-accounts, api-tokens ve diğerleriIdentity & Access Management
iamopenstack-credentials, openstack-api-accessOpenStack API Access
observabilityalert-rules, notification-channelsMonitoring & Alerts
billingsummary, cost-reports, budgets, commitments, invoicesCost Management
activityactivity-eventsActivity Log

API’de boyuta flavor denir: flavors boyutları listeler. Birkaç yol bir projenin altında değildir:

YolAmacı
/account/whoamiKimliğiniz ve erişebildiğiniz kuruluşlar, abonelikler ve projeler.
/operations/<operation-id>Eşzamansız bir işlemi okuma. Bkz. Eşzamanlı ve eşzamansız istekler.
/operations/<operation-id>/actions/cancelBitmemiş bir işlemi iptal etme.
/regions/<region>/volume-typesBir bölgenin disk türleri.

Hiçbir hizmetle eşleşmeyen bir yol 404 Not Found döndürür.

Yöntemler

YöntemKullanım
GETBir kaynağı okuma veya bir koleksiyonu listeleme.
POSTKaynak oluşturma ya da /actions/<action> adresinde bir eylem çalıştırma.
PATCHBir kaynağın bazı alanlarını değiştirme.
PUTBir ayarı bütünüyle değiştirme; örneğin /tags adresindeki kaynak etiketleri.
DELETEKaynak silme.

İstek başlıkları

BaşlıkGönderildiği isteklerDeğer
AuthorizationHer istekBearer ve ardından bir API belirteci veya servis hesabı anahtarı. Bkz. API belirteçleriyle kimlik doğrulama.
Content-TypeGövdesi olan isteklerapplication/json
Idempotency-KeyHer POST, PUT, PATCH ve DELETE isteği. Bir API belirteci veya servis hesabı anahtarıyla, kaynak oluşturan POST isteklerinde zorunludur.Her yeni istek için yeni bir UUID. Bkz. Idempotent istekler.
If-MatchSürümü denetleyen güncelleme ve silme istekleriSon okumanızdaki ETag değeri. Bkz. Eşzamanlılık denetimi.
X-Request-Idİsteğe bağlıİstek için kendi ID’niz. API bunu yanıtta döndürür.

Yanıt başlıkları

BaşlıkDöndürüldüğü yanıtlarDeğer
X-Request-IdHer yanıtİsteğin ID’si: sizinki ya da API’nin oluşturduğu.
ETagBirçok kaynağın okuma ve güncelleme yanıtlarıKaynağın bir sürüm etiketi; örneğin W/"3a7bd3e2360a3d29eea436fcfb7e44c735d117c4".
Retry-After429 Too Many RequestsYeniden denemeden önce beklenecek saniye sayısı.
X-RateLimit-LimitBir API belirteci veya servis hesabı anahtarıyla yapılan isteklerGeçerli zaman aralığının izin verdiği istek sayısı.
X-RateLimit-RemainingBir API belirteci veya servis hesabı anahtarıyla yapılan isteklerGeçerli zaman aralığında kalan istek sayısı.
X-RateLimit-ResetBir API belirteci veya servis hesabı anahtarıyla yapılan isteklerZaman aralığının sıfırlanmasına kalan saniye sayısı.

Gövde biçimi

  • JSON. İstek ve yanıt gövdeleri JSON’dur. Alan adları deletionProtection veya subscriptionId gibi camelCase biçimindedir.
  • Değeri olmayan alanlar. Bir yanıtta değeri olmayan isteğe bağlı bir alan, null olarak ayarlanmaz, yanıta hiç eklenmez. Şemanın her zaman içerdiği bir alan ise yanıtta bulunur ve değeri yoksa null olur.
  • Zaman damgaları. UTC’ye göre ISO 8601 dizeleri; örneğin 2026-10-08T09:30:00Z.
  • ID’ler. Opak dizeler. Bunları API’nin döndürdüğü şekliyle, birebir kullanın.
  • Listeler. Bir listeleme işlemi { "data": [...], "meta": {...} } döndürür. Bkz. Sayfalama.
  • Hatalar. Hata yanıtının kendine ait bir gövdesi vardır. Bkz. Hatalar.

Tutarlar

Para tutarları, para biriminin on binde biri cinsinden tam sayılardır. Adı Minor ile biten bir alan böyle bir tam sayı taşır; para nesnesi ise bu tam sayıyı amount içinde, para birimini de currency içinde taşır:

Bir para nesnesi
{ "amount": 125000, "currency": "TRY" }

Bu amount, para biriminin 12,5 birimidir: tutarı para birimi cinsinden bulmak için 10.000’e bölün. Bu tam sayıları kuruş olarak okumayın.

Örnek

Bir projenin sanal makinelerini listeleme
curl "https://<api-host>/api/v1/scopes/<project-id>/compute/instances?page=1&pageSize=50" \
  -H "Authorization: Bearer $PC_TOKEN"
  • <api-host>: API’nin ana bilgisayar adı.
  • <project-id>: projenin ID’si.
  • PC_TOKEN: API belirtecinizi tutan bir ortam değişkeni.

Bu sayfada