OpenAPI Türkçe gyrohosting.com ↗

Reseller

Reseller (bayi) accounts manage their own end-customers, assign services, mint end-customer keys and read usage reports. Services stay on the reseller account and use its discount.

#GET/cloud/reseller/settings

Reseller settingsScope: resellergetResellerSettingsOpenAPI for this operation

Responses

200Settings — data: ResellerSettings
403Key lacks the scope, IP not allowed, or feature disabled

Examples

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

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

#PUT/cloud/reseller/settings

Save reseller settings (white label)Scope: resellersaveResellerSettingsOpenAPI for this operation

Request body

FieldTypeDescription
white_labelboolean

Responses

200Settings — data: ResellerSettings
403Key lacks the scope, IP not allowed, or feature disabled

Examples

curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/settings' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"white_label": true}'
gyro reseller setting set --help    # all flags
import os, uuid, requests

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

#GET/cloud/reseller/report

Usage and billing report per end-customerScope: resellerresellerReportOpenAPI for this operation

Parameters

FieldinTypeDescription
fromquerystring
toquerystring

Responses

200Report — data: ResellerReport
403Key lacks the scope, IP not allowed, or feature disabled

Examples

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

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

Assign a service to an end-customer (customer_id 0 = unassign)Scope: resellerassignServiceOpenAPI for this operation

Request body

FieldTypeDescription
service_id requiredinteger
customer_id requiredinteger

Responses

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

Examples

curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/assign' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"service_id": 1, "customer_id": 1}'
gyro reseller assign --help    # all flags
import os, uuid, requests

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

#GET/cloud/reseller/customers

List end-customersScope: resellerlistResellerCustomersOpenAPI for this operation

Parameters

FieldinTypeDescription
external_refquerystring
pagequeryinteger
limitqueryinteger

Responses

200Customers — data: array<EndCustomer>
403Key lacks the scope, IP not allowed, or feature disabled

Examples

curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers' \
  -H "Authorization: Bearer $GYRO_TOKEN"
gyro reseller customer list
# resource gyro_reseller_customer: https://registry.terraform.io/providers/gyro-hosting/gyro/latest/docs/resources/reseller_customer
# Reseller (bayi) accounts only
resource "gyro_reseller_customer" "acme" {
  name         = "Acme Ltd"
  external_ref = "acme-001"
  allow_order  = true # Acme's keys may order servers, paid from YOUR balance at your discount
}
import os, uuid, requests

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

Create an end-customerScope: resellercreateResellerCustomerOpenAPI for this operation

Request body

FieldTypeDescription
namestring
emailstring
external_refstringYour own customer id (unique per reseller)
notestring
statusstring (active, suspended)
allow_orderbooleanMay this customer's keys order servers (paid from YOUR balance)?

Responses

201Created — data: EndCustomer
409State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight)
422Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...)

Examples

curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Acme Ltd", "external_ref": "acme-001", "allow_order": false}'
gyro reseller customer create --help    # all flags
# resource gyro_reseller_customer: https://registry.terraform.io/providers/gyro-hosting/gyro/latest/docs/resources/reseller_customer
# Reseller (bayi) accounts only
resource "gyro_reseller_customer" "acme" {
  name         = "Acme Ltd"
  external_ref = "acme-001"
  allow_order  = true # Acme's keys may order servers, paid from YOUR balance at your discount
}
import os, uuid, requests

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

#GET/cloud/reseller/customers/{id}

Get an end-customerScope: resellergetResellerCustomerOpenAPI for this operation

Parameters

FieldinTypeDescription
id requiredpathinteger

Responses

200Customer — data: EndCustomer
404Not found — also returned for objects owned by someone else

Examples

curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/12345' \
  -H "Authorization: Bearer $GYRO_TOKEN"
gyro reseller customer get 12345
# resource gyro_reseller_customer: https://registry.terraform.io/providers/gyro-hosting/gyro/latest/docs/resources/reseller_customer
# Reseller (bayi) accounts only
resource "gyro_reseller_customer" "acme" {
  name         = "Acme Ltd"
  external_ref = "acme-001"
  allow_order  = true # Acme's keys may order servers, paid from YOUR balance at your discount
}
import os, uuid, requests

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

Update an end-customer (suspend = its keys stop working)Scope: resellerupdateResellerCustomerOpenAPI for this operation

Parameters

FieldinTypeDescription
id requiredpathinteger

Request body

FieldTypeDescription
namestring
emailstring
external_refstringYour own customer id (unique per reseller)
notestring
statusstring (active, suspended)
allow_orderbooleanMay this customer's keys order servers (paid from YOUR balance)?

Responses

200Customer — data: EndCustomer
404Not found — also returned for objects owned by someone else

Examples

curl -s -X PATCH 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/12345' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "string", "email": "string", "external_ref": "string", "note": "string", "status": "active", "allow_order": true}'
gyro reseller customer update 12345 --help    # all flags
# resource gyro_reseller_customer: https://registry.terraform.io/providers/gyro-hosting/gyro/latest/docs/resources/reseller_customer
# Reseller (bayi) accounts only
resource "gyro_reseller_customer" "acme" {
  name         = "Acme Ltd"
  external_ref = "acme-001"
  allow_order  = true # Acme's keys may order servers, paid from YOUR balance at your discount
}
import os, uuid, requests

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

#DELETE/cloud/reseller/customers/{id}

Delete an end-customer (revokes keys and webhooks, unassigns services)Scope: resellerdeleteResellerCustomerOpenAPI for this operation

Parameters

FieldinTypeDescription
id requiredpathinteger
confirm requiredqueryboolean

Responses

200Deleted
404Not found — also returned for objects owned by someone else
422Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...)

Examples

curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/12345' \
  -H "Authorization: Bearer $GYRO_TOKEN"
gyro reseller customer delete 12345
# resource gyro_reseller_customer: https://registry.terraform.io/providers/gyro-hosting/gyro/latest/docs/resources/reseller_customer
# Reseller (bayi) accounts only
resource "gyro_reseller_customer" "acme" {
  name         = "Acme Ltd"
  external_ref = "acme-001"
  allow_order  = true # Acme's keys may order servers, paid from YOUR balance at your discount
}
import os, uuid, requests

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

List an end-customer's keysScope: resellerlistResellerCustomerKeysOpenAPI for this operation

Parameters

FieldinTypeDescription
id requiredpathinteger

Responses

200Keys — data: array<ApiKey>
404Not found — also returned for objects owned by someone else

Examples

curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/12345/keys' \
  -H "Authorization: Bearer $GYRO_TOKEN"
gyro reseller customer key list 12345
import os, uuid, requests

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

Mint a key for an end-customer (token returned once)Scope: resellercreateResellerCustomerKeyOpenAPI for this operation

Parameters

FieldinTypeDescription
id requiredpathinteger

Request body

FieldTypeDescription
name requiredstring
scopesarray<string (cloud_read, cloud_write, cloud_order, cloud_delete, services_read, services_write, webhooks)>
servicesarray<integer>Optional service allow list
actionsarray<string>Optional action allow list: server actions (reboot) or tool:action / tool:* / method:name
ipsarray<string>
rate_limitintegerRequests per minute (<= your own limit; 0 = default)

Responses

201Created — data: object
404Not found — also returned for objects owned by someone else
422Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...)

Examples

curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/12345/keys' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "string", "scopes": ["cloud_read"], "services": [1], "actions": ["string"], "ips": ["string"], "rate_limit": 1}'
gyro reseller customer key create 12345 --help    # all flags
import os, uuid, requests

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

#DELETE/cloud/reseller/customers/{id}/keys/{kid}

Revoke an end-customer keyScope: resellerdeleteResellerCustomerKeyOpenAPI for this operation

Parameters

FieldinTypeDescription
id requiredpathinteger
kid requiredpathinteger

Responses

200Deleted
404Not found — also returned for objects owned by someone else

Examples

curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/12345/keys/1' \
  -H "Authorization: Bearer $GYRO_TOKEN"
gyro reseller customer key delete 12345
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/12345/keys/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/reseller/customers/12345/keys/1", {
  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}`);