Changelog
Gyro Public API release notes (newest first). The CLI and the Terraform provider ship the same day.
gyro CLI releases ↗ · Terraform CHANGELOG ↗
#2.30.0
container extra nodes PUT /cloud/containers/{id}/nodes (same price as a plan node, hourly; removal drains first), egress change advance notice (egress_change, pending_egress_ips) with an optional approval step (PUT .../egress-approval, POST .../egress-change/approve), and DELETE /cloud/containers/{id} (prepaid environment delete, same as the panel). Additive.
#2.29.0
private networks (VPC) for tr-ist-1: /cloud/vpcs (create, rename, delete), subnets, the VPC gateway (NAT, port forwards, inter-subnet rule; hourly prepaid while on, 4.99 EUR/month cap), server cards /cloud/servers/{id}/nics and turning the public IPv4 off/on /cloud/servers/{id}/public-ip. Additive.
#2.28.2
pipeline create no longer lists repo as required: it is required for git providers and must be left out for provider: archive. Container services: alerts given on create / update is applied (the service view now also shows it at the top level, alerts.min_ready, 0 = off); unknown fields inside alerts or autoscaling are refused with 422 invalid_alerts / invalid_autoscaling instead of being ignored.
#2.28.1
the limit hint (details.limit_exceeded, how_to_increase, "This limit can be raised with a support ticket") is added only to real account / plan limit refusals; input validation errors that mention a maximum length or count ("at most 64 characters") no longer get it. Module limits now name their limit_key (e.g. compute.extra_ips, s3.max_buckets, dns.max_zones, gfw.rules_per_server); plan limits answer how_to_increase: upgrade_plan, hourly ones wait.
#2.28.0
Gyro Pipeline build_target (create / update / get): build a named stage of a multi-stage Dockerfile (docker build --target); empty = last stage; unknown stage = run error build_target_not_found; also build_target: in gyro-pipeline.yml. Additive.
#2.27.1
PUT /cloud/containers/{id}/services/{name}/env rejects unknown fields and empty changes with 422 invalid_env (was: success without change).
#2.27.0
GET /cloud/containers/{id} (environment detail: Kubernetes namespace, in-cluster addressing cluster_dns, egress_ips) and GET /cloud/containers/{id}/egress-ips (current egress IPv4 addresses for IP allow lists; dedicated = own nodes + shared pool during updates, serverless = shared pool); service detail has internal (<service>.<namespace>.svc.cluster.local:80), service list internal_address; egress IP changes are notified (alert event egress). Additive.
#2.26.0
GET /cloud/account/limits; structured limit hint in limit errors (new-account limit of the prepaid cloud now answers limit_exceeded instead of checkout_blocked, original code in details.reason); dry-run quotes of servers, container environments and templates show quote.limit_exceeded; new-account limit raised to 5 servers. Additive.
#2.25.0
Object Storage and Protected Storage can be ordered through the API: GET /cloud/storage/plans, POST /cloud/storage (plan, cycle, quantity, extra_traffic, object_lock_buckets, name/tags/project_id; paid from the balance), GET /cloud/storage, GET|DELETE /cloud/storage/{id}. Plan change: documented data safety, data_preserved/disk/restart in the answer, resize-options marks smaller-disk plans allowed: false and a smaller disk is refused with 409 disk_shrink already in dry_run; clearer recreate_required message. Additive.
#2.24.4
Container services: a replica count (scale, create, update, autoscaling max) outside the plan limit is refused with 422 invalid_replicas and the message names the limit (details.max). GET /cloud/servers/{id}: Gyro Compute servers in tr-ist-1 show the SSH keys given at creation (ssh_keys.fingerprints, ssh_keys.key_ids, method: cloud-init; state: none when no key was given) instead of null.
#2.24.3
Security groups: a rule change that removes or narrows SSH/RDP access for a source on an attached server is a 5 minute trial on every path (API included; before only when the caller's own address was cut); the group object has trial and trial_seconds_left also while applying. Deleting a server removes its group attachments, so the group can be deleted. Group changes are written to each attached server's change log.
#2.24.2
Serverless containers are billed for the full month again: no monthly cap (capped: false), billing estimate default hours 730 (a full month), monthly_cap = 730 hours, total = hours x hourly; billed_hours kept (= hours). Replaces the 672-hour serverless ceiling announced in 2.24.1. Capped plans (servers, dedicated nodes) unchanged.
#2.24.1
Containers: command / args also accept a plain string, split like a shell with quotes respected (invalid JSON array / unclosed quote -> 400). Service updates, restarts and rollbacks are seamless even when the node pool is full (the new copy starts on a shared sandboxed pool and moves back); the response carries rollout: seamless | brief_interruption. Service state may be preparing (the environment's node is being installed) with eta_s. Serverless: at most 672 charged hours a calendar month; billing estimate default hours 672, billed_hours. Additive.
#2.24.0
Gyro Pipeline: archive builds (POST .../pipelines/{pipeline}/uploads gives a presigned upload URL, tar.gz / zip up to 200 MB, kept 24 h; then POST .../runs {"upload_id"}; provider archive = pipelines without a repository) and private repositories over SSH (PUT .../deploy-key creates an ed25519 deploy key, only the public key is returned; GET/PUT .../host-key shows and confirms the server key; GitHub / GitLab / Bitbucket keys are pinned). Additive.
#2.23.0
Gyro Pipeline for containers: /cloud/containers/{id}/pipelines connects a GitHub / GitLab / Gitea / https git repository; a push or tag (webhook) or POST .../runs builds the Dockerfile in an isolated build environment, pushes <registry>/<code>/<image>:<sha7> and rolls the target services out with health watch and automatic rollback. Runs, live logs, approval and redeploy under /cloud/containers/{id}/pipeline-runs/{run}. Additive.
#2.22.0
container image import: POST /cloud/containers/{id}/registry/imports copies an image from Docker Hub, GitHub, Quay or another https registry into the environment's Gyro registry (no docker push; optional token, never stored), GET .../registry/imports shows progress. Additive.
#2.21.0
batch create: POST /cloud/servers takes quantity (N servers in one order), name ({n} template) / tags and app; container environments can be ordered through the API: GET /cloud/containers/plans, POST /cloud/containers (quantity, name, tags, project_id). Additive.
#2.20.1
documentation only (example values). No functional change.
#2.20.0
Protected Storage buckets can be mounted on servers (/cloud/servers/{id}/storage-mounts, read-only by default, read/write needs accept_versioning: true, field protected) and renamed (POST /cloud/storage/{id}/buckets/{bucket}/rename: display name + website address change, S3 name stays, s3_name in bucket lists). Additive.
#2.19.1
POST /cloud/servers/{id}/actions/rebuild accepts app and app_domain (one-click app on top of the reinstall; response app_install_id); POST /cloud/servers/{id}/app also on tr-ist-1. Install status kaldirildi = removed by a later reinstall. Additive.
#2.19.0
additional disks for tr-ist-1 servers: GET/POST /cloud/servers/{id}/disks, PUT/DELETE /cloud/servers/{id}/disks/{disk} (ssd or hdd class, per GB, hourly from the prepaid balance; up to 4 disks per server, grow only).
#2.18.0
projects: /cloud/projects (list/create/get/update/delete, move services), PUT /cloud/services/{id}/project, project on every service, ?project= filter, optional project_id on order endpoints. Additive.
#2.17.5
mount a Gyro Object Storage bucket on a server: GET/POST /cloud/servers/{id}/storage-mounts, GET/DELETE /cloud/servers/{id}/storage-mounts/{mid}, POST .../{mid}/command (one-line installer, automatic on tr-ist-1; one narrow key per mount; free). Additive.
#2.17.4
Gyro Containers Serverless: GET /cloud/billing/container-sizes (vCPU / memory pairs and prices), POST /cloud/billing/estimate accepts {"type": "serverless", "cpu_m", "memory_mi", "count", "hours"} (no monthly cap, capped flag on every item). Additive.
#2.17.3
tr-ist-1 snapshots: every additional snapshot is billed at least 1 hour (a snapshot created and deleted between two hourly counts is billed too). Text only.
#2.17.2
tr-ist-1 reverse DNS is published automatically: default PTR <a-b-c-d>.ip.gyrohosting.com on every address, custom PTR live within seconds (status: active, new default flag), removed when the server/IP is released. Additive.
#2.17.1
additional IPv4: each added address is billed at least 6 hours (pricing.minimum_hours), per-server add limit per hour (adds_per_hour, adds_left_this_hour). Additive.
#2.17.0
Gyro Containers: per-service autoscaling (PUT /cloud/containers/{id}/services/{name}/autoscaling, also autoscaling / alerts on create and update), notification channels (GET/PUT /cloud/containers/{id}/notifications, .../notifications/test, .../notifications/webhook-secret: e-mail, SMS, Telegram, signed webhook). Additive.
#2.16.1
GET /cloud/apps returns min_ram_gb (fixed), min_disk_gb, min_cpu, popular_tr, version, license and description for each one-click app. Additive change.
#2.16.0
additional IPv4 addresses for tr-ist-1 servers: GET/POST /cloud/servers/{id}/ips, DELETE /cloud/servers/{id}/ips/{ip} (hourly from the prepaid balance, default 2 EUR per address-month, up to 5 per server; configured on the server automatically).
#2.15.0
custom templates for tr-ist-1 servers: capture a server (POST /cloud/servers/{id}/templates), list / rename / delete, new server (POST /cloud/templates/{id}/servers) or reinstall (POST /cloud/templates/{id}/rebuild) from it. 0.05 EUR per GB-month (prepaid, hourly). No image upload.
#2.14.0
tr-ist-1 servers on Gyro Compute: SSH keys (up to 10) and user_data at creation through cloud-init (~25 s to SSH), reset action, rebuild with user_data, real snapshot ids, metrics (instant), browser console URL. Request / response shapes unchanged.
#2.13.1
Protected Storage (versioning + object lock / WORM): object_lock on bucket create, versions list / restore / undelete / delete, bucket default retention, per-version retention and legal hold, old version expiry, lock summary and scan. Standard Object Storage answers 409 feature_not_available on these.
#2.11.0
prepaid hourly billing from the account balance for Gyro Containers (ECS) and Gyro Cloud Istanbul (billing: prepaid on products and servers; /cloud/billing/balance|usage|statement/{month}|estimate|topup-url); /cloud/containers (Gyro Containers).
#2.10.0
region tr-ist-1 (Gyro Cloud Istanbul) on the same /cloud/servers endpoints, CLI commands and Terraform resources; GET /cloud/images?region=; SSH keys installed after first boot in tr-ist-1 (ssh_keys on the server).