Releases: G-Core/gcore-go
v0.32.0
We're excited to announce version 0.32.0!
Cloud
-
Kubernetes
- Added
IncludeCapacityparam toK8SFlavorListParamsfor flavor capacity info - Added
ClusterRebuildandClusterServerRebuildtask states - ⚠ BREAKING CHANGE:
K8SClusterKubeconfig.CreatedAtandExpiresAtchanged fromnullabletorequired
- Added
-
Load Balancers
- Added
AdminStateUpfield across all load balancer, listener, pool, and health monitor response and param types - ⚠ BREAKING CHANGE:
LoadBalancerNewParamsListener.SecretIDchanged fromparam.Opt[string]tostringwith empty-string enum validation - ⚠ BREAKING CHANGE:
LoadBalancerListenerNewParams.SecretIDchanged fromparam.Opt[string]toLoadBalancerListenerNewParamsSecretIDstring type - Deprecated
LoadBalancers.Update()— use PATCH/v2/loadbalancers/...instead - Deprecated
NetworkRouters.Update()— use PATCH/v2/routers/...instead
- Added
CDN
-
CDN Resources
- Added
DeactivateAndDelete()convenience method — deactivates a CDN resource then deletes it - ⚠ BREAKING CHANGE:
CDNResourceNewParams.Originchanged fromstring(required) toparam.Opt[string](optional) - ⚠ BREAKING CHANGE:
CDNResourceNewParams.OriginGroupchanged fromint64(required) toparam.Opt[int64](optional) — exactly one ofOriginorOriginGroupmust be provided
- Added
-
Logs Uploader
- Added
Endpointfield to S3 OSS config — custom S3 endpoint now supported inLogsUploaderTargetand related params
- Added
FastEdge
- ⚠ BREAKING CHANGE:
App.Storestype changed frommap[string]int64tomap[string]AppStore— stores now carryID,Name, andComment - ⚠ BREAKING CHANGE:
KvStoreresponse restructured —IDfield removed,Nameis now primary identifier,Updatedrenamed toUpdatedAt, addedRevisionandSizefields - ⚠ BREAKING CHANGE:
KvStoreService.Newreturn type changed from*KvStoreto*KvStoreNewResponse - ⚠ BREAKING CHANGE:
KvStoreService.Getreturn type changed from*KvStoreGetResponseto*KvStore - ⚠ BREAKING CHANGE: Removed
KvStoreStatsandKvStoreGetResponsetypes - ⚠ BREAKING CHANGE: Removed
AppLimit,DailyLimit,HourlyLimitfields fromClienttype - Renamed "KV Storage" to "Edge Storage" across all endpoints
- Added
storeas newTemplateParameterDataTypeenum value
WAAP
- Domain Statistics
- Added
DecisionandOptionalActionfields toWaapRequestDetailsandWaapRequestSummary - Added
DomainIDfield toWaapRequestSummary - Deprecated
DomainStatistics.GetTrafficSeries()— useGET /v1/analytics/trafficinstead
- Added
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
v0.31.0
We're excited to announce version 0.31.0!
CDN
-
API Naming
- ⚠ BREAKING CHANGE: Renamed all
Cdn*types toCDN*for consistent Go naming conventions -CdnServiceis nowCDNService,CdnAccountis nowCDNAccount,CdnAccountLimitsis nowCDNAccountLimits, etc. - ⚠ BREAKING CHANGE: Renamed
Resourcesservice toCDNResources- access CDN resources viaclient.CDN.CDNResourcesinstead ofclient.CDN.Resources
- ⚠ BREAKING CHANGE: Renamed all
-
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
- Added regex pattern support - you can now use regular expressions in User-Agent ACL rules with
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
- Fixed cluster ID extraction in
WAAP
- Domain Statistics
- Deprecated
GetRequestsSeries()andGetRequestsSeriesAutoPaging()methods - use the new/v1/analytics/requestsendpoint instead - Updated action filter values - changed from "block", "captcha", "handshake", "monitor" to "allow", "block", "captcha", "handshake"
- Deprecated
SDK
- Parameters
- Added
param.SetJSON()helper - convenient function for setting JSON values in request parameters
- Added
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
v0.30.0
We're excited to announce version 0.30.0!
Cloud
-
Security Groups
- ⚠ BREAKING CHANGE: Migrated to v2 API endpoints -
New()andUpdate()methods now use/v2/security_groups/endpoints and return*TaskIDListinstead of*SecurityGroup - ⚠ BREAKING CHANGE: Simplified
SecurityGroupNewParamsstructure - removed nestedSecurityGroupwrapper;Name,Description,Rules, andTagsare now top-level fields - ⚠ BREAKING CHANGE: Renamed rule type from
SecurityGroupNewParamsSecurityGroupSecurityGroupRuletoSecurityGroupNewParamsRule - ⚠ BREAKING CHANGE: Changed
Update()to use declarative rules -ChangedRulesreplaced withRulesfield; specify the complete desired state instead of create/delete actions - ⚠ BREAKING CHANGE: Renamed
SecurityGroupUpdateParamsChangedRuletoSecurityGroupUpdateParamsRuleand removedActionandSecurityGroupRuleIDfields - 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
- ⚠ BREAKING CHANGE: Migrated to v2 API endpoints -
-
Floating IPs
- ⚠ BREAKING CHANGE: Migrated
Update()to v2 API endpoint - now uses/v2/floatingips/and returns*TaskIDListinstead of*FloatingIP - ⚠ BREAKING CHANGE: Added
PortIDandFixedIPAddressfields toFloatingIPUpdateParams- use these for assignment operations instead of the deprecatedAssign()method - Deprecated
Update()v1 method - use the new v2 endpoint viaUpdate()orUpdateAndPoll() - Deprecated
Assign()method - useUpdate()withPortIDfield instead - Deprecated
Unassign()method - useUpdate()withPortIDset 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 handlesWithResponseBodyIntooption and clears request body for subsequent calls - Fixed error message in
NewAndPoll()- now correctly reports "floating IP" instead of "network"
- ⚠ BREAKING CHANGE: Migrated
-
File Shares
- Fixed filter options handling in polling methods (
NewAndPoll(),UpdateAndPoll(),DeleteAndPoll(),ResizeAndPoll()) - properly handlesWithResponseBodyIntooption and clears request body for subsequent calls
- Fixed filter options handling in polling methods (
-
Routers
- Deprecated
Update()v1 method - use the v2 endpoint/v2/routers/{project_id}/{region_id}/{router_id}instead
- Deprecated
-
Tasks
- Added
update_floating_ipandupdate_routertask types toTaskListParams- filter tasks by these new operation types
- Added
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
v0.29.0
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 withList(),Get(),Update(), andDelete()methods onVolumeSnapshotService - Added polling methods to
VolumeSnapshotService- wait for snapshot operations to complete withNewAndPoll()andDeleteAndPoll()
- Added volume snapshot support - create point-in-time snapshots of volumes with
-
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
- Fixed cluster ID extraction in
-
Instances
- ⚠ BREAKING CHANGE: Renamed instance flavor response types -
InstanceFlavorListResponseis nowInstanceFlavorList, andInstanceFlavorListResponseResultUnionis nowInstanceFlavorDetailedUnionfor theList()method
- ⚠ BREAKING CHANGE: Renamed instance flavor response types -
-
Load Balancers
- Fixed collection model types -
List()methods now return properly typed collection models withCountandResultsfields (affects load balancers, flavors, metrics, and status) - Added deprecation notices to listener timeout parameters -
TimeoutMemberConnectandTimeoutMemberDatainLoadBalancerListenerNewParamsandLoadBalancerListenerUpdateParamsnow recommend using pool-level timeout settings (pool.timeout_member_connectandpool.timeout_member_data) instead - Added
DefaultPoolIDfield support - attach listeners to existing pools during creation viaLoadBalancerListenerNewParams
- Fixed collection model types -
-
Kubernetes
- Fixed collection model types -
List()methods for clusters and cluster pools now return properly typed collection models withCountandResultsfields
- Fixed collection model types -
-
Security Groups
- Deprecated v1 API methods -
New()andUpdate()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 theNameparameter inSecurityGroupListParams
- Deprecated v1 API methods -
-
Quota Requests
- Added date range filtering - filter quota requests by creation date using
CreatedFromandCreatedToparameters inQuotaRequestListParams - Added request ID filtering - filter by specific request IDs using the
RequestIDsparameter inQuotaRequestListParams
- Added date range filtering - filter quota requests by creation date using
-
Inference Deployments
- Fixed
RegionIDparameter type - changed fromparam.Opt[int64]toint64inInferenceDeploymentUpdateParamsContainerfor proper required field handling
- Fixed
-
Networks
- Fixed collection model types -
List()methods for routers, subnets, and placement groups now return properly typed collection models
- Fixed collection model types -
-
Cost Reports
- Fixed collection model types -
List()methods now return properly typed collection models
- Fixed collection model types -
-
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, andLangfields are now required inUserUpdateParams - ⚠ BREAKING CHANGE: Changed
Emailfield type fromparam.Opt[string]tostring(required) inUserUpdateParams - ⚠ BREAKING CHANGE: Removed
Groupsparameter - group assignments can no longer be updated via theUpdate()method, use dedicated group management endpoints instead - Removed
Companyfield - no longer supported inUserUpdateParams
- ⚠ BREAKING CHANGE: Updated
DNS
-
Zones
- Added
Enabledfield to zone responses - indicates whether a DNS zone is enabled or disabled inZoneListResponseZoneandZoneGetResponse - Improved
Metafield type safety - changed fromanytomap[string]anyfor better type checking when working with zone metadata - Simplified zone get response structure - removed nested
Zonewrapper inZoneGetResponse, zone data is now at the top level for easier access - Removed
ClientIDfield fromZoneGetResponse- use zone-level properties instead
- Added
-
Resource Record Sets
- Updated RRSet type definitions for improved type safety
CDN
- Logs Uploader Policies
- Added
EscapeSpecialCharactersfield toLogsUploaderPolicy- enable automatic sanitization of special characters in log values (control characters, quotation marks, non-ASCII characters) for safer transport and processing - Added
FormatTypeenum - properly typed format type field withLogsUploaderPolicyFormatTypeenum containing supported values:"json"for JSON lines output and""(empty) to use policy format configurations
- Added
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/checkoutversion (317a1f1)
v0.28.0
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
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
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
GPUVirtualClusterstoGPUVirtual.Clusters - ⚠ BREAKING CHANGE: Moved GPU baremetal cluster interface attach/detach methods -
AttachInterface()andDetachInterface()have been moved fromGPUBaremetalClusterServerServicetoGPUBaremetalClusterInterfaceService - Added
ImageIDfield toGPUBaremetalCluster- now includes the image ID used by the cluster
- ⚠ BREAKING CHANGE: Restructured GPU virtual clusters API - all methods have been moved from
-
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
- Added
-
Load Balancers
- Enhanced load balancer listener creation - added
DefaultPoolIDparameter to attach listener to an existing pool during creation
- Enhanced load balancer listener creation - added
DNS
- Network Mappings
- Improved type safety - changed
Cidr4andCidr6fields from[]anyto[]stringinDNSMappingEntryandDNSMappingEntryParam - Removed
IDfield fromDNSNetworkMappingParam(read-only field should not be in request parameters)
- Improved type safety - changed
Client
- Fixed marshaling of embedded structs - properly handle embedded structs that implement
json.Marshalerinterface
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
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
- ⚠ BREAKING CHANGE: Streamlined VIP connected and candidate ports API - methods have been reorganized into sub-services for better structure:
-
Kubernetes
- Fixed
NewAndPoll()for k8s clusters and pools - now correctly usesparams.Nameto retrieve created resources instead of attempting to extract the name from task-created resources
- Fixed
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
v0.24.0
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
v0.23.0
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
Bug Fixes
- cloud: remove flavor.ReservedInStock reference in examples (796f842)