---
title: "Hizmetler (çekirdek) — API başvurusu"
description: "Çekirdek hizmet uçları: yenileme, iptal, otomatik yenileme, ek hizmetler, ölçümler, SSO, parola."
url: https://www.gyrohosting.com/developers/tr/api/services-core.html
language: tr
openapi: https://www.gyrohosting.com/developers/openapi.json
api_version: 2.30.0
---

# Hizmetler (çekirdek)

Çekirdek hizmet uçları: yenileme, iptal, otomatik yenileme, ek hizmetler, ölçümler, SSO, parola.

Base URL: `https://www.gyrohosting.com/api/v1/client` · OpenAPI: https://www.gyrohosting.com/developers/openapi.json


## GET /services

**Hizmetleri Listeleme** · operationId `coreGetServices` · scope `Services/GetServices` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreGetServices.json

Hesabın sahip olduğu hizmetleri döndürür. — anahtarın sahibi


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `page` | query | integer | Kaçıncı sayfa. |
| `limit` | query | integer | Sayfa başına satır. En çok 100. |
| `status` | query | string | Durum süzgeci. Rozet gruplarını alır: bekleyen hem kurulumdakini hem işlemdekini kapsar, iptal ise tamamlananı da içerir. |
| `type` | query | string | Ürün türü süzgeci. |
| `search` | query | string | Hizmet adında ve bağlı alan adında arar. |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled

### Örnekler

```bash
curl -s 'https://www.gyrohosting.com/api/v1/client/services' \
  -H "Authorization: Bearer $GYRO_TOKEN"
```
```bash
gyro core service list
```
```python
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
```
```js
const res = await fetch("https://www.gyrohosting.com/api/v1/client/services", {
  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 /services/{id}

**Hizmeti Okuma** · operationId `coreGetService` · scope `Services/GetService` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreGetService.json

Hizmetin ayarlarını, erişim bilgilerini ve yenileme durumunu döndürür. — anahtarın sahibi


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `id` (zorunlu) | path | integer |  |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled
- **404**: not_found

### Örnekler

```bash
curl -s 'https://www.gyrohosting.com/api/v1/client/services/12345' \
  -H "Authorization: Bearer $GYRO_TOKEN"
```
```bash
gyro core service get 12345
```
```python
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services/12345", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
```
```js
const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/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}`);
```


## PATCH /services/{id}

**Hizmet Tercihlerini Değiştirme** · operationId `coreUpdateService` · scope `Services/UpdateService` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreUpdateService.json

Otomatik yenilemeyi ve fatura profilini değiştirir. — iki alan


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `id` (zorunlu) | path | integer |  |

### İstek gövdesi

| Alan | Tür | Açıklama |
|---|---|---|
| `auto_renew` | boolean | Hizmet bazlı otomatik yenileme. Hesap geneli otomatik ödeme açıkken değiştirilemez. |
| `billing_profile_id` | integer | Fatura profilinin numarası. Sıfır hesabın varsayılanına döner. |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled
- **404**: not_found
- **422**: autorenew_locked, no_auto_pay_source, not_actionable, nothing_to_update

### Örnekler

