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:
https://<api-host>/api/v1/scopes/<project-id>/<service>/<collection>/<resource-id>/actions/<action>| Bölüm | Anlamı |
|---|---|
https://<api-host>/api/v1 | Temel 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:
| İstek | Anlamı |
|---|---|
GET /scopes/<project-id>/compute/instances | Projenin 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/stop | Bir 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.
{
"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 |
|---|---|---|
compute | instances, flavors, key-pairs | Virtual Machines |
compute | images | Images |
compute, storage | snapshots | Snapshots |
storage | volumes, volume-transfers | Block Storage |
storage | buckets, temp-url-key | Object Storage |
storage | backup-plans | Backup Center |
network | networks, routers, network-interfaces | Virtual Networks |
network | security-groups | Security Groups |
network | load-balancers | Load Balancers |
network | vpn | Site-to-Site VPN |
network | floating-ips | Floating IPs |
iam | users, roles, service-accounts, api-tokens ve diğerleri | Identity & Access Management |
iam | openstack-credentials, openstack-api-access | OpenStack API Access |
observability | alert-rules, notification-channels | Monitoring & Alerts |
billing | summary, cost-reports, budgets, commitments, invoices | Cost Management |
activity | activity-events | Activity Log |
API’de boyuta flavor denir: flavors boyutları listeler. Birkaç yol bir projenin altında değildir:
| Yol | Amacı |
|---|---|
/account/whoami | Kimliğ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/cancel | Bitmemiş bir işlemi iptal etme. |
/regions/<region>/volume-types | Bir bölgenin disk türleri. |
Hiçbir hizmetle eşleşmeyen bir yol 404 Not Found döndürür.
Yöntemler
| Yöntem | Kullanım |
|---|---|
GET | Bir kaynağı okuma veya bir koleksiyonu listeleme. |
POST | Kaynak oluşturma ya da /actions/<action> adresinde bir eylem çalıştırma. |
PATCH | Bir kaynağın bazı alanlarını değiştirme. |
PUT | Bir ayarı bütünüyle değiştirme; örneğin /tags adresindeki kaynak etiketleri. |
DELETE | Kaynak silme. |
İstek başlıkları
| Başlık | Gönderildiği istekler | Değer |
|---|---|---|
Authorization | Her istek | Bearer ve ardından bir API belirteci veya servis hesabı anahtarı. Bkz. API belirteçleriyle kimlik doğrulama. |
Content-Type | Gövdesi olan istekler | application/json |
Idempotency-Key | Her 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-Match | Sürümü denetleyen güncelleme ve silme istekleri | Son 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ık | Döndürüldüğü yanıtlar | Değer |
|---|---|---|
X-Request-Id | Her yanıt | İsteğin ID’si: sizinki ya da API’nin oluşturduğu. |
ETag | Birçok kaynağın okuma ve güncelleme yanıtları | Kaynağın bir sürüm etiketi; örneğin W/"3a7bd3e2360a3d29eea436fcfb7e44c735d117c4". |
Retry-After | 429 Too Many Requests | Yeniden denemeden önce beklenecek saniye sayısı. |
X-RateLimit-Limit | Bir API belirteci veya servis hesabı anahtarıyla yapılan istekler | Geçerli zaman aralığının izin verdiği istek sayısı. |
X-RateLimit-Remaining | Bir API belirteci veya servis hesabı anahtarıyla yapılan istekler | Geçerli zaman aralığında kalan istek sayısı. |
X-RateLimit-Reset | Bir API belirteci veya servis hesabı anahtarıyla yapılan istekler | Zaman 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ı
deletionProtectionveyasubscriptionIdgibi camelCase biçimindedir. - Değeri olmayan alanlar. Bir yanıtta değeri olmayan isteğe bağlı bir alan,
nullolarak ayarlanmaz, yanıta hiç eklenmez. Şemanın her zaman içerdiği bir alan ise yanıtta bulunur ve değeri yoksanullolur. - 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:
{ "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
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.