github.com/anthropics/anthropic-sdk-go@v1.70.1/betavault.go (about) 1 // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. 2 3 package anthropic 4 5 import ( 6 "context" 7 "errors" 8 "fmt" 9 "net/http" 10 "net/url" 11 "slices" 12 "time" 13 14 "github.com/anthropics/anthropic-sdk-go/internal/apijson" 15 "github.com/anthropics/anthropic-sdk-go/internal/apiquery" 16 "github.com/anthropics/anthropic-sdk-go/internal/requestconfig" 17 "github.com/anthropics/anthropic-sdk-go/option" 18 "github.com/anthropics/anthropic-sdk-go/packages/pagination" 19 "github.com/anthropics/anthropic-sdk-go/packages/param" 20 "github.com/anthropics/anthropic-sdk-go/packages/respjson" 21 ) 22 23 // BetaVaultService contains methods and other services that help with interacting 24 // with the anthropic API. 25 // 26 // Note, unlike clients, this service does not read variables from the environment 27 // automatically. You should not instantiate this service directly, and instead use 28 // the [NewBetaVaultService] method instead. 29 type BetaVaultService struct { 30 Options []option.RequestOption 31 Credentials BetaVaultCredentialService 32 } 33 34 // NewBetaVaultService generates a new service that applies the given options to 35 // each request. These options are applied after the parent client's options (if 36 // there is one), and before any request-specific options. 37 func NewBetaVaultService(opts ...option.RequestOption) (r BetaVaultService) { 38 r = BetaVaultService{} 39 r.Options = opts 40 r.Credentials = NewBetaVaultCredentialService(opts...) 41 return 42 } 43 44 // Create Vault 45 func (r *BetaVaultService) New(ctx context.Context, params BetaVaultNewParams, opts ...option.RequestOption) (res *BetaManagedAgentsVault, err error) { 46 for _, v := range params.Betas { 47 opts = append(opts, option.WithHeaderAdd("anthropic-beta", fmt.Sprintf("%v", v))) 48 } 49 if !param.IsOmitted(params.WorkspaceID) { 50 opts = append(opts, option.WithHeader("anthropic-workspace-id", fmt.Sprintf("%v", params.WorkspaceID.Value))) 51 } 52 opts = slices.Concat(r.Options, opts) 53 opts = append([]option.RequestOption{option.WithHeader("anthropic-beta", "managed-agents-2026-04-01")}, opts...) 54 path := "v1/vaults?beta=true" 55 err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &res, opts...) 56 return res, err 57 } 58 59 // Get Vault 60 func (r *BetaVaultService) Get(ctx context.Context, vaultID string, query BetaVaultGetParams, opts ...option.RequestOption) (res *BetaManagedAgentsVault, err error) { 61 for _, v := range query.Betas { 62 opts = append(opts, option.WithHeaderAdd("anthropic-beta", fmt.Sprintf("%v", v))) 63 } 64 if !param.IsOmitted(query.WorkspaceID) { 65 opts = append(opts, option.WithHeader("anthropic-workspace-id", fmt.Sprintf("%v", query.WorkspaceID.Value))) 66 } 67 opts = slices.Concat(r.Options, opts) 68 opts = append([]option.RequestOption{option.WithHeader("anthropic-beta", "managed-agents-2026-04-01")}, opts...) 69 if vaultID == "" { 70 err = errors.New("missing required vault_id parameter") 71 return nil, err 72 } 73 path := fmt.Sprintf("v1/vaults/%s?beta=true", vaultID) 74 err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...) 75 return res, err 76 } 77 78 // Update Vault 79 func (r *BetaVaultService) Update(ctx context.Context, vaultID string, params BetaVaultUpdateParams, opts ...option.RequestOption) (res *BetaManagedAgentsVault, err error) { 80 for _, v := range params.Betas { 81 opts = append(opts, option.WithHeaderAdd("anthropic-beta", fmt.Sprintf("%v", v))) 82 } 83 if !param.IsOmitted(params.WorkspaceID) { 84 opts = append(opts, option.WithHeader("anthropic-workspace-id", fmt.Sprintf("%v", params.WorkspaceID.Value))) 85 } 86 opts = slices.Concat(r.Options, opts) 87 opts = append([]option.RequestOption{option.WithHeader("anthropic-beta", "managed-agents-2026-04-01")}, opts...) 88 if vaultID == "" { 89 err = errors.New("missing required vault_id parameter") 90 return nil, err 91 } 92 path := fmt.Sprintf("v1/vaults/%s?beta=true", vaultID) 93 err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &res, opts...) 94 return res, err 95 } 96 97 // List Vaults 98 func (r *BetaVaultService) List(ctx context.Context, params BetaVaultListParams, opts ...option.RequestOption) (res *pagination.PageCursor[BetaManagedAgentsVault], err error) { 99 var raw *http.Response 100 for _, v := range params.Betas { 101 opts = append(opts, option.WithHeaderAdd("anthropic-beta", fmt.Sprintf("%v", v))) 102 } 103 if !param.IsOmitted(params.WorkspaceID) { 104 opts = append(opts, option.WithHeader("anthropic-workspace-id", fmt.Sprintf("%v", params.WorkspaceID.Value))) 105 } 106 opts = slices.Concat(r.Options, opts) 107 opts = append([]option.RequestOption{option.WithHeader("anthropic-beta", "managed-agents-2026-04-01"), option.WithResponseInto(&raw)}, opts...) 108 path := "v1/vaults?beta=true" 109 cfg, err := requestconfig.NewRequestConfig(ctx, http.MethodGet, path, params, &res, opts...) 110 if err != nil { 111 return nil, err 112 } 113 err = cfg.Execute() 114 if err != nil { 115 return nil, err 116 } 117 res.SetPageConfig(cfg, raw) 118 return res, nil 119 } 120 121 // List Vaults 122 func (r *BetaVaultService) ListAutoPaging(ctx context.Context, params BetaVaultListParams, opts ...option.RequestOption) *pagination.PageCursorAutoPager[BetaManagedAgentsVault] { 123 return pagination.NewPageCursorAutoPager(r.List(ctx, params, opts...)) 124 } 125 126 // Delete Vault 127 func (r *BetaVaultService) Delete(ctx context.Context, vaultID string, body BetaVaultDeleteParams, opts ...option.RequestOption) (res *BetaManagedAgentsDeletedVault, err error) { 128 for _, v := range body.Betas { 129 opts = append(opts, option.WithHeaderAdd("anthropic-beta", fmt.Sprintf("%v", v))) 130 } 131 if !param.IsOmitted(body.WorkspaceID) { 132 opts = append(opts, option.WithHeader("anthropic-workspace-id", fmt.Sprintf("%v", body.WorkspaceID.Value))) 133 } 134 opts = slices.Concat(r.Options, opts) 135 opts = append([]option.RequestOption{option.WithHeader("anthropic-beta", "managed-agents-2026-04-01")}, opts...) 136 if vaultID == "" { 137 err = errors.New("missing required vault_id parameter") 138 return nil, err 139 } 140 path := fmt.Sprintf("v1/vaults/%s?beta=true", vaultID) 141 err = requestconfig.ExecuteNewRequest(ctx, http.MethodDelete, path, nil, &res, opts...) 142 return res, err 143 } 144 145 // Archive Vault 146 func (r *BetaVaultService) Archive(ctx context.Context, vaultID string, body BetaVaultArchiveParams, opts ...option.RequestOption) (res *BetaManagedAgentsVault, err error) { 147 for _, v := range body.Betas { 148 opts = append(opts, option.WithHeaderAdd("anthropic-beta", fmt.Sprintf("%v", v))) 149 } 150 if !param.IsOmitted(body.WorkspaceID) { 151 opts = append(opts, option.WithHeader("anthropic-workspace-id", fmt.Sprintf("%v", body.WorkspaceID.Value))) 152 } 153 opts = slices.Concat(r.Options, opts) 154 opts = append([]option.RequestOption{option.WithHeader("anthropic-beta", "managed-agents-2026-04-01")}, opts...) 155 if vaultID == "" { 156 err = errors.New("missing required vault_id parameter") 157 return nil, err 158 } 159 path := fmt.Sprintf("v1/vaults/%s/archive?beta=true", vaultID) 160 err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, nil, &res, opts...) 161 return res, err 162 } 163 164 // Confirmation of a deleted vault. 165 type BetaManagedAgentsDeletedVault struct { 166 // Unique identifier of the deleted vault. 167 ID string `json:"id" api:"required"` 168 // Any of "vault_deleted". 169 Type BetaManagedAgentsDeletedVaultType `json:"type" api:"required"` 170 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 171 JSON struct { 172 ID respjson.Field 173 Type respjson.Field 174 ExtraFields map[string]respjson.Field 175 raw string 176 } `json:"-"` 177 } 178 179 // Returns the unmodified JSON received from the API 180 func (r BetaManagedAgentsDeletedVault) RawJSON() string { return r.JSON.raw } 181 func (r *BetaManagedAgentsDeletedVault) UnmarshalJSON(data []byte) error { 182 return apijson.UnmarshalRoot(data, r) 183 } 184 185 type BetaManagedAgentsDeletedVaultType string 186 187 const ( 188 BetaManagedAgentsDeletedVaultTypeVaultDeleted BetaManagedAgentsDeletedVaultType = "vault_deleted" 189 ) 190 191 // A vault that stores credentials for use by agents during sessions. 192 type BetaManagedAgentsVault struct { 193 // Unique identifier for the vault. 194 ID string `json:"id" api:"required"` 195 // A timestamp in RFC 3339 format 196 ArchivedAt time.Time `json:"archived_at" api:"required" format:"date-time"` 197 // A timestamp in RFC 3339 format 198 CreatedAt time.Time `json:"created_at" api:"required" format:"date-time"` 199 // Human-readable name for the vault. 200 DisplayName string `json:"display_name" api:"required"` 201 // Arbitrary key-value metadata attached to the vault. 202 Metadata map[string]string `json:"metadata" api:"required"` 203 // Any of "vault". 204 Type BetaManagedAgentsVaultType `json:"type" api:"required"` 205 // A timestamp in RFC 3339 format 206 UpdatedAt time.Time `json:"updated_at" api:"required" format:"date-time"` 207 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 208 JSON struct { 209 ID respjson.Field 210 ArchivedAt respjson.Field 211 CreatedAt respjson.Field 212 DisplayName respjson.Field 213 Metadata respjson.Field 214 Type respjson.Field 215 UpdatedAt respjson.Field 216 ExtraFields map[string]respjson.Field 217 raw string 218 } `json:"-"` 219 } 220 221 // Returns the unmodified JSON received from the API 222 func (r BetaManagedAgentsVault) RawJSON() string { return r.JSON.raw } 223 func (r *BetaManagedAgentsVault) UnmarshalJSON(data []byte) error { 224 return apijson.UnmarshalRoot(data, r) 225 } 226 227 type BetaManagedAgentsVaultType string 228 229 const ( 230 BetaManagedAgentsVaultTypeVault BetaManagedAgentsVaultType = "vault" 231 ) 232 233 type BetaVaultNewParams struct { 234 // Human-readable name for the vault. 1-255 characters. 235 DisplayName string `json:"display_name" api:"required"` 236 WorkspaceID param.Opt[string] `header:"anthropic-workspace-id,omitzero" json:"-"` 237 // Arbitrary key-value metadata to attach to the vault. Maximum 16 pairs, keys up 238 // to 64 chars, values up to 512 chars. 239 Metadata map[string]string `json:"metadata,omitzero"` 240 // Optional header to specify the beta version(s) you want to use. 241 Betas []AnthropicBeta `header:"anthropic-beta,omitzero" json:"-"` 242 paramObj 243 } 244 245 func (r BetaVaultNewParams) MarshalJSON() (data []byte, err error) { 246 type shadow BetaVaultNewParams 247 return param.MarshalObject(r, (*shadow)(&r)) 248 } 249 func (r *BetaVaultNewParams) UnmarshalJSON(data []byte) error { 250 return apijson.UnmarshalRoot(data, r) 251 } 252 253 type BetaVaultGetParams struct { 254 WorkspaceID param.Opt[string] `header:"anthropic-workspace-id,omitzero" json:"-"` 255 // Optional header to specify the beta version(s) you want to use. 256 Betas []AnthropicBeta `header:"anthropic-beta,omitzero" json:"-"` 257 paramObj 258 } 259 260 type BetaVaultUpdateParams struct { 261 // Updated human-readable name for the vault. 1-255 characters. 262 DisplayName param.Opt[string] `json:"display_name,omitzero"` 263 WorkspaceID param.Opt[string] `header:"anthropic-workspace-id,omitzero" json:"-"` 264 // Metadata patch. Set a key to a string to upsert it, or to null to delete it. 265 // Omitted keys are preserved. 266 Metadata map[string]string `json:"metadata,omitzero"` 267 // Optional header to specify the beta version(s) you want to use. 268 Betas []AnthropicBeta `header:"anthropic-beta,omitzero" json:"-"` 269 paramObj 270 } 271 272 func (r BetaVaultUpdateParams) MarshalJSON() (data []byte, err error) { 273 type shadow BetaVaultUpdateParams 274 return param.MarshalObject(r, (*shadow)(&r)) 275 } 276 func (r *BetaVaultUpdateParams) UnmarshalJSON(data []byte) error { 277 return apijson.UnmarshalRoot(data, r) 278 } 279 280 type BetaVaultListParams struct { 281 // Whether to include archived vaults in the results. 282 IncludeArchived param.Opt[bool] `query:"include_archived,omitzero" json:"-"` 283 // Maximum number of vaults to return per page. Defaults to 20, maximum 100. 284 Limit param.Opt[int64] `query:"limit,omitzero" json:"-"` 285 // Opaque pagination token from a previous `list_vaults` response. 286 Page param.Opt[string] `query:"page,omitzero" json:"-"` 287 WorkspaceID param.Opt[string] `header:"anthropic-workspace-id,omitzero" json:"-"` 288 // Optional header to specify the beta version(s) you want to use. 289 Betas []AnthropicBeta `header:"anthropic-beta,omitzero" json:"-"` 290 paramObj 291 } 292 293 // URLQuery serializes [BetaVaultListParams]'s query parameters as `url.Values`. 294 func (r BetaVaultListParams) URLQuery() (v url.Values, err error) { 295 return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{ 296 ArrayFormat: apiquery.ArrayQueryFormatBrackets, 297 NestedFormat: apiquery.NestedQueryFormatBrackets, 298 }) 299 } 300 301 type BetaVaultDeleteParams struct { 302 WorkspaceID param.Opt[string] `header:"anthropic-workspace-id,omitzero" json:"-"` 303 // Optional header to specify the beta version(s) you want to use. 304 Betas []AnthropicBeta `header:"anthropic-beta,omitzero" json:"-"` 305 paramObj 306 } 307 308 type BetaVaultArchiveParams struct { 309 WorkspaceID param.Opt[string] `header:"anthropic-workspace-id,omitzero" json:"-"` 310 // Optional header to specify the beta version(s) you want to use. 311 Betas []AnthropicBeta `header:"anthropic-beta,omitzero" json:"-"` 312 paramObj 313 }