```bash
curl -s -X PATCH 'https://www.gyrohosting.com/api/v1/client/services/12345' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"auto_renew": true, "billing_profile_id": 1}'
```
```bash
gyro service update 12345 --help    # tüm seçenekler
```
```python
import os, uuid, requests

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


## POST /services/{id}/renew

**Yenileme Faturası Kesme** · operationId `coreRenewService` · scope `Services/RenewService` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreRenewService.json

**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). Hizmet için bir yenileme faturası keser. — fatura üretir


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `id` (zorunlu) | path | integer |  |
| `Idempotency-Key` (zorunlu) | header | string |  |

### İstek gövdesi

| Alan | Tür | Açıklama |
|---|---|---|
| `cycle` | string | Yenileme döngüsü. Hizmet detayındaki döngü listesinden seçilir; verilmezse mevcut döngü kullanılır. |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled
- **404**: not_found
- **422**: already_invoiced, cycle_invalid, not_renewable, renew_blocked_subscription, renew_disabled

### Örnekler

```bash
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/services/12345/renew' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"cycle": "string"}'
```
```bash
gyro service renew 12345 --help    # tüm seçenekler
```
```python
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/services/12345/renew", headers=h, json={"cycle": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])
```
```js
const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/12345/renew", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({"cycle": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);
```


## GET /services/{id}/invoices

**Hizmetin Faturalarını Okuma** · operationId `coreGetServiceInvoices` · scope `Services/GetServiceInvoices` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreGetServiceInvoices.json

Bu hizmeti faturalayan belgeleri döndürür. — anahtarın sahibi


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `id` (zorunlu) | path | integer |  |
| `limit` | query | integer | En çok satır. En çok 100. |
| `page` | query | integer |  |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled
- **404**: not_found

### Örnekler

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

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services/12345/invoices", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
```
```js
const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/12345/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 /services/{id}/addons

**Hizmet Eklentilerini Okuma** · operationId `coreGetServiceAddons` · scope `Services/GetServiceAddons` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreGetServiceAddons.json

Hizmete bağlı ek hizmetleri döndürür. — anahtarın sahibi


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `id` (zorunlu) | path | integer |  |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled
- **404**: not_found

### Örnekler

```bash
curl -s 'https://www.gyrohosting.com/api/v1/client/services/12345/addons' \
  -H "Authorization: Bearer $GYRO_TOKEN"
```
```bash
gyro core service addon list 12345
```
```python
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services/12345/addons", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
```
```js
const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/12345/addons", {
  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 /services/{id}/cancellation

**İptal Talebi Açma** · operationId `coreCreateCancellation` · scope `Services/CreateCancellation` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreCreateCancellation.json

Hizmetin iptali için bir talep açar. — aynı anda tek talep


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `id` (zorunlu) | path | integer |  |

### İstek gövdesi

| Alan | Tür | Açıklama |
|---|---|---|
| `urgency` (zorunlu) | string | Ne zaman iptal edilsin: hemen ya da dönem sonunda. |
| `reason` (zorunlu) | string | Gerekçe. Beş değerden biri: gerek kalmadı, pahalı, başka yere geçiliyor, özellik eksik ya da diğer. |
| `reason_detail` | string | Serbest açıklama. Gerekçe diğer ise zorunludur. |
| `note` | string | Operatöre not. |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled
- **404**: not_found
- **422**: cancellation_exists, not_actionable, one_time_service, reason_detail_required

### Örnekler

```bash
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/services/12345/cancellation' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"urgency": "string", "reason": "string", "reason_detail": "string", "note": "string"}'
```
```bash
gyro service cancellation create 12345 --help    # tüm seçenekler
```
```python
import os, uuid, requests

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


## DELETE /services/{id}/cancellation

**İptal Talebini Geri Çekme** · operationId `coreRevokeCancellation` · scope `Services/RevokeCancellation` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreRevokeCancellation.json

Açık bir iptal talebini geri çeker. — anahtarın sahibi


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `id` (zorunlu) | path | integer |  |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled
- **404**: not_found

### Örnekler

```bash
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/services/12345/cancellation' \
  -H "Authorization: Bearer $GYRO_TOKEN"
```
```bash
gyro service cancellation delete 12345
```
```python
import os, uuid, requests

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


## GET /services/{id}/metrics

**Ölçümleri Okuma** · operationId `coreGetServiceMetrics` · scope `Services/GetServiceMetrics` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreGetServiceMetrics.json

Kullanıma göre ücretlenen ölçümleri ve tahmini bedeli döndürür. — kullanıma göre ücret


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `id` (zorunlu) | path | integer |  |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled
- **404**: not_found

### Örnekler

```bash
curl -s 'https://www.gyrohosting.com/api/v1/client/services/12345/metrics' \
  -H "Authorization: Bearer $GYRO_TOKEN"
```
```bash
gyro service metrics list 12345
```
```python
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services/12345/metrics", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
```
```js
const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/12345/metrics", {
  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 /services/{id}/metrics/billing

**Kullanım Fatura Geçmişi** · operationId `coreGetServiceMetricBilling` · scope `Services/GetServiceMetricBilling` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreGetServiceMetricBilling.json

Ölçümlerin dönem dönem faturalanmış kullanımını döndürür. — anahtarın sahibi


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `id` (zorunlu) | path | integer |  |
| `page` | query | integer | Kaçıncı sayfa. |
| `limit` | query | integer | Sayfa başına satır. En çok 100. |
| `metric` | query | string | Tek bir ölçüme daraltır. |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled
- **404**: not_found

### Örnekler

```bash
curl -s 'https://www.gyrohosting.com/api/v1/client/services/12345/metrics/billing' \
  -H "Authorization: Bearer $GYRO_TOKEN"
```
```bash
gyro service metrics billing list 12345
```
```python
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services/12345/metrics/billing", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
```
```js
const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/12345/metrics/billing", {
  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}`);
```


## PATCH /services/{id}/metrics/{key}

**Ölçümü Açma ve Kapatma** · operationId `coreUpdateServiceMetric` · scope `Services/UpdateServiceMetric` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreUpdateServiceMetric.json

Bir ölçümü açar ya da kapatır. — ödenmemiş fatura kilitler


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `id` (zorunlu) | path | integer |  |
| `key` (zorunlu) | path | string |  |

### İstek gövdesi

| Alan | Tür | Açıklama |
|---|---|---|
| `enabled` (zorunlu) | boolean | İstenen durum. |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled
- **404**: not_found
- **422**: enabled_invalid, metric_module_rejected, metric_not_priced, metric_unpaid_lock, not_actionable

### Örnekler

```bash
curl -s -X PATCH 'https://www.gyrohosting.com/api/v1/client/services/12345/metrics/1' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"enabled": true}'
```
```bash
gyro service metrics update 12345 --help    # tüm seçenekler
```
```python
import os, uuid, requests

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


## GET /services/{id}/dashboard

**Panel Özetini Okuma** · operationId `coreGetServiceDashboard` · scope `Services/GetServiceDashboard` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreGetServiceDashboard.json

Hizmetin arkasındaki panelin özetini ve yeteneklerini döndürür. — modüle canlı sorar


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `id` (zorunlu) | path | integer |  |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled
- **404**: not_found
- **422**: module_unavailable, not_actionable

### Örnekler

```bash
curl -s 'https://www.gyrohosting.com/api/v1/client/services/12345/dashboard' \
  -H "Authorization: Bearer $GYRO_TOKEN"
```
```bash
gyro service dashboard get 12345
```
```python
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services/12345/dashboard", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
```
```js
const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/12345/dashboard", {
  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 /services/{id}/tools

**Araçları Listeleme** · operationId `coreGetServiceTools` · scope `Services/GetServiceTools` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreGetServiceTools.json

Hizmet üzerinde kullanılabilecek panel araçlarını döndürür. — modüle canlı sorar


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `id` (zorunlu) | path | integer |  |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled
- **404**: not_found
- **422**: tools_not_supported

### Örnekler

```bash
curl -s 'https://www.gyrohosting.com/api/v1/client/services/12345/tools' \
  -H "Authorization: Bearer $GYRO_TOKEN"
```
```bash
gyro core service tool list 12345
```
```python
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services/12345/tools", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
```
```js
const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/12345/tools", {
  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 /services/{id}/tools/{tool}

**Araç Verisini Okuma** · operationId `coreGetServiceToolData` · scope `Services/GetServiceToolData` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreGetServiceToolData.json

Bir aracın listelediği veriyi panelden çeker. — modüle canlı sorar


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `id` (zorunlu) | path | integer |  |
| `tool` (zorunlu) | path | string |  |
| `action` | query | string | Okuma eylemi. Verilmezse aracın varsayılan listesi alınır. |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled
- **404**: not_found
- **422**: tool_rejected, tools_not_supported
- **500**: tool_data_failed

### Örnekler

```bash
curl -s 'https://www.gyrohosting.com/api/v1/client/services/12345/tools/1' \
  -H "Authorization: Bearer $GYRO_TOKEN"
```
```bash
gyro core service tool get 12345
```
```python
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services/12345/tools/1", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
```
```js
const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/12345/tools/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 /services/{id}/tools/{tool}/{action}

**Araç Eylemi Çalıştırma** · operationId `coreRunServiceToolAction` · scope `Services/RunServiceToolAction` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreRunServiceToolAction.json

Bir araç üzerinde oluşturma, düzenleme ya da silme çalıştırır. DNS kaydı düzenlemesi (`dns-zone-editor/edit`) yalnız gönderdiğinizi değiştirir: gönderilmeyen ad, TTL ya da öncelik kaydın mevcut değerini korur. — sunucuda değişiklik


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `id` (zorunlu) | path | integer |  |
| `tool` (zorunlu) | path | string |  |
| `action` (zorunlu) | path | string |  |

### İstek gövdesi

| Alan | Tür | Açıklama |
|---|---|---|
| `current_path` | string |  |
| `file` | string |  |
| `name` | string |  |
| `new_name` | string |  |
| `items` | string |  |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled
- **404**: not_found
- **422**: tool_action_failed, tool_rejected, tools_not_supported
- **500**: tool_action_failed

### Örnekler

```bash
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/services/12345/tools/1/reboot' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"current_path": "string", "file": "string", "name": "string", "new_name": "string", "items": "string"}'
```
```bash
gyro core service tool run 12345 --help    # tüm seçenekler
```
```python
import os, uuid, requests

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


## POST /services/{id}/module-method

**Modül Metodu Çalıştırma** · operationId `coreUseServiceModuleMethod` · scope `Services/UseServiceModuleMethod` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreUseServiceModuleMethod.json

Modülün müşteriye açtığı bir metodu çalıştırır. — beyanlı metotlar


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `id` (zorunlu) | path | integer |  |

### İstek gövdesi

| Alan | Tür | Açıklama |
|---|---|---|
| `method` (zorunlu) | string | Çalıştırılacak metot. Panel özetindeki metot listesinden alınır. |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled
- **404**: not_found
- **422**: invalid_method, method_required, module_unavailable, tool_rejected
- **500**: module_method_failed

### Örnekler

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

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


## POST /services/{id}/sso

**Panele Tek Oturum Açma** · operationId `coreGetServiceSso` · scope `Services/GetServiceSso` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreGetServiceSso.json

Panele parolasız giriş için tek kullanımlık bir adres üretir. — kısa ömürlü adres


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `id` (zorunlu) | path | integer |  |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled
- **404**: not_found
- **422**: sso_not_supported, tool_rejected
- **500**: sso_failed

### Örnekler

```bash
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/services/12345/sso' \
  -H "Authorization: Bearer $GYRO_TOKEN"
```
```bash
gyro service sso 12345
```
```python
import os, uuid, requests

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


## POST /services/{id}/password

**Panel Parolasını Değiştirme** · operationId `coreChangeServicePassword` · scope `Services/ChangeServicePassword` · OpenAPI fragment: https://www.gyrohosting.com/developers/spec/ops/coreChangeServicePassword.json

Hizmetin panel parolasını değiştirir. — barındırma ve sunucu


### Parametreler

| Alan | in | Tür | Açıklama |
|---|---|---|---|
| `id` (zorunlu) | path | integer |  |

### İstek gövdesi

| Alan | Tür | Açıklama |
|---|---|---|
| `password` (zorunlu) | string | Yeni panel parolası. Operatörün asgari uzunluğunu karşılamalıdır. |

### Yanıtlar

- **200**: Success
- **401**: Missing, invalid or revoked key
- **403**: Key lacks the scope, IP not allowed, or feature disabled
- **404**: not_found
- **422**: password_change_failed, password_not_supported, password_too_short

### Örnekler

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

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