Skip to content

Releases: G-Core/gcore-go

v0.32.0

11 Feb 14:44

Choose a tag to compare

We're excited to announce version 0.32.0!

Cloud

  • Kubernetes

    • Added IncludeCapacity param to K8SFlavorListParams for flavor capacity info
    • Added ClusterRebuild and ClusterServerRebuild task states
    • ⚠ BREAKING CHANGE: K8SClusterKubeconfig.CreatedAt and ExpiresAt changed from nullable to required
  • Load Balancers

    • Added AdminStateUp field across all load balancer, listener, pool, and health monitor response and param types
    • ⚠ BREAKING CHANGE: LoadBalancerNewParamsListener.SecretID changed from param.Opt[string] to string with empty-string enum validation
    • ⚠ BREAKING CHANGE: LoadBalancerListenerNewParams.SecretID changed from param.Opt[string] to LoadBalancerListenerNewParamsSecretID string type
    • Deprecated LoadBalancers.Update() — use PATCH /v2/loadbalancers/... instead
    • Deprecated NetworkRouters.Update() — use PATCH /v2/routers/... instead

CDN

  • CDN Resources

    • Added DeactivateAndDelete() convenience method — deactivates a CDN resource then deletes it
    • ⚠ BREAKING CHANGE: CDNResourceNewParams.Origin changed from string (required) to param.Opt[string] (optional)
    • ⚠ BREAKING CHANGE: CDNResourceNewParams.OriginGroup changed from int64 (required) to param.Opt[int64] (optional) — exactly one of Origin or OriginGroup must be provided
  • Logs Uploader

    • Added Endpoint field to S3 OSS config — custom S3 endpoint now supported in LogsUploaderTarget and related params

FastEdge

  • ⚠ BREAKING CHANGE: App.Stores type changed from map[string]int64 to map[string]AppStore — stores now carry ID, Name, and Comment
  • ⚠ BREAKING CHANGE: KvStore response restructured — ID field removed, Name is now primary identifier, Updated renamed to UpdatedAt, added Revision and Size fields
  • ⚠ BREAKING CHANGE: KvStoreService.New return type changed from *KvStore to *KvStoreNewResponse
  • ⚠ BREAKING CHANGE: KvStoreService.Get return type changed from *KvStoreGetResponse to *KvStore
  • ⚠ BREAKING CHANGE: Removed KvStoreStats and KvStoreGetResponse types
  • ⚠ BREAKING CHANGE: Removed AppLimit, DailyLimit, HourlyLimit fields from Client type
  • Renamed "KV Storage" to "Edge Storage" across all endpoints
  • Added store as new TemplateParameterDataType enum value

WAAP

  • Domain Statistics
    • Added Decision and OptionalAction fields to WaapRequestDetails and WaapRequestSummary
    • Added DomainID field to WaapRequestSummary
    • Deprecated DomainStatistics.GetTrafficSeries() — use GET /v1/analytics/traffic instead

0.32.0 (2026-02-11)

Full Changelog: v0.31.0...v0.32.0

Features

  • api: aggregated API specs update (43d8e07)
  • api: aggregated API specs update (2ed4eeb)
  • api: aggregated API specs update (6c723d4)
  • api: aggregated API specs update (da2aaac)
  • api: aggregated API specs update (825af96)
  • api: aggregated API specs update (ffe5a60)
  • api: aggregated API specs update (0d7e3ab)
  • cdn: add DeactivateAndDelete method to CDNResourceService (1b71860)

Bug Fixes

  • cdn: use param.NewOpt for CDN resource OriginGroup field (#190) (37f2c5d)
  • encoder: correctly serialize NullStruct (7a17796)
  • fastedge: remove readOnly name from app_store required fields (191b1cc)
  • types: correctly define false enum (c8610c6)

v0.31.0

30 Jan 16:51

Choose a tag to compare

We're excited to announce version 0.31.0!

CDN

  • API Naming

    • ⚠ BREAKING CHANGE: Renamed all Cdn* types to CDN* for consistent Go naming conventions - CdnService is now CDNService, CdnAccount is now CDNAccount, CdnAccountLimits is now CDNAccountLimits, etc.
    • ⚠ BREAKING CHANGE: Renamed Resources service to CDNResources - access CDN resources via client.CDN.CDNResources instead of client.CDN.Resources
  • User-Agent ACL

    • Added regex pattern support - you can now use regular expressions in User-Agent ACL rules with ~ (case-sensitive) or ~* (case-insensitive) prefix

Cloud

  • GPU Cloud
    • Fixed cluster ID extraction in NewAndPoll() for GPU baremetal clusters - properly extracts cluster ID from response
    • Added GPU Cloud examples demonstrating usage patterns

WAAP

  • Domain Statistics
    • Deprecated GetRequestsSeries() and GetRequestsSeriesAutoPaging() methods - use the new /v1/analytics/requests endpoint instead
    • Updated action filter values - changed from "block", "captcha", "handshake", "monitor" to "allow", "block", "captcha", "handshake"

SDK

  • Parameters
    • Added param.SetJSON() helper - convenient function for setting JSON values in request parameters

0.31.0 (2026-01-30)

Full Changelog: v0.30.0...v0.31.0

⚠ BREAKING CHANGES

  • cdn: rename resource to cdn_resource
  • api: change type casing from Cdn* to CDN*

Features

  • api: aggregated API specs update (daa7b60)
  • api: aggregated API specs update (6131945)
  • api: manual upload of aggregated API specs (0564f05)
  • client: add a convenient param.SetJSON helper (a7dd1da)
  • cloud: add gpu cloud examples (0cd51b2)

Bug Fixes

  • cloud: extraction of clusterID in NewAndPoll for GPU baremetal clusters (be114b2)

Refactors

  • cdn: rename resource to cdn_resource (28a5dce)
  • cdn: change type casing from Cdn* to CDN* (c2a9319)

v0.30.0

22 Jan 15:33

Choose a tag to compare

We're excited to announce version 0.30.0!

Cloud

  • Security Groups

    • ⚠ BREAKING CHANGE: Migrated to v2 API endpoints - New() and Update() methods now use /v2/security_groups/ endpoints and return *TaskIDList instead of *SecurityGroup
    • ⚠ BREAKING CHANGE: Simplified SecurityGroupNewParams structure - removed nested SecurityGroup wrapper; Name, Description, Rules, and Tags are now top-level fields
    • ⚠ BREAKING CHANGE: Renamed rule type from SecurityGroupNewParamsSecurityGroupSecurityGroupRule to SecurityGroupNewParamsRule
    • ⚠ BREAKING CHANGE: Changed Update() to use declarative rules - ChangedRules replaced with Rules field; specify the complete desired state instead of create/delete actions
    • ⚠ BREAKING CHANGE: Renamed SecurityGroupUpdateParamsChangedRule to SecurityGroupUpdateParamsRule and removed Action and SecurityGroupRuleID fields
    • Added NewAndPoll() method - creates a security group and waits for the operation to complete
    • Added UpdateAndPoll() method - updates a security group and waits for the operation to complete
  • Floating IPs

    • ⚠ BREAKING CHANGE: Migrated Update() to v2 API endpoint - now uses /v2/floatingips/ and returns *TaskIDList instead of *FloatingIP
    • ⚠ BREAKING CHANGE: Added PortID and FixedIPAddress fields to FloatingIPUpdateParams - use these for assignment operations instead of the deprecated Assign() method
    • Deprecated Update() v1 method - use the new v2 endpoint via Update() or UpdateAndPoll()
    • Deprecated Assign() method - use Update() with PortID field instead
    • Deprecated Unassign() method - use Update() with PortID set to null instead
    • Added UpdateAndPoll() method - updates a floating IP and waits for the operation to complete
    • Fixed filter options handling in polling methods (NewAndPoll(), UpdateAndPoll(), DeleteAndPoll()) - properly handles WithResponseBodyInto option and clears request body for subsequent calls
    • Fixed error message in NewAndPoll() - now correctly reports "floating IP" instead of "network"
  • File Shares

    • Fixed filter options handling in polling methods (NewAndPoll(), UpdateAndPoll(), DeleteAndPoll(), ResizeAndPoll()) - properly handles WithResponseBodyInto option and clears request body for subsequent calls
  • Routers

    • Deprecated Update() v1 method - use the v2 endpoint /v2/routers/{project_id}/{region_id}/{router_id} instead
  • Tasks

    • Added update_floating_ip and update_router task types to TaskListParams - filter tasks by these new operation types

0.30.0 (2026-01-22)

Full Changelog: v0.29.0...v0.30.0

⚠ BREAKING CHANGES

  • cloud: use create and update v2 endpoints for security groups
  • cloud: use v2 endpoint for floating IPs updates

Features

  • api: aggregated API specs update (cbbe4ca)
  • api: aggregated API specs update (58d174c)
  • api: aggregated API specs update (78a097d)
  • cloud: add polling methods for security groups (a95ce62)
  • cloud: add UpdateAndPoll method for floating IPs (c71ea15)
  • cloud: use create and update v2 endpoints for security groups (25f9183)
  • cloud: use v2 endpoint for floating IPs updates (b20c495)

Bug Fixes

  • cloud: filter options correctly in file share polling methods (5a0b54e)
  • cloud: filter options correctly in floating IP polling methods (3d9d77f)

v0.29.0

19 Jan 17:05

Choose a tag to compare

We're excited to announce version 0.29.0!

Cloud

  • Volumes

    • Added volume snapshot support - create point-in-time snapshots of volumes with New(), manage them with List(), Get(), Update(), and Delete() methods on VolumeSnapshotService
    • Added polling methods to VolumeSnapshotService - wait for snapshot operations to complete with NewAndPoll() and DeleteAndPoll()
  • GPU Cloud

    • Fixed cluster ID extraction in NewAndPoll() for GPU virtual clusters - properly extracts cluster ID from the API response when creating clusters with polling
  • Instances

    • ⚠ BREAKING CHANGE: Renamed instance flavor response types - InstanceFlavorListResponse is now InstanceFlavorList, and InstanceFlavorListResponseResultUnion is now InstanceFlavorDetailedUnion for the List() method
  • Load Balancers

    • Fixed collection model types - List() methods now return properly typed collection models with Count and Results fields (affects load balancers, flavors, metrics, and status)
    • Added deprecation notices to listener timeout parameters - TimeoutMemberConnect and TimeoutMemberData in LoadBalancerListenerNewParams and LoadBalancerListenerUpdateParams now recommend using pool-level timeout settings (pool.timeout_member_connect and pool.timeout_member_data) instead
    • Added DefaultPoolID field support - attach listeners to existing pools during creation via LoadBalancerListenerNewParams
  • Kubernetes

    • Fixed collection model types - List() methods for clusters and cluster pools now return properly typed collection models with Count and Results fields
  • Security Groups

    • Deprecated v1 API methods - New() and Update() methods are now deprecated in favor of v2 endpoints (/v2/security_groups/<project_id>/<region_id>)
    • Added name filtering to List() - filter security groups by exact name match using the Name parameter in SecurityGroupListParams
  • Quota Requests

    • Added date range filtering - filter quota requests by creation date using CreatedFrom and CreatedTo parameters in QuotaRequestListParams
    • Added request ID filtering - filter by specific request IDs using the RequestIDs parameter in QuotaRequestListParams
  • Inference Deployments

    • Fixed RegionID parameter type - changed from param.Opt[int64] to int64 in InferenceDeploymentUpdateParamsContainer for proper required field handling
  • Networks

    • Fixed collection model types - List() methods for routers, subnets, and placement groups now return properly typed collection models
  • Cost Reports

    • Fixed collection model types - List() methods now return properly typed collection models
  • Regions

    • Updated region response types for improved type safety
  • Audit Logs

    • Updated audit log response types for improved type definitions
  • Tasks

    • Updated task type definitions for better type safety

IAM

  • Users
    • ⚠ BREAKING CHANGE: Updated Update() method parameters - Name, Phone, AuthTypes, Email, and Lang fields are now required in UserUpdateParams
    • ⚠ BREAKING CHANGE: Changed Email field type from param.Opt[string] to string (required) in UserUpdateParams
    • ⚠ BREAKING CHANGE: Removed Groups parameter - group assignments can no longer be updated via the Update() method, use dedicated group management endpoints instead
    • Removed Company field - no longer supported in UserUpdateParams

DNS

  • Zones

    • Added Enabled field to zone responses - indicates whether a DNS zone is enabled or disabled in ZoneListResponseZone and ZoneGetResponse
    • Improved Meta field type safety - changed from any to map[string]any for better type checking when working with zone metadata
    • Simplified zone get response structure - removed nested Zone wrapper in ZoneGetResponse, zone data is now at the top level for easier access
    • Removed ClientID field from ZoneGetResponse - use zone-level properties instead
  • Resource Record Sets

    • Updated RRSet type definitions for improved type safety

CDN

  • Logs Uploader Policies
    • Added EscapeSpecialCharacters field to LogsUploaderPolicy - enable automatic sanitization of special characters in log values (control characters, quotation marks, non-ASCII characters) for safer transport and processing
    • Added FormatType enum - properly typed format type field with LogsUploaderPolicyFormatType enum containing supported values: "json" for JSON lines output and "" (empty) to use policy format configurations

0.29.0 (2026-01-19)

Full Changelog: v0.28.0...v0.29.0

⚠ BREAKING CHANGES

  • cloud: rename instance flavor model

Features

  • api: aggregated API specs update (829c406)
  • api: aggregated API specs update (5350d10)
  • api: aggregated API specs update (13c4492)
  • api: aggregated API specs update (16c7802)
  • api: aggregated API specs update (07744bb)
  • api: aggregated API specs update (9b8f671)
  • api: aggregated API specs update (f4105db)
  • api: aggregated API specs update (f526e50)
  • api: aggregated API specs update (7d99890)
  • api: aggregated API specs update (bd91bd3)
  • cloud: add polling methods to volume snapshot (0aa60dc)
  • cloud: add support for volume snapshots (7c7a8fa)

Bug Fixes

  • cloud: extraction of clusterID in NewAndPoll for GPU virtual clusters (e2cdc36)
  • cloud: rename instance flavor model (4484199)
  • docs: add missing pointer prefix to api.md return types (ca0d973)
  • use correct collection models (1c0ea66)

Chores

  • internal: update actions/checkout version (317a1f1)

v0.28.0

30 Dec 11:44

Choose a tag to compare

We're excited to announce version 0.28.0!

IAM

  • API Tokens
    • ⚠ BREAKING CHANGE: Response type renamed from APITokenCreate to APITokenCreated for the New() method
  • Users
    • ⚠ BREAKING CHANGE: Response type renamed from UserUpdate to UserUpdated for the Update() method

Cloud

  • SSH Keys
    • ⚠ BREAKING CHANGE: Response type renamed from SSHKeyCreate to SSHKeyCreated for the New() method
  • User Role Assignments
    • ⚠ BREAKING CHANGE: Response type renamed from RoleAssignmentUpdateDelete to RoleAssignmentUpdatedDeleted for the Update() and Delete() methods
  • Inference API Keys
    • ⚠ BREAKING CHANGE: Response type renamed from InferenceAPIKeyCreate to InferenceAPIKeyCreated for the New() method
  • Registry Users
    • ⚠ BREAKING CHANGE: Response type renamed from RegistryUserCreate to RegistryUserCreated for the New() and NewMultiple() methods

CDN

  • Resource Shield
    • ⚠ BREAKING CHANGE: Response type renamed from OriginShieldingReplace to OriginShieldingReplaced for the Replace() method

Streaming

  • Playlists
    • ⚠ BREAKING CHANGE: Response type renamed from PlaylistCreate to PlaylistCreated for the New() method

0.28.0 (2025-12-30)

Full Changelog: v0.27.0...v0.28.0

⚠ BREAKING CHANGES

  • change naming for POST, PUT, PATCH, DELETE models

Chores

  • change naming for POST, PUT, PATCH, DELETE models (d497626)

v0.27.0

30 Dec 10:22

Choose a tag to compare

We're excited to announce version 0.27.0!

Cloud

  • GPU Cloud
    • ⚠ BREAKING CHANGE: Restructured GPU baremetal clusters API - all methods have been moved from GPUBaremetalClusters to GPUBaremetal.Clusters (e.g., client.Cloud.GPUBaremetalClusters.New() is now client.Cloud.GPUBaremetal.Clusters.New(), and all sub-services like Interfaces, Servers, Flavors, and Images are now nested under GPUBaremetal.Clusters)

0.27.0 (2025-12-30)

Full Changelog: v0.26.0...v0.27.0

⚠ BREAKING CHANGES

  • cloud: restructure to be gpu_baremetal.clusters

Features

  • cloud: restructure to be gpu_baremetal.clusters (5f8fff8)

v0.26.0

23 Dec 12:01

Choose a tag to compare

We're excited to announce version 0.26.0!

Cloud

  • GPU Cloud

    • ⚠ BREAKING CHANGE: Restructured GPU virtual clusters API - all methods have been moved from GPUVirtualClusters to GPUVirtual.Clusters
    • ⚠ BREAKING CHANGE: Moved GPU baremetal cluster interface attach/detach methods - AttachInterface() and DetachInterface() have been moved from GPUBaremetalClusterServerService to GPUBaremetalClusterInterfaceService
    • Added ImageID field to GPUBaremetalCluster - now includes the image ID used by the cluster
  • Kubernetes

    • Added CheckQuota() method to k8s cluster pools - calculate quota requirements for a new cluster pool before creation, returns exceeded quotas if regional limits would be violated
  • Load Balancers

    • Enhanced load balancer listener creation - added DefaultPoolID parameter to attach listener to an existing pool during creation

DNS

  • Network Mappings
    • Improved type safety - changed Cidr4 and Cidr6 fields from []any to []string in DNSMappingEntry and DNSMappingEntryParam
    • Removed ID field from DNSNetworkMappingParam (read-only field should not be in request parameters)

Client

  • Fixed marshaling of embedded structs - properly handle embedded structs that implement json.Marshaler interface

0.26.0 (2025-12-23)

Full Changelog: v0.25.0...v0.26.0

⚠ BREAKING CHANGES

  • cloud: move methods to gpu_baremetal_clusters.interfaces.attach()/detach()
  • cloud: restructure to be gpu_virtual.clusters

Features

  • api: aggregated API specs update (84c4ada)
  • api: aggregated API specs update (d92461c)
  • cloud: add k8s cluster pools check quotas method (80b7d5c)

Bug Fixes

  • client: properly marshal embedded structs (e4ed37f)
  • cloud: move methods to gpu_baremetal_clusters.interfaces.attach()/detach() (5acef4d)
  • cloud: restructure to be gpu_virtual.clusters (b858bb0)

Chores

  • add float64 to valid types for RegisterFieldValidator (6cf2379)

v0.25.0

15 Dec 09:23

Choose a tag to compare

We're excited to announce version 0.25.0!

Cloud

  • Reserved Fixed IPs

    • ⚠ BREAKING CHANGE: Streamlined VIP connected and candidate ports API - methods have been reorganized into sub-services for better structure:
      • ListCandidatePorts()CandidatePorts.List()
      • ListConnectedPorts()ConnectedPorts.List()
      • ReplaceConnectedPorts()ConnectedPorts.Replace()
      • UpdateConnectedPorts()ConnectedPorts.Add() (renamed from Update to Add)
    • Fixed VIP examples to use the new API structure
  • Kubernetes

    • Fixed NewAndPoll() for k8s clusters and pools - now correctly uses params.Name to retrieve created resources instead of attempting to extract the name from task-created resources

Client

  • Encoder
    • Added support for bracket encoding form-data object members - nested objects can now be encoded using bracket notation

0.25.0 (2025-12-15)

Full Changelog: v0.24.0...v0.25.0

⚠ BREAKING CHANGES

  • cloud: streamline vip connected and candidate ports

Features

  • encoder: support bracket encoding form-data object members (500138a)

Bug Fixes

  • cloud: fix vip examples (ddcaf80)
  • cloud: streamline vip connected and candidate ports (893c324)
  • cloud: use params.Name to get k8s clusters/pools in NewAndPoll (6e21232)

v0.24.0

10 Dec 15:23

Choose a tag to compare

We're excited to announce version 0.24.0!

Cloud

  • Kubernetes
    • Added polling methods to K8s clusters and pools
  • Load Balancers
    • ⚠ BREAKING CHANGE: Replaced L7 policy ReplaceAndPoll() with UpdateAndPoll()
    • ⚠ BREAKING CHANGE: Replaced PUT /cloud/v1/l7policies with PATCH
    • ⚠ BREAKING CHANGE: Renamed load balancer pool member methods to Create/Delete (previously Add/Remove)
    • Adapted load balancer pool member polling methods to correspond to their base counterparts
  • Registry Users
    • ⚠ BREAKING CHANGE: Streamlined naming for create/replace models
  • SSH Keys
    • ⚠ BREAKING CHANGE: Streamlined naming for create/replace models
  • Projects
    • Updated to use PATCH /cloud/v1/projects
    • Fixed type in cloud projects example

CDN

  • Audit Logs
    • ⚠ BREAKING CHANGE: Streamlined AuditLogs naming conventions
  • Origin Shielding
    • ⚠ BREAKING CHANGE: Streamlined naming for create/replace models

DNS

  • Network Mappings
    • Added NetworkMappingService with full CRUD operations for managing DNS network mappings

0.24.0 (2025-12-10)

Full Changelog: v0.23.0...v0.24.0

⚠ BREAKING CHANGES

  • cloud: replace load balancer L7 policy ReplaceAndPoll() with UpdateAndPoll()
  • cloud: replace PUT /cloud/v1/l7policies with PATCH
  • cdn: streamline audit_logs naming
  • cloud: rename load balancer pool member methods to create/delete
  • streamline naming for create/replace models

Features

  • api: aggregated API specs update (a9492d3)
  • api: aggregated API specs update (da031f6)
  • api: aggregated API specs update (5c06188)
  • api: aggregated API specs update (c48a0d6)
  • api: aggregated API specs update (5a59bd7)
  • cloud: add polling methods to k8s clusters and pools (9e741e1)
  • dns: enable terraform code generation for gcore_dns_network_mapping (6fc50fb)

Bug Fixes

  • cdn: streamline audit_logs naming (61061a9)
  • cloud: adapt load balancer pool member *AndPoll methods to correspond to its base counterparts (47c2505)
  • cloud: fix type in cloud projects example (21336c1)
  • cloud: rename load balancer pool member methods to create/delete (1ac24e7)
  • cloud: replace load balancer L7 policy ReplaceAndPoll() with UpdateAndPoll() (f976275)
  • cloud: replace PUT /cloud/v1/l7policies with PATCH (76ce329)
  • cloud: use PATCH /cloud/v1/projects (01cf2e0)
  • mcp: correct code tool API endpoint (b15bf97)
  • rename param to avoid collision (b37c90a)
  • streamline naming for create/replace models (f167858)

Chores

  • elide duplicate aliases (15ed877)
  • internal: codegen related update (ff89ad2)

v0.23.0

01 Dec 13:05

Choose a tag to compare

We're excited to announce version 0.23.0!

Cloud

  • Baremetal
    • ⚠ BREAKING CHANGE: Removed BaremetalFlavor.ReservedInStock field
    • Updated AppConfig parameter to use typed map instead of any
  • Load Balancers
    • Updated LoadBalancerFlavorDetail.HardwareDescription to use union type for better type safety
    • Updated LoadBalancerListenerDetail.InsertHeaders to use typed map instead of any
  • Instances
    • Updated Configuration parameter to use typed map instead of any
  • Regions
    • Updated RegionCoordinates.Latitude and RegionCoordinates.Longitude to support both float64 and string types via union types
  • Security Groups
    • Improved parameter documentation for SecurityGroupNewParams and SecurityGroupListParams
    • Updated documentation for ProjectID, RegionID, Limit, Offset, TagKeyValue, and TagKey parameters
  • Audit Logs
    • Updated AuditLogEntry.ActionData to use typed map instead of any
    • Updated AuditLogEntryResource.ResourceBody to use typed map instead of any
  • Billing Reservations
    • Improved MetricName parameter documentation with example

0.23.0 (2025-12-01)

Full Changelog: v0.22.0...v0.23.0

Features

  • api: aggregated API specs update (1113ddf)
  • api: aggregated API specs update (c1a50c9)

Bug Fixes

  • cloud: remove flavor.ReservedInStock reference in examples (796f842)