Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package hcloud-cli for openSUSE:Factory 
checked in at 2026-01-26 11:06:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hcloud-cli (Old)
 and      /work/SRC/openSUSE:Factory/.hcloud-cli.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "hcloud-cli"

Mon Jan 26 11:06:24 2026 rev:15 rq:1329118 version:1.61.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/hcloud-cli/hcloud-cli.changes    2026-01-17 
14:57:12.385339872 +0100
+++ /work/SRC/openSUSE:Factory/.hcloud-cli.new.1928/hcloud-cli.changes  
2026-01-26 11:06:27.360355243 +0100
@@ -1,0 +2,15 @@
+Mon Jan 26 06:22:27 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 1.61.0:
+  * Storage Boxes support is now generally available
+    The experimental phase for Storage Boxes is over, and Storage
+    Boxes support is now generally available.
+  * Features
+    - Storage Box support no longer experimental (#1267)
+    - server: allow specifying user-data for rebuild (#1319)
+  * Dependencies
+    - deps: update module github.com/hetznercloud/hcloud-go/v2 to
+      v2.36.0 (#1320)
+    - deps: update dependency jdx/mise to v2026.1.6 (#1316)
+
+-------------------------------------------------------------------

Old:
----
  hcloud-cli-1.60.0.obscpio

New:
----
  hcloud-cli-1.61.0.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ hcloud-cli.spec ++++++
--- /var/tmp/diff_new_pack.twOLD1/_old  2026-01-26 11:06:28.448400737 +0100
+++ /var/tmp/diff_new_pack.twOLD1/_new  2026-01-26 11:06:28.452400904 +0100
@@ -19,7 +19,7 @@
 %define executable_name hcloud
 
 Name:           hcloud-cli
-Version:        1.60.0
+Version:        1.61.0
 Release:        0
 Summary:        A command-line interface for Hetzner Cloud
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.twOLD1/_old  2026-01-26 11:06:28.484402242 +0100
+++ /var/tmp/diff_new_pack.twOLD1/_new  2026-01-26 11:06:28.488402409 +0100
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/hetznercloud/cli</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v1.60.0</param>
+    <param name="revision">v1.61.0</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.twOLD1/_old  2026-01-26 11:06:28.520403747 +0100
+++ /var/tmp/diff_new_pack.twOLD1/_new  2026-01-26 11:06:28.524403915 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/hetznercloud/cli</param>
-              <param 
name="changesrevision">b1697c7ebfc5cc33cafda3f462a03c36b718056c</param></service></servicedata>
+              <param 
name="changesrevision">398874d4c214639263781db3a22a4971e04c5e48</param></service></servicedata>
 (No newline at EOF)
 

++++++ hcloud-cli-1.60.0.obscpio -> hcloud-cli-1.61.0.obscpio ++++++
++++ 2299 lines of diff (skipped)

++++++ hcloud-cli.obsinfo ++++++
--- /var/tmp/diff_new_pack.twOLD1/_old  2026-01-26 11:06:29.152430174 +0100
+++ /var/tmp/diff_new_pack.twOLD1/_new  2026-01-26 11:06:29.156430341 +0100
@@ -1,5 +1,5 @@
 name: hcloud-cli
-version: 1.60.0
-mtime: 1768575222
-commit: b1697c7ebfc5cc33cafda3f462a03c36b718056c
+version: 1.61.0
+mtime: 1769178569
+commit: 398874d4c214639263781db3a22a4971e04c5e48
 

++++++ vendor.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/hcloud.go 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/hcloud.go
--- old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/hcloud.go    
2026-01-16 15:53:42.000000000 +0100
+++ new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/hcloud.go    
2026-01-23 15:29:29.000000000 +0100
@@ -7,6 +7,54 @@
 (or the RRS feed available at https://docs.hetzner.cloud/changelog/feed.rss) 
to be
 notified about additions, deprecations and removals.
 
+# Example
+
+       package main
+
+       import (
+               "context"
+               "fmt"
+               "log"
+
+               "github.com/hetznercloud/hcloud-go/v2/hcloud"
+               "github.com/hetznercloud/hcloud-go/v2/hcloud/exp/actionutil"
+       )
+
+       func main() {
+               ctx := context.Background()
+
+               client := hcloud.NewClient(
+                       hcloud.WithToken("token"),
+                       hcloud.WithApplication("my-tool", "v1.0.0"),
+               )
+
+               result, _, err := client.Server.Create(ctx, 
hcloud.ServerCreateOpts{
+                       Name:       "Foo",
+                       Image:      &hcloud.Image{Name: "ubuntu-24.0"},
+                       ServerType: &hcloud.ServerType{Name: "cpx22"},
+                       Location:   &hcloud.Location{Name: "hel1"},
+               })
+               if err != nil {
+                       log.Fatalf("error creating server: %s\n", err)
+               }
+
+               // Always await any returned actions, to make sure the async 
process is completed before you use the result:
+               err = client.Action.WaitFor(ctx, 
actionutil.AppendNext(result.Action, result.NextActions)...)
+               if err != nil {
+                       log.Fatalf("error creating server: %s\n", err)
+               }
+
+               server, _, err := client.Server.GetByID(ctx, result.Server.ID)
+               if err != nil {
+                       log.Fatalf("error retrieving server: %s\n", err)
+               }
+               if server != nil {
+                       fmt.Printf("server is called %q\n", server.Name) // 
prints 'server is called "Foo"'
+               } else {
+                       fmt.Println("server not found")
+               }
+       }
+
 # Retry mechanism
 
 The [Client.Do] method will retry failed requests that match certain criteria. 
The
@@ -32,4 +80,4 @@
 package hcloud
 
 // Version is the library's version following Semantic Versioning.
-const Version = "2.35.0" // x-releaser-pleaser-version
+const Version = "2.36.0" // x-releaser-pleaser-version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema/server.go 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema/server.go
--- old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema/server.go     
2026-01-16 15:53:42.000000000 +0100
+++ new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/schema/server.go     
2026-01-23 15:29:29.000000000 +0100
@@ -266,7 +266,8 @@
 // ServerActionRebuildRequest defines the schema for the request to
 // rebuild a server.
 type ServerActionRebuildRequest struct {
-       Image IDOrName `json:"image"`
+       Image    IDOrName `json:"image"`
+       UserData *string  `json:"user_data,omitempty"`
 }
 
 // ServerActionRebuildResponse defines the schema of the response when
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/server.go 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/server.go
--- old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/server.go    
2026-01-16 15:53:42.000000000 +0100
+++ new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/server.go    
2026-01-23 15:29:29.000000000 +0100
@@ -727,7 +727,8 @@
 
 // ServerRebuildOpts specifies options for rebuilding a server.
 type ServerRebuildOpts struct {
-       Image *Image
+       Image    *Image
+       UserData *string
 }
 
 // ServerRebuildResult is the result of a create server call.
@@ -754,7 +755,7 @@
 
        reqPath := fmt.Sprintf(opPath, server.ID)
 
-       reqBody := schema.ServerActionRebuildRequest{}
+       reqBody := schema.ServerActionRebuildRequest{UserData: opts.UserData}
        if opts.Image.ID != 0 || opts.Image.Name != "" {
                reqBody.Image = schema.IDOrName{ID: opts.Image.ID, Name: 
opts.Image.Name}
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/storage_box.go 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/storage_box.go
--- old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/storage_box.go       
2026-01-16 15:53:42.000000000 +0100
+++ new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/storage_box.go       
2026-01-23 15:29:29.000000000 +0100
@@ -91,8 +91,6 @@
 // StorageBoxClient is a client for the Storage Box API.
 //
 // See https://docs.hetzner.cloud/reference/hetzner#storage-boxes
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 type StorageBoxClient struct {
        client *Client
        Action *ResourceActionClient[*StorageBox]
@@ -101,8 +99,6 @@
 // GetByID retrieves a [StorageBox] by its ID. If the [StorageBox] does not 
exist, nil is returned.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-get-a-storage-box
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) GetByID(ctx context.Context, id int64) 
(*StorageBox, *Response, error) {
        const opPath = "/storage_boxes/%d"
        ctx = ctxutil.SetOpPath(ctx, opPath)
@@ -123,8 +119,6 @@
 // GetByName retrieves a [StorageBox] by its name. If the [StorageBox] does 
not exist, nil is returned.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-list-storage-boxes
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) GetByName(ctx context.Context, name string) 
(*StorageBox, *Response, error) {
        return firstByName(name, func() ([]*StorageBox, *Response, error) {
                return c.List(ctx, StorageBoxListOpts{Name: name})
@@ -136,8 +130,6 @@
 //
 // When fetching by ID, see 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-get-a-storage-box
 // When fetching by name, see 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-list-storage-boxes
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) Get(ctx context.Context, idOrName string) 
(*StorageBox, *Response, error) {
        return getByIDOrName(ctx, c.GetByID, c.GetByName, idOrName)
 }
@@ -166,8 +158,6 @@
 // when their value corresponds to their zero value or when they are empty.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-list-storage-boxes
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) List(ctx context.Context, opts StorageBoxListOpts) 
([]*StorageBox, *Response, error) {
        const opPath = "/storage_boxes?%s"
        ctx = ctxutil.SetOpPath(ctx, opPath)
@@ -185,8 +175,6 @@
 // All returns all [StorageBox].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-list-storage-boxes
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) All(ctx context.Context) ([]*StorageBox, error) {
        return c.AllWithOpts(ctx, StorageBoxListOpts{})
 }
@@ -194,8 +182,6 @@
 // AllWithOpts returns all [StorageBox] with the given options.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-list-storage-boxes
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) AllWithOpts(ctx context.Context, opts 
StorageBoxListOpts) ([]*StorageBox, error) {
        if opts.ListOpts.PerPage == 0 {
                opts.ListOpts.PerPage = 50
@@ -250,8 +236,6 @@
 // is sent to the API. They are not addressable by ID or name.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-create-a-storage-box
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) Create(ctx context.Context, opts 
StorageBoxCreateOpts) (StorageBoxCreateResult, *Response, error) {
        const opPath = "/storage_boxes"
        ctx = ctxutil.SetOpPath(ctx, opPath)
@@ -284,8 +268,6 @@
 // Update updates a [StorageBox] with the given options.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-update-a-storage-box
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) Update(ctx context.Context, storageBox *StorageBox, 
opts StorageBoxUpdateOpts) (*StorageBox, *Response, error) {
        const opPath = "/storage_boxes/%d"
        ctx = ctxutil.SetOpPath(ctx, opPath)
@@ -309,8 +291,6 @@
 // Delete deletes a [StorageBox].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-delete-a-storage-box
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) Delete(ctx context.Context, storageBox *StorageBox) 
(StorageBoxDeleteResult, *Response, error) {
        const opPath = "/storage_boxes/%d"
        ctx = ctxutil.SetOpPath(ctx, opPath)
@@ -348,8 +328,6 @@
 // Folders lists folders in a [StorageBox].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-list-folders-of-a-storage-box
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) Folders(ctx context.Context, storageBox 
*StorageBox, opts StorageBoxFoldersOpts) (StorageBoxFoldersResult, *Response, 
error) {
        const opPath = "/storage_boxes/%d/folders?%s"
        ctx = ctxutil.SetOpPath(ctx, opPath)
@@ -376,8 +354,6 @@
 // ChangeProtection changes the protection level of a [StorageBox].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-actions-change-protection
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) ChangeProtection(ctx context.Context, storageBox 
*StorageBox, opts StorageBoxChangeProtectionOpts) (*Action, *Response, error) {
        const opPath = "/storage_boxes/%d/actions/change_protection"
        ctx = ctxutil.SetOpPath(ctx, opPath)
@@ -401,8 +377,6 @@
 // ChangeType changes the type of a [StorageBox].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-actions-change-type
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) ChangeType(ctx context.Context, storageBox 
*StorageBox, opts StorageBoxChangeTypeOpts) (*Action, *Response, error) {
        const opPath = "/storage_boxes/%d/actions/change_type"
        ctx = ctxutil.SetOpPath(ctx, opPath)
@@ -426,8 +400,6 @@
 // ResetPassword resets the password of a [StorageBox].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-actions-reset-password
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) ResetPassword(ctx context.Context, storageBox 
*StorageBox, opts StorageBoxResetPasswordOpts) (*Action, *Response, error) {
        const opPath = "/storage_boxes/%d/actions/reset_password"
        ctx = ctxutil.SetOpPath(ctx, opPath)
@@ -455,8 +427,6 @@
 // UpdateAccessSettings updates the [StorageBoxAccessSettings] of a 
[StorageBox].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-actions-update-access-settings
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) UpdateAccessSettings(ctx context.Context, 
storageBox *StorageBox, opts StorageBoxUpdateAccessSettingsOpts) (*Action, 
*Response, error) {
        const opPath = "/storage_boxes/%d/actions/update_access_settings"
        ctx = ctxutil.SetOpPath(ctx, opPath)
@@ -480,8 +450,6 @@
 // RollbackSnapshot rolls back a [StorageBox] to a [StorageBoxSnapshot].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-actions-rollback-snapshot
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) RollbackSnapshot(
        ctx context.Context,
        storageBox *StorageBox,
@@ -520,8 +488,6 @@
 // EnableSnapshotPlan enables a [StorageBoxSnapshotPlan] for a [StorageBox].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-actions-enable-snapshot-plan
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) EnableSnapshotPlan(
        ctx context.Context,
        storageBox *StorageBox,
@@ -544,8 +510,6 @@
 // DisableSnapshotPlan disables the [StorageBoxSnapshotPlan] for a 
[StorageBox].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-actions-disable-snapshot-plan
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) DisableSnapshotPlan(
        ctx context.Context,
        storageBox *StorageBox,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/storage_box_snapshot.go 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/storage_box_snapshot.go
--- 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/storage_box_snapshot.go  
    2026-01-16 15:53:42.000000000 +0100
+++ 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/storage_box_snapshot.go  
    2026-01-23 15:29:29.000000000 +0100
@@ -33,8 +33,6 @@
 // GetSnapshotByID gets a [StorageBoxSnapshot] by its ID.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-get-a-snapshot
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) GetSnapshotByID(ctx context.Context, storageBox 
*StorageBox, id int64) (*StorageBoxSnapshot, *Response, error) {
        const optPath = "/storage_boxes/%d/snapshots/%d"
        ctx = ctxutil.SetOpPath(ctx, optPath)
@@ -55,8 +53,6 @@
 // GetSnapshotByName gets a [StorageBoxSnapshot] by its name.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-list-snapshots
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) GetSnapshotByName(
        ctx context.Context,
        storageBox *StorageBox,
@@ -72,8 +68,6 @@
 //
 // When fetching by ID, see 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-get-a-snapshot
 // When fetching by name, see 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-list-snapshots
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) GetSnapshot(
        ctx context.Context,
        storageBox *StorageBox,
@@ -121,8 +115,6 @@
 // Pagination is not supported, so this will return all [StorageBoxSnapshot] 
at once.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-list-snapshots
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) ListSnapshots(
        ctx context.Context,
        storageBox *StorageBox,
@@ -144,8 +136,6 @@
 // AllSnapshotsWithOpts lists all [StorageBoxSnapshot] of a [StorageBox] with 
the given options.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-list-snapshots
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) AllSnapshotsWithOpts(
        ctx context.Context,
        storageBox *StorageBox,
@@ -158,8 +148,6 @@
 // AllSnapshots lists all [StorageBoxSnapshot] of a [StorageBox] without any 
options.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-list-snapshots
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) AllSnapshots(
        ctx context.Context,
        storageBox *StorageBox,
@@ -184,8 +172,6 @@
 // CreateSnapshot creates a new [StorageBoxSnapshot] for the given 
[StorageBox] with the provided options.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-create-a-snapshot
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) CreateSnapshot(
        ctx context.Context,
        storageBox *StorageBox,
@@ -219,8 +205,6 @@
 // UpdateSnapshot updates the given [StorageBoxSnapshot] of a [StorageBox] 
with the provided options.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-update-a-snapshot
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) UpdateSnapshot(
        ctx context.Context,
        snapshot *StorageBoxSnapshot,
@@ -248,8 +232,6 @@
 // DeleteSnapshot deletes the given [StorageBoxSnapshot] of a [StorageBox].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-delete-a-snapshot
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) DeleteSnapshot(
        ctx context.Context,
        snapshot *StorageBoxSnapshot,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/storage_box_subaccount.go
 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/storage_box_subaccount.go
--- 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/storage_box_subaccount.go
    2026-01-16 15:53:42.000000000 +0100
+++ 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/storage_box_subaccount.go
    2026-01-23 15:29:29.000000000 +0100
@@ -40,8 +40,6 @@
 //
 // When fetching by ID, see 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-get-a-subaccount
 // When fetching by name, see 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-list-subaccounts
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) GetSubaccount(
        ctx context.Context,
        storageBox *StorageBox,
@@ -62,8 +60,6 @@
 // GetSubaccountByID retrieves a [StorageBoxSubaccount] by its ID.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-get-a-subaccount
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) GetSubaccountByID(
        ctx context.Context,
        storageBox *StorageBox,
@@ -88,8 +84,6 @@
 // GetSubaccountByName retrieves a [StorageBoxSubaccount] by its name.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-list-subaccounts
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) GetSubaccountByName(
        ctx context.Context,
        storageBox *StorageBox,
@@ -105,8 +99,6 @@
 // GetSubaccountByUsername retrieves a [StorageBoxSubaccount] by its username.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-list-subaccounts
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) GetSubaccountByUsername(
        ctx context.Context,
        storageBox *StorageBox,
@@ -147,8 +139,6 @@
 // ListSubaccounts lists all [StorageBoxSubaccount] of a [StorageBox].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-list-subaccounts
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) ListSubaccounts(
        ctx context.Context,
        storageBox *StorageBox,
@@ -170,8 +160,6 @@
 // AllSubaccountsWithOpts retrieves all [StorageBoxSubaccount] of a 
[StorageBox] with the given options.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-list-subaccounts
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) AllSubaccountsWithOpts(
        ctx context.Context,
        storageBox *StorageBox,
@@ -184,8 +172,6 @@
 // AllSubaccounts retrieves all [StorageBoxSubaccount] of a [StorageBox].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-list-subaccounts
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) AllSubaccounts(
        ctx context.Context,
        storageBox *StorageBox,
@@ -223,8 +209,6 @@
 // CreateSubaccount creates a new [StorageBoxSubaccount] for a [StorageBox].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-create-a-subaccount
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) CreateSubaccount(
        ctx context.Context,
        storageBox *StorageBox,
@@ -259,8 +243,6 @@
 // UpdateSubaccount updates a [StorageBoxSubaccount] of a [StorageBox].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-update-a-subaccount
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) UpdateSubaccount(
        ctx context.Context,
        subaccount *StorageBoxSubaccount,
@@ -288,8 +270,6 @@
 // DeleteSubaccount deletes a [StorageBoxSubaccount] from a [StorageBox].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-delete-a-subaccount
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) DeleteSubaccount(
        ctx context.Context,
        subaccount *StorageBoxSubaccount,
@@ -318,8 +298,6 @@
 // ResetSubaccountPassword resets the password of a [StorageBoxSubaccount].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccount-actions-reset-password
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) ResetSubaccountPassword(
        ctx context.Context,
        subaccount *StorageBoxSubaccount,
@@ -351,8 +329,6 @@
 // UpdateSubaccountAccessSettings updates the 
[StorageBoxSubaccountAccessSettings] of a [StorageBoxSubaccount].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccount-actions-update-access-settings
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) UpdateSubaccountAccessSettings(
        ctx context.Context,
        subaccount *StorageBoxSubaccount,
@@ -380,8 +356,6 @@
 // UpdateSubaccountAccessSettings changes the home directory of a 
[StorageBoxSubaccount].
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccount-actions-change-home-directory
-//
-// Experimental: [StorageBoxClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxClient) ChangeSubaccountHomeDirectory(
        ctx context.Context,
        subaccount *StorageBoxSubaccount,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/storage_box_type.go 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/storage_box_type.go
--- old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/storage_box_type.go  
2026-01-16 15:53:42.000000000 +0100
+++ new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/storage_box_type.go  
2026-01-23 15:29:29.000000000 +0100
@@ -34,8 +34,6 @@
 // StorageBoxTypeClient provides access to Storage Box Types in the Hetzner 
API.
 //
 // See https://docs.hetzner.cloud/reference/hetzner#storage-box-types
-//
-// Experimental: [StorageBoxTypeClient] is experimental, breaking changes may 
occur within minor releases.
 type StorageBoxTypeClient struct {
        client *Client
 }
@@ -57,8 +55,6 @@
 // List returns a list of storage box types for a specific page.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-types-list-storage-box-types
-//
-// Experimental: [StorageBoxTypeClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxTypeClient) List(ctx context.Context, opts 
StorageBoxTypeListOpts) ([]*StorageBoxType, *Response, error) {
        const opPath = "/storage_box_types?%s"
        ctx = ctxutil.SetOpPath(ctx, opPath)
@@ -76,8 +72,6 @@
 // All returns all storage box types.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-types-list-storage-box-types
-//
-// Experimental: [StorageBoxTypeClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxTypeClient) All(ctx context.Context) ([]*StorageBoxType, 
error) {
        return c.AllWithOpts(ctx, StorageBoxTypeListOpts{})
 }
@@ -85,8 +79,6 @@
 // AllWithOpts returns all storage box types for the given options.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-types-list-storage-box-types
-//
-// Experimental: [StorageBoxTypeClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxTypeClient) AllWithOpts(ctx context.Context, opts 
StorageBoxTypeListOpts) ([]*StorageBoxType, error) {
        if opts.ListOpts.PerPage == 0 {
                opts.ListOpts.PerPage = 50
@@ -100,8 +92,6 @@
 // GetByID returns a specific Storage Box Type by ID.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-types-get-a-storage-box-type
-//
-// Experimental: [StorageBoxTypeClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxTypeClient) GetByID(ctx context.Context, id int64) 
(*StorageBoxType, *Response, error) {
        const opPath = "/storage_box_types/%d"
        ctx = ctxutil.SetOpPath(ctx, opPath)
@@ -122,8 +112,6 @@
 // GetByName retrieves a Storage Box Type by its name. If the Storage Box Type 
does not exist, nil is returned.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-types-get-a-storage-box-type
-//
-// Experimental: [StorageBoxTypeClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxTypeClient) GetByName(ctx context.Context, name string) 
(*StorageBoxType, *Response, error) {
        return firstByName(name, func() ([]*StorageBoxType, *Response, error) {
                return c.List(ctx, StorageBoxTypeListOpts{Name: name})
@@ -134,8 +122,6 @@
 // retrieves a Storage Box Type by its name. If the Storage Box Type does not 
exist, nil is returned.
 //
 // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-types-get-a-storage-box-type
-//
-// Experimental: [StorageBoxTypeClient] is experimental, breaking changes may 
occur within minor releases.
 func (c *StorageBoxTypeClient) Get(ctx context.Context, idOrName string) 
(*StorageBoxType, *Response, error) {
        return getByIDOrName(ctx, c.GetByID, c.GetByName, idOrName)
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_storage_box_client_iface.go
 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_storage_box_client_iface.go
--- 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_storage_box_client_iface.go
       2026-01-16 15:53:42.000000000 +0100
+++ 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_storage_box_client_iface.go
       2026-01-23 15:29:29.000000000 +0100
@@ -11,22 +11,16 @@
        // GetByID retrieves a [StorageBox] by its ID. If the [StorageBox] does 
not exist, nil is returned.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-get-a-storage-box
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        GetByID(ctx context.Context, id int64) (*StorageBox, *Response, error)
        // GetByName retrieves a [StorageBox] by its name. If the [StorageBox] 
does not exist, nil is returned.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-list-storage-boxes
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        GetByName(ctx context.Context, name string) (*StorageBox, *Response, 
error)
        // Get retrieves a [StorageBox] either by its ID or by its name, 
depending on whether
        // the input can be parsed as an integer. If no matching [StorageBox] 
is found, it returns nil.
        //
        // When fetching by ID, see 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-get-a-storage-box
        // When fetching by name, see 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-list-storage-boxes
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        Get(ctx context.Context, idOrName string) (*StorageBox, *Response, 
error)
        // List returns a list of [StorageBox] for a specific page.
        //
@@ -34,20 +28,14 @@
        // when their value corresponds to their zero value or when they are 
empty.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-list-storage-boxes
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        List(ctx context.Context, opts StorageBoxListOpts) ([]*StorageBox, 
*Response, error)
        // All returns all [StorageBox].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-list-storage-boxes
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        All(ctx context.Context) ([]*StorageBox, error)
        // AllWithOpts returns all [StorageBox] with the given options.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-list-storage-boxes
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        AllWithOpts(ctx context.Context, opts StorageBoxListOpts) 
([]*StorageBox, error)
        // Create creates a new [StorageBox] with the given options.
        //
@@ -56,205 +44,139 @@
        // is sent to the API. They are not addressable by ID or name.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-create-a-storage-box
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        Create(ctx context.Context, opts StorageBoxCreateOpts) 
(StorageBoxCreateResult, *Response, error)
        // Update updates a [StorageBox] with the given options.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-update-a-storage-box
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        Update(ctx context.Context, storageBox *StorageBox, opts 
StorageBoxUpdateOpts) (*StorageBox, *Response, error)
        // Delete deletes a [StorageBox].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-delete-a-storage-box
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        Delete(ctx context.Context, storageBox *StorageBox) 
(StorageBoxDeleteResult, *Response, error)
        // Folders lists folders in a [StorageBox].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-boxes-list-folders-of-a-storage-box
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        Folders(ctx context.Context, storageBox *StorageBox, opts 
StorageBoxFoldersOpts) (StorageBoxFoldersResult, *Response, error)
        // ChangeProtection changes the protection level of a [StorageBox].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-actions-change-protection
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        ChangeProtection(ctx context.Context, storageBox *StorageBox, opts 
StorageBoxChangeProtectionOpts) (*Action, *Response, error)
        // ChangeType changes the type of a [StorageBox].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-actions-change-type
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        ChangeType(ctx context.Context, storageBox *StorageBox, opts 
StorageBoxChangeTypeOpts) (*Action, *Response, error)
        // ResetPassword resets the password of a [StorageBox].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-actions-reset-password
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        ResetPassword(ctx context.Context, storageBox *StorageBox, opts 
StorageBoxResetPasswordOpts) (*Action, *Response, error)
        // UpdateAccessSettings updates the [StorageBoxAccessSettings] of a 
[StorageBox].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-actions-update-access-settings
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        UpdateAccessSettings(ctx context.Context, storageBox *StorageBox, opts 
StorageBoxUpdateAccessSettingsOpts) (*Action, *Response, error)
        // RollbackSnapshot rolls back a [StorageBox] to a [StorageBoxSnapshot].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-actions-rollback-snapshot
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        RollbackSnapshot(ctx context.Context, storageBox *StorageBox, opts 
StorageBoxRollbackSnapshotOpts) (*Action, *Response, error)
        // EnableSnapshotPlan enables a [StorageBoxSnapshotPlan] for a 
[StorageBox].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-actions-enable-snapshot-plan
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        EnableSnapshotPlan(ctx context.Context, storageBox *StorageBox, opts 
StorageBoxEnableSnapshotPlanOpts) (*Action, *Response, error)
        // DisableSnapshotPlan disables the [StorageBoxSnapshotPlan] for a 
[StorageBox].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-actions-disable-snapshot-plan
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        DisableSnapshotPlan(ctx context.Context, storageBox *StorageBox) 
(*Action, *Response, error)
        // GetSnapshotByID gets a [StorageBoxSnapshot] by its ID.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-get-a-snapshot
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        GetSnapshotByID(ctx context.Context, storageBox *StorageBox, id int64) 
(*StorageBoxSnapshot, *Response, error)
        // GetSnapshotByName gets a [StorageBoxSnapshot] by its name.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-list-snapshots
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        GetSnapshotByName(ctx context.Context, storageBox *StorageBox, name 
string) (*StorageBoxSnapshot, *Response, error)
        // GetSnapshot retrieves a [StorageBoxSnapshot] either by its ID or by 
its name, depending on whether
        // the input can be parsed as an integer. If no matching 
[StorageBoxSnapshot] is found, it returns nil.
        //
        // When fetching by ID, see 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-get-a-snapshot
        // When fetching by name, see 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-list-snapshots
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        GetSnapshot(ctx context.Context, storageBox *StorageBox, idOrName 
string) (*StorageBoxSnapshot, *Response, error)
        // ListSnapshots lists all [StorageBoxSnapshot] of a [StorageBox] with 
the given options.
        //
        // Pagination is not supported, so this will return all 
[StorageBoxSnapshot] at once.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-list-snapshots
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        ListSnapshots(ctx context.Context, storageBox *StorageBox, opts 
StorageBoxSnapshotListOpts) ([]*StorageBoxSnapshot, *Response, error)
        // AllSnapshotsWithOpts lists all [StorageBoxSnapshot] of a 
[StorageBox] with the given options.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-list-snapshots
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        AllSnapshotsWithOpts(ctx context.Context, storageBox *StorageBox, opts 
StorageBoxSnapshotListOpts) ([]*StorageBoxSnapshot, error)
        // AllSnapshots lists all [StorageBoxSnapshot] of a [StorageBox] 
without any options.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-list-snapshots
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        AllSnapshots(ctx context.Context, storageBox *StorageBox) 
([]*StorageBoxSnapshot, error)
        // CreateSnapshot creates a new [StorageBoxSnapshot] for the given 
[StorageBox] with the provided options.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-create-a-snapshot
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        CreateSnapshot(ctx context.Context, storageBox *StorageBox, opts 
StorageBoxSnapshotCreateOpts) (StorageBoxSnapshotCreateResult, *Response, error)
        // UpdateSnapshot updates the given [StorageBoxSnapshot] of a 
[StorageBox] with the provided options.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-update-a-snapshot
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        UpdateSnapshot(ctx context.Context, snapshot *StorageBoxSnapshot, opts 
StorageBoxSnapshotUpdateOpts) (*StorageBoxSnapshot, *Response, error)
        // DeleteSnapshot deletes the given [StorageBoxSnapshot] of a 
[StorageBox].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-snapshots-delete-a-snapshot
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        DeleteSnapshot(ctx context.Context, snapshot *StorageBoxSnapshot) 
(StorageBoxSnapshotDeleteResult, *Response, error)
        // GetSubaccount retrieves a [StorageBoxSubaccount] either by its ID or 
by its name, depending on whether
        // the input can be parsed as an integer. If no matching 
[StorageBoxSubaccount] is found, it returns nil.
        //
        // When fetching by ID, see 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-get-a-subaccount
        // When fetching by name, see 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-list-subaccounts
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        GetSubaccount(ctx context.Context, storageBox *StorageBox, idOrName 
string) (*StorageBoxSubaccount, *Response, error)
        // GetSubaccountByID retrieves a [StorageBoxSubaccount] by its ID.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-get-a-subaccount
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        GetSubaccountByID(ctx context.Context, storageBox *StorageBox, id 
int64) (*StorageBoxSubaccount, *Response, error)
        // GetSubaccountByName retrieves a [StorageBoxSubaccount] by its name.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-list-subaccounts
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        GetSubaccountByName(ctx context.Context, storageBox *StorageBox, name 
string) (*StorageBoxSubaccount, *Response, error)
        // GetSubaccountByUsername retrieves a [StorageBoxSubaccount] by its 
username.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-list-subaccounts
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        GetSubaccountByUsername(ctx context.Context, storageBox *StorageBox, 
username string) (*StorageBoxSubaccount, *Response, error)
        // ListSubaccounts lists all [StorageBoxSubaccount] of a [StorageBox].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-list-subaccounts
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        ListSubaccounts(ctx context.Context, storageBox *StorageBox, opts 
StorageBoxSubaccountListOpts) ([]*StorageBoxSubaccount, *Response, error)
        // AllSubaccountsWithOpts retrieves all [StorageBoxSubaccount] of a 
[StorageBox] with the given options.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-list-subaccounts
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        AllSubaccountsWithOpts(ctx context.Context, storageBox *StorageBox, 
opts StorageBoxSubaccountListOpts) ([]*StorageBoxSubaccount, error)
        // AllSubaccounts retrieves all [StorageBoxSubaccount] of a 
[StorageBox].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-list-subaccounts
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        AllSubaccounts(ctx context.Context, storageBox *StorageBox) 
([]*StorageBoxSubaccount, error)
        // CreateSubaccount creates a new [StorageBoxSubaccount] for a 
[StorageBox].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-create-a-subaccount
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        CreateSubaccount(ctx context.Context, storageBox *StorageBox, opts 
StorageBoxSubaccountCreateOpts) (StorageBoxSubaccountCreateResult, *Response, 
error)
        // UpdateSubaccount updates a [StorageBoxSubaccount] of a [StorageBox].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-update-a-subaccount
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        UpdateSubaccount(ctx context.Context, subaccount *StorageBoxSubaccount, 
opts StorageBoxSubaccountUpdateOpts) (*StorageBoxSubaccount, *Response, error)
        // DeleteSubaccount deletes a [StorageBoxSubaccount] from a 
[StorageBox].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccounts-delete-a-subaccount
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        DeleteSubaccount(ctx context.Context, subaccount *StorageBoxSubaccount) 
(StorageBoxSubaccountDeleteResult, *Response, error)
        // ResetSubaccountPassword resets the password of a 
[StorageBoxSubaccount].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccount-actions-reset-password
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        ResetSubaccountPassword(ctx context.Context, subaccount 
*StorageBoxSubaccount, opts StorageBoxSubaccountResetPasswordOpts) (*Action, 
*Response, error)
        // UpdateSubaccountAccessSettings updates the 
[StorageBoxSubaccountAccessSettings] of a [StorageBoxSubaccount].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccount-actions-update-access-settings
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        UpdateSubaccountAccessSettings(ctx context.Context, subaccount 
*StorageBoxSubaccount, opts StorageBoxSubaccountUpdateAccessSettingsOpts) 
(*Action, *Response, error)
        // UpdateSubaccountAccessSettings changes the home directory of a 
[StorageBoxSubaccount].
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-subaccount-actions-change-home-directory
-       //
-       // Experimental: [StorageBoxClient] is experimental, breaking changes 
may occur within minor releases.
        ChangeSubaccountHomeDirectory(ctx context.Context, subaccount 
*StorageBoxSubaccount, opts StorageBoxSubaccountChangeHomeDirectoryOpts) 
(*Action, *Response, error)
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_storage_box_type_client_iface.go
 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_storage_box_type_client_iface.go
--- 
old/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_storage_box_type_client_iface.go
  2026-01-16 15:53:42.000000000 +0100
+++ 
new/vendor/github.com/hetznercloud/hcloud-go/v2/hcloud/zz_storage_box_type_client_iface.go
  2026-01-23 15:29:29.000000000 +0100
@@ -11,38 +11,26 @@
        // List returns a list of storage box types for a specific page.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-types-list-storage-box-types
-       //
-       // Experimental: [StorageBoxTypeClient] is experimental, breaking 
changes may occur within minor releases.
        List(ctx context.Context, opts StorageBoxTypeListOpts) 
([]*StorageBoxType, *Response, error)
        // All returns all storage box types.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-types-list-storage-box-types
-       //
-       // Experimental: [StorageBoxTypeClient] is experimental, breaking 
changes may occur within minor releases.
        All(ctx context.Context) ([]*StorageBoxType, error)
        // AllWithOpts returns all storage box types for the given options.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-types-list-storage-box-types
-       //
-       // Experimental: [StorageBoxTypeClient] is experimental, breaking 
changes may occur within minor releases.
        AllWithOpts(ctx context.Context, opts StorageBoxTypeListOpts) 
([]*StorageBoxType, error)
        // GetByID returns a specific Storage Box Type by ID.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-types-get-a-storage-box-type
-       //
-       // Experimental: [StorageBoxTypeClient] is experimental, breaking 
changes may occur within minor releases.
        GetByID(ctx context.Context, id int64) (*StorageBoxType, *Response, 
error)
        // GetByName retrieves a Storage Box Type by its name. If the Storage 
Box Type does not exist, nil is returned.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-types-get-a-storage-box-type
-       //
-       // Experimental: [StorageBoxTypeClient] is experimental, breaking 
changes may occur within minor releases.
        GetByName(ctx context.Context, name string) (*StorageBoxType, 
*Response, error)
        // Get retrieves a Storage Box Type by its ID if the input can be 
parsed as an integer, otherwise it
        // retrieves a Storage Box Type by its name. If the Storage Box Type 
does not exist, nil is returned.
        //
        // See 
https://docs.hetzner.cloud/reference/hetzner#storage-box-types-get-a-storage-box-type
-       //
-       // Experimental: [StorageBoxTypeClient] is experimental, breaking 
changes may occur within minor releases.
        Get(ctx context.Context, idOrName string) (*StorageBoxType, *Response, 
error)
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vendor/modules.txt new/vendor/modules.txt
--- old/vendor/modules.txt      2026-01-16 15:53:42.000000000 +0100
+++ new/vendor/modules.txt      2026-01-23 15:29:29.000000000 +0100
@@ -55,7 +55,7 @@
 # github.com/guptarohit/asciigraph v0.7.3
 ## explicit; go 1.11
 github.com/guptarohit/asciigraph
-# github.com/hetznercloud/hcloud-go/v2 v2.35.0
+# github.com/hetznercloud/hcloud-go/v2 v2.36.0
 ## explicit; go 1.24.0
 github.com/hetznercloud/hcloud-go/v2/hcloud
 github.com/hetznercloud/hcloud-go/v2/hcloud/exp/actionutil

Reply via email to