linodego

package module
v2.0.0-...-595faf9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 1, 2026 License: MIT Imports: 37 Imported by: 0

README

linodego

Tests Release GoDoc Go Report Card

Go client for Linode REST v4 API

Installation

go get -u github.com/linode/linodego/v2

Documentation

See godoc for a complete reference.

The API generally follows the naming patterns prescribed in the OpenAPIv3 document for Linode APIv4.

Deviations in naming have been made to avoid using "Linode" and "Instance" redundantly or inconsistently.

A brief summary of the features offered in this API client are shown here.

Examples

General Usage
package main

import (
	"context"
	"fmt"
	"log"
	"net/http"
	"os"

	"github.com/linode/linodego/v2"
	"golang.org/x/oauth2"
)

func main() {
	apiKey, ok := os.LookupEnv("LINODE_TOKEN")
	if !ok {
		log.Fatal("Could not find LINODE_TOKEN, please assert it is set.")
	}
	tokenSource := oauth2.StaticTokenSource(&oauth2.Token{AccessToken: apiKey})

	oauth2Client := &http.Client{
		Transport: &oauth2.Transport{
			Source: tokenSource,
		},
	}

	linodeClient, err := linodego.NewClient(oauth2Client)
	if err != nil {
		log.Fatal(err)
	}
	linodeClient.SetDebug(true)

	res, err := linodeClient.GetInstance(context.Background(), 4090913)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%v", res)
}
Pagination
Auto-Pagination Requests
kernels, err := linodego.ListKernels(context.Background(), nil)
// len(kernels) == 218

Or, use a page value of "0":

opts := linodego.NewListOptions(0,"")
kernels, err := linodego.ListKernels(context.Background(), opts)
// len(kernels) == 218
Single Page
opts := linodego.NewListOptions(2,"")
// or opts := linodego.ListOptions{PageOptions: &linodego.PageOptions{Page: 2}, PageSize: 500}
kernels, err := linodego.ListKernels(context.Background(), opts)
// len(kernels) == 100

ListOptions are supplied as a pointer because the Pages and Results values are set in the supplied ListOptions.

// opts.Results == 218

NOTES:

  • The ListOptions will be mutated by list endpoint functions.
  • Instances of ListOptions should NOT be shared across multiple list endpoint functions.
  • The resulting number of results and pages can be accessed through the user-supplied ListOptions instance.
Filtering
f := linodego.Filter{}
f.AddField(linodego.Eq, "mine", true)
fStr, err := f.MarshalJSON()
if err != nil {
    log.Fatal(err)
}
opts := linodego.NewListOptions(0, string(fStr))
stackscripts, err := linodego.ListStackscripts(context.Background(), opts)
Error Handling
Getting Single Entities
linode, err := linodego.GetInstance(context.Background(), 555) // any Linode ID that does not exist or is not yours
// linode == nil: true
// err.Error() == "[404] Not Found"
// err.Code == "404"
// err.Message == "Not Found"
Lists

For lists, the list is still returned as [], but err works the same way as on the Get request.

linodes, err := linodego.ListInstances(context.Background(), linodego.NewListOptions(0, "{\"foo\":bar}"))
// linodes == []
// err.Error() == "[400] [X-Filter] Cannot filter on foo"

Otherwise sane requests beyond the last page do not trigger an error, just an empty result:

linodes, err := linodego.ListInstances(context.Background(), linodego.NewListOptions(9999, ""))
// linodes == []
// err = nil
Response Caching

By default, certain endpoints with static responses will be cached into memory. Endpoints with cached responses are identified in their accompanying documentation.

The default cache entry expiry time is 15 minutes. Certain endpoints may override this value to allow for more frequent refreshes (e.g. client.GetRegion(...)). The global cache expiry time can be customized using the client.SetGlobalCacheExpiration(...) method.

Response caching can be globally disabled or enabled for a client using the client.UseCache(...) method.

The global cache can be cleared and refreshed using the client.InvalidateCache() method.

Writes

When performing a POST or PUT request, multiple field related errors will be returned as a single error, currently like:

// err.Error() == "[400] [field1] foo problem; [field2] bar problem; [field3] baz problem"

Tests

Run make test-unit to run the unit tests.

Run make test-int to run the integration tests. The integration tests use fixtures.

To update the test fixtures, run make fixtures. This will record the API responses into the fixtures/ directory. Be careful about committing any sensitive account details. An attempt has been made to sanitize IP addresses and dates, but no automated sanitization will be performed against fixtures/*Account*.yaml, for example.

To prevent disrupting unaffected fixtures, target fixture generation like so: make TEST_ARGS="-run TestListVolumes" fixtures.

Discussion / Help

Join us at #linodego on the gophers slack

License

MIT License

Documentation

Index

Constants

View Source
const (
	// APIConfigEnvVar environment var to get path to Linode config
	APIConfigEnvVar = "LINODE_CONFIG"
	// APIConfigProfileEnvVar specifies the profile to use when loading from a Linode config
	APIConfigProfileEnvVar = "LINODE_PROFILE"
	// APIHost Linode API hostname
	APIHost = "api.linode.com"
	// APIHostVar environment var to check for alternate API URL
	APIHostVar = "LINODE_URL"
	// APIHostCert environment var containing path to CA cert to validate against.
	// Note that the custom CA cannot be configured together with a custom HTTP Transport.
	APIHostCert = "LINODE_CA"
	// APIVersion Linode API version
	APIVersion = "v4"
	// APIVersionVar environment var to check for alternate API Version
	APIVersionVar = "LINODE_API_VERSION"
	// APIProto connect to API with http(s)
	APIProto = "https"
	// APIEnvVar environment var to check for API token
	APIEnvVar = "LINODE_TOKEN"
	// APISecondsPerPoll how frequently to poll for new Events or Status in WaitFor functions
	APISecondsPerPoll = 3
	// APIRetryMaxWaitTime is the maximum wait time for retries
	APIRetryMaxWaitTime       = time.Duration(30) * time.Second
	APIDefaultCacheExpiration = time.Minute * 15
)
View Source
const (
	// MonitorAPIHost is the default monitor-api host
	MonitorAPIHost = "monitor-api.linode.com"
	// MonitorAPIHostVar is the env var to check for the alternate Monitor API URL
	MonitorAPIHostVar = "MONITOR_API_URL"
	// MonitorAPIVersion is the default API version to use
	MonitorAPIVersion = "v2beta"
	// MonitorAPIVersionVar is the env var to check for the alternate Monitor API version
	MonitorAPIVersionVar = "MONITOR_API_VERSION"
	// MonitorAPIEnvVar is the env var to check for Monitor API token
	MonitorAPIEnvVar = "MONITOR_API_TOKEN"
)
View Source
const (
	ErrorUnsupported = iota
	// ErrorFromString is the Code identifying Errors created by string types
	ErrorFromString
	// ErrorFromError is the Code identifying Errors created by error types
	ErrorFromError
	// ErrorFromStringer is the Code identifying Errors created by fmt.Stringer types
	ErrorFromStringer
)
View Source
const (
	RetryAfterHeaderName      = "Retry-After"
	MaintenanceModeHeaderName = "X-Maintenance-Mode"
	DefaultRetryCount         = 1000
)
View Source
const (
	DefaultConfigProfile = "default"
)

Variables

View Source
var (
	Version = "dev"

	// DefaultUserAgent is the default User-Agent sent in HTTP request headers
	DefaultUserAgent string
)
View Source
var DefaultConfigPaths = []string{
	"%s/.config/linode",
	"%s/.config/linode-cli",
}

Functions

func ConfigureRetries

func ConfigureRetries(c *Client)

ConfigureRetries configures http.Client to lock until enough time has passed to retry the request as determined by the Retry-After response header. If the Retry-After header is not set, we fall back to the value of SetPollDelay.

func DoublePointer

func DoublePointer[T any](value T) **T

DoublePointer creates a double pointer to a value of type T.

This is useful for APIs that distinguish between null and omitted fields.

Example:

// For a field that should be non-null value in the API payload:
value := linodego.DoublePointer(42) // Returns **int pointing a *int pointer pointing to 42

// For a field that should be null in the API payload, use `DoublePointerNull` function instead:
nullValue := linodego.DoublePointerNull[int]() // Returns **int that is nil

// For a field that should not be included in the API payload, simply not include it in the struct.

func DoublePointerNull

func DoublePointerNull[T any]() **T

DoublePointerNull creates a double pointer pointing to a nil pointer of type T, indicating that the field should be null in the API payload.

This is useful for APIs that distinguish between null and omitted fields.

func ErrHasStatus

func ErrHasStatus(err error, code ...int) bool

ErrHasStatus checks if err is an error from the Linode API, and whether it contains the given HTTP status code. More than one status code may be given. If len(code) == 0, err is nil or is not a Error, ErrHasStatus will return false.

func FormatConfigPath

func FormatConfigPath(path string) (string, error)

func IsNotFound

func IsNotFound(err error) bool

IsNotFound indicates if err indicates a 404 Not Found error from the Linode API.

func LinodeBusyRetryCondition

func LinodeBusyRetryCondition(resp *http.Response, _ error) bool

func Pointer

func Pointer[T any](value T) *T

func RequestGOAWAYRetryCondition

func RequestGOAWAYRetryCondition(_ *http.Response, err error) bool

func RequestNGINXRetryCondition

func RequestNGINXRetryCondition(resp *http.Response, _ error) bool

func RequestTimeoutRetryCondition

func RequestTimeoutRetryCondition(resp *http.Response, _ error) bool

func RespectRetryAfter

func RespectRetryAfter(resp *http.Response) (time.Duration, error)

func ServiceUnavailableRetryCondition

func ServiceUnavailableRetryCondition(resp *http.Response, _ error) bool

func TooManyRequestsRetryCondition

func TooManyRequestsRetryCondition(resp *http.Response, _ error) bool

Types

type APIError

type APIError struct {
	Errors []APIErrorReason `json:"errors"`
}

APIError is the error-set returned by the Linode API when presented with an invalid request

func (APIError) Error

func (e APIError) Error() string

type APIErrorReason

type APIErrorReason struct {
	Reason string `json:"reason"`
	Field  string `json:"field"`
}

APIErrorReason is an individual invalid request message returned by the Linode API

func (APIErrorReason) Error

func (r APIErrorReason) Error() string

type Account

type Account struct {
	FirstName         string      `json:"first_name"`
	LastName          string      `json:"last_name"`
	Email             string      `json:"email"`
	Company           string      `json:"company"`
	Address1          string      `json:"address_1"`
	Address2          string      `json:"address_2"`
	Balance           float32     `json:"balance"`
	BalanceUninvoiced float32     `json:"balance_uninvoiced"`
	City              string      `json:"city"`
	State             string      `json:"state"`
	Zip               string      `json:"zip"`
	Country           string      `json:"country"`
	TaxID             string      `json:"tax_id"`
	Phone             string      `json:"phone"`
	CreditCard        *CreditCard `json:"credit_card"`
	EUUID             string      `json:"euuid"`
	BillingSource     string      `json:"billing_source"`
	Capabilities      []string    `json:"capabilities"`
	ActiveSince       *time.Time  `json:"active_since"`
	ActivePromotions  []Promotion `json:"active_promotions"`
}

Account associated with the token in use.

func (Account) GetUpdateOptions

func (i Account) GetUpdateOptions() (o AccountUpdateOptions)

GetUpdateOptions converts an Account to AccountUpdateOptions for use in UpdateAccount

func (*Account) UnmarshalJSON

func (i *Account) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type AccountAccess

type AccountAccess struct {
	Type  string `json:"type"`
	Roles []Role `json:"roles"`
}

AccountAccess is the Roles for each Type for the Account

type AccountAgreements

type AccountAgreements struct {
	EUModel                bool `json:"eu_model"`
	MasterServiceAgreement bool `json:"master_service_agreement"`
	PrivacyPolicy          bool `json:"privacy_policy"`
}

AccountAgreements represents the agreements and their acceptance status for an Account

func (AccountAgreements) GetUpdateOptions

func (i AccountAgreements) GetUpdateOptions() (o AccountAgreementsUpdateOptions)

GetUpdateOptions converts an AccountAgreements to AccountAgreementsUpdateOptions for use in UpdateAccountAgreements

type AccountAgreementsUpdateOptions

type AccountAgreementsUpdateOptions struct {
	EUModel                bool `json:"eu_model,omitzero"`
	MasterServiceAgreement bool `json:"master_service_agreement,omitzero"`
	PrivacyPolicy          bool `json:"privacy_policy,omitzero"`
}

AccountAgreementsUpdateOptions fields are those accepted by UpdateAccountAgreements

type AccountAvailability

type AccountAvailability struct {
	// region id
	Region string `json:"region"`

	// the unavailable resources in a region to the customer
	Unavailable []string `json:"unavailable"`

	// the available resources in a region to the customer
	Available []string `json:"available"`
}

AccountAvailability returns the resources availability in a region to an account.

type AccountBetaProgram

type AccountBetaProgram struct {
	Label       string     `json:"label"`
	ID          string     `json:"id"`
	Description string     `json:"description"`
	Started     *time.Time `json:"-"`
	Ended       *time.Time `json:"-"`

	// Date the account was enrolled in the beta program
	Enrolled *time.Time `json:"-"`
}

AccountBetaProgram represents an enrolled Account Beta Program object, which contains the details and enrollment information of a Beta program that an account is enrolled in.

func (*AccountBetaProgram) UnmarshalJSON

func (cBeta *AccountBetaProgram) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type AccountBetaProgramCreateOpts

type AccountBetaProgramCreateOpts struct {
	ID string `json:"id"`
}

AccountBetaProgramCreateOpts fields are those accepted by JoinBetaProgram

type AccountMaintenance

type AccountMaintenance struct {
	Entity *Entity `json:"entity"`
	Reason string  `json:"reason"`
	Status string  `json:"status"`
	Type   string  `json:"type"`

	MaintenancePolicySet string `json:"maintenance_policy_set"`

	Description  string     `json:"description"`
	Source       string     `json:"source"`
	NotBefore    *time.Time `json:"-"`
	StartTime    *time.Time `json:"-"`
	CompleteTime *time.Time `json:"-"`
}

AccountMaintenance represents a Maintenance object for any entity a user has permissions to view

func (*AccountMaintenance) UnmarshalJSON

func (accountMaintenance *AccountMaintenance) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type AccountRolePermissions

type AccountRolePermissions struct {
	AccountAccess []AccountAccess `json:"account_access"`
	EntityAccess  []AccountAccess `json:"entity_access"`
}

AccountRolePermissions are the account and entity roles for the Account

type AccountServiceTransfer

type AccountServiceTransfer struct {
	Created  *time.Time                   `json:"-"`
	Entities AccountServiceTransferEntity `json:"entities"`
	Expiry   *time.Time                   `json:"-"`
	IsSender bool                         `json:"is_sender"`
	Status   AccountServiceTransferStatus `json:"status"`
	Token    string                       `json:"token"`
	Updated  *time.Time                   `json:"-"`
}

AccountServiceTransfer represents a request to transfer a service on an Account

func (*AccountServiceTransfer) UnmarshalJSON

func (ast *AccountServiceTransfer) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type AccountServiceTransferEntity

type AccountServiceTransferEntity struct {
	Linodes []int `json:"linodes"`
}

AccountServiceTransferEntity represents a collection of the services to include in a transfer request, separated by type. Note: At this time, only Linodes can be transferred.

type AccountServiceTransferRequestOptions

type AccountServiceTransferRequestOptions struct {
	Entities AccountServiceTransferEntity `json:"entities"`
}

type AccountServiceTransferStatus

type AccountServiceTransferStatus string

AccountServiceTransferStatus constants start with AccountServiceTransfer and include Linode API Account Service Transfer Status values.

const (
	AccountServiceTransferAccepted  AccountServiceTransferStatus = "accepted"
	AccountServiceTransferCanceled  AccountServiceTransferStatus = "canceled"
	AccountServiceTransferCompleted AccountServiceTransferStatus = "completed"
	AccountServiceTransferFailed    AccountServiceTransferStatus = "failed"
	AccountServiceTransferPending   AccountServiceTransferStatus = "pending"
	AccountServiceTransferStale     AccountServiceTransferStatus = "stale"
)

AccountServiceTransferStatus constants reflect the current status of an AccountServiceTransfer

type AccountSettings

type AccountSettings struct {
	// The default backups enrollment status for all new Linodes for all users on the account.  When enabled, backups are mandatory per instance.
	BackupsEnabled bool `json:"backups_enabled"`

	// Whether or not Linode Managed service is enabled for the account.
	Managed bool `json:"managed"`

	// Whether or not the Network Helper is enabled for all new Linode Instance Configs on the account.
	NetworkHelper bool `json:"network_helper"`

	// A plan name like "longview-3"..."longview-100", or a nil value for to cancel any existing subscription plan.
	LongviewSubscription *string `json:"longview_subscription"`

	// A string like "disabled", "suspended", or "active" describing the status of this account’s Object Storage service enrollment.
	ObjectStorage *string `json:"object_storage"`

	// A new configuration flag defines whether new Linodes can use Linode and/or legacy config interfaces.
	InterfacesForNewLinodes InterfacesForNewLinodes `json:"interfaces_for_new_linodes"`

	// The slug of the maintenance policy associated with the account.
	MaintenancePolicy string `json:"maintenance_policy"`
}

AccountSettings are the account wide flags or plans that effect new resources

type AccountSettingsUpdateOptions

type AccountSettingsUpdateOptions struct {
	// The default backups enrollment status for all new Linodes for all users on the account.  When enabled, backups are mandatory per instance.
	BackupsEnabled *bool `json:"backups_enabled,omitzero"`

	// The default network helper setting for all new Linodes and Linode Configs for all users on the account.
	NetworkHelper *bool `json:"network_helper,omitzero"`

	// NOTE: Interfaces for new linode setting may not currently be available to all users.
	// A new configuration flag defines whether new Linodes can use Linode and/or legacy config interfaces.
	InterfacesForNewLinodes *InterfacesForNewLinodes `json:"interfaces_for_new_linodes"`

	// The slug of the maintenance policy to set the account to.
	MaintenancePolicy *string `json:"maintenance_policy,omitzero"`
}

AccountSettingsUpdateOptions are the updateable account wide flags or plans that effect new resources.

type AccountTransfer

type AccountTransfer struct {
	Billable int `json:"billable"`
	Quota    int `json:"quota"`
	Used     int `json:"used"`

	RegionTransfers []AccountTransferRegion `json:"region_transfers"`
}

AccountTransfer represents an Account's network utilization for the current month.

type AccountTransferRegion

type AccountTransferRegion struct {
	ID       string `json:"id"`
	Billable int    `json:"billable"`
	Quota    int    `json:"quota"`
	Used     int    `json:"used"`
}

AccountTransferRegion represents an Account's network utilization for the current month in a given region.

type AccountUpdateOptions

type AccountUpdateOptions struct {
	Address1  string `json:"address_1,omitzero"`
	Address2  string `json:"address_2,omitzero"`
	City      string `json:"city,omitzero"`
	Company   string `json:"company,omitzero"`
	Country   string `json:"country,omitzero"`
	Email     string `json:"email,omitzero"`
	FirstName string `json:"first_name,omitzero"`
	LastName  string `json:"last_name,omitzero"`
	Phone     string `json:"phone,omitzero"`
	State     string `json:"state,omitzero"`
	TaxID     string `json:"tax_id,omitzero"`
	Zip       string `json:"zip,omitzero"`
}

AccountUpdateOptions fields are those accepted by UpdateAccount

type AggregateFunction

type AggregateFunction string

AggregateFunction is an enum object for AggregateFunction

const (
	AggregateFunctionMin      AggregateFunction = "min"
	AggregateFunctionMax      AggregateFunction = "max"
	AggregateFunctionAvg      AggregateFunction = "avg"
	AggregateFunctionSum      AggregateFunction = "sum"
	AggregateFunctionRate     AggregateFunction = "rate"
	AggregateFunctionIncrease AggregateFunction = "increase"
	AggregateFunctionCount    AggregateFunction = "count"
	AggregateFunctionLast     AggregateFunction = "last"
)

type AlertChannel

type AlertChannel struct {
	Alerts      AlertsInfo            `json:"alerts"`
	ChannelType AlertNotificationType `json:"channel_type"`
	Details     ChannelDetails        `json:"details"`
	Created     *time.Time            `json:"-"`
	CreatedBy   string                `json:"created_by"`
	Updated     *time.Time            `json:"-"`
	UpdatedBy   string                `json:"updated_by"`
	ID          int                   `json:"id"`
	Label       string                `json:"label"`
	Type        AlertChannelType      `json:"type"`
}

AlertChannel represents a Monitor Channel object.

func (*AlertChannel) UnmarshalJSON

func (a *AlertChannel) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type AlertChannelEnvelope

type AlertChannelEnvelope struct {
	ID    int    `json:"id"`
	Label string `json:"label"`
	Type  string `json:"type"`
	URL   string `json:"url"`
}

AlertChannelEnvelope represents a single alert channel entry returned inside alert definition

type AlertChannelType

type AlertChannelType string
const (
	SystemAlertChannel AlertChannelType = "system"
	UserAlertChannel   AlertChannelType = "user"
)

type AlertDefinition

type AlertDefinition struct {
	ID                int                     `json:"id"`
	Label             string                  `json:"label"`
	Severity          int                     `json:"severity"`
	Type              string                  `json:"type"`
	ServiceType       string                  `json:"service_type"`
	Status            AlertDefinitionStatus   `json:"status"`
	RuleCriteria      RuleCriteria            `json:"rule_criteria"`
	TriggerConditions TriggerConditions       `json:"trigger_conditions"`
	AlertChannels     []AlertChannelEnvelope  `json:"alert_channels"`
	Created           *time.Time              `json:"-"`
	Updated           *time.Time              `json:"-"`
	UpdatedBy         string                  `json:"updated_by"`
	CreatedBy         string                  `json:"created_by"`
	Description       string                  `json:"description"`
	Class             string                  `json:"class"`
	Scope             AlertDefinitionScope    `json:"scope"`
	Regions           []string                `json:"regions"`
	Entities          AlertDefinitionEntities `json:"entities"`
}

AlertDefinition represents an ACLP Alert Definition object

func (*AlertDefinition) UnmarshalJSON

func (i *AlertDefinition) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type AlertDefinitionCreateOptions

type AlertDefinitionCreateOptions struct {
	Label             string               `json:"label"`
	Severity          int                  `json:"severity"`
	ChannelIDs        []int                `json:"channel_ids"`
	RuleCriteria      *RuleCriteriaOptions `json:"rule_criteria,omitzero"`
	TriggerConditions *TriggerConditions   `json:"trigger_conditions,omitzero"`
	EntityIDs         []string             `json:"entity_ids,omitzero"`
	Description       *string              `json:"description,omitzero"`
	Scope             AlertDefinitionScope `json:"scope,omitzero"`
	Regions           []string             `json:"regions,omitzero"`
}

AlertDefinitionCreateOptions are the options used to create a new alert definition.

type AlertDefinitionEntities

type AlertDefinitionEntities struct {
	URL              string `json:"url"`
	Count            int    `json:"count"`
	HasMoreResources bool   `json:"has_more_resources"`
}

AlertDefinitionEntities represents entity metadata for an alert definition. For entity scoped alerts, entities contains the URL to list entities, a count, and a has_more_resources flag. For region/account scoped alerts, the entities are returned as an empty object.

type AlertDefinitionEntity

type AlertDefinitionEntity struct {
	ID    string `json:"id"`
	Label string `json:"label"`
	URL   string `json:"url"`
	Type  string `json:"type"`
}

AlertDefinitionEntity represents a single entity associated with an alert definition.

type AlertDefinitionScope

type AlertDefinitionScope string

AlertDefinitionScope represents the scope of an alert definition: "account", "entity", or "region". Defaults to "entity".

const (
	AlertDefinitionScopeAccount AlertDefinitionScope = "account"
	AlertDefinitionScopeEntity  AlertDefinitionScope = "entity"
	AlertDefinitionScopeRegion  AlertDefinitionScope = "region"
)

type AlertDefinitionStatus

type AlertDefinitionStatus string
const (
	AlertDefinitionStatusProvisioning AlertDefinitionStatus = "provisioning"
	AlertDefinitionStatusEnabling     AlertDefinitionStatus = "enabling"
	AlertDefinitionStatusDisabling    AlertDefinitionStatus = "disabling"
	AlertDefinitionStatusEnabled      AlertDefinitionStatus = "enabled"
	AlertDefinitionStatusDisabled     AlertDefinitionStatus = "disabled"
	AlertDefinitionStatusFailed       AlertDefinitionStatus = "failed"
)

type AlertDefinitionUpdateOptions

type AlertDefinitionUpdateOptions struct {
	Label             string                 `json:"label"`
	Severity          int                    `json:"severity"`
	ChannelIDs        []int                  `json:"channel_ids"`
	RuleCriteria      *RuleCriteriaOptions   `json:"rule_criteria,omitzero"`
	TriggerConditions *TriggerConditions     `json:"trigger_conditions,omitzero"`
	EntityIDs         []string               `json:"entity_ids,omitzero"`
	Description       *string                `json:"description,omitzero"`
	Status            *AlertDefinitionStatus `json:"status,omitzero"`
	Regions           []string               `json:"regions,omitzero"`
}

AlertDefinitionUpdateOptions are the options used to update an alert definition.

type AlertNotificationType

type AlertNotificationType string
const (
	EmailAlertNotification AlertNotificationType = "email"
)

type AlertType

type AlertType string

AlertType represents the type of alert: "user" or "system"

const (
	AlertTypeUser   AlertType = "user"
	AlertTypeSystem AlertType = "system"
)

type AlertsInfo

type AlertsInfo struct {
	URL        string `json:"url"`
	Type       string `json:"type"`
	AlertCount int    `json:"alert_count"`
}

AlertsInfo represents alert information for a channel

type AllocateReserveIPOptions

type AllocateReserveIPOptions struct {
	Type     string `json:"type"`
	Public   bool   `json:"public"`
	Reserved bool   `json:"reserved,omitzero"`
	Region   string `json:"region,omitzero"`
	LinodeID int    `json:"linode_id,omitzero"`
}

type AutovacuumAnalyzeScaleFactor

type AutovacuumAnalyzeScaleFactor struct {
	Description     string  `json:"description"`
	Maximum         float64 `json:"maximum"`
	Minimum         float64 `json:"minimum"`
	RequiresRestart bool    `json:"requires_restart"`
	Type            string  `json:"type"`
}

type AutovacuumAnalyzeThreshold

type AutovacuumAnalyzeThreshold struct {
	Description     string `json:"description"`
	Maximum         int32  `json:"maximum"`
	Minimum         int32  `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type AutovacuumMaxWorkers

type AutovacuumMaxWorkers struct {
	Description     string `json:"description"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type AutovacuumNaptime

type AutovacuumNaptime struct {
	Description     string `json:"description"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type AutovacuumVacuumCostDelay

type AutovacuumVacuumCostDelay struct {
	Description     string `json:"description"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type AutovacuumVacuumCostLimit

type AutovacuumVacuumCostLimit struct {
	Description     string `json:"description"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type AutovacuumVacuumScaleFactor

type AutovacuumVacuumScaleFactor struct {
	Description     string  `json:"description"`
	Maximum         float64 `json:"maximum"`
	Minimum         float64 `json:"minimum"`
	RequiresRestart bool    `json:"requires_restart"`
	Type            string  `json:"type"`
}

type AutovacuumVacuumThreshold

type AutovacuumVacuumThreshold struct {
	Description     string `json:"description"`
	Maximum         int32  `json:"maximum"`
	Minimum         int32  `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type BGWriterDelay

type BGWriterDelay struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type BGWriterFlushAfter

type BGWriterFlushAfter struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type BGWriterLRUMaxPages

type BGWriterLRUMaxPages struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type BGWriterLRUMultiplier

type BGWriterLRUMultiplier struct {
	Description     string  `json:"description"`
	Example         float64 `json:"example"`
	Maximum         float64 `json:"maximum"`
	Minimum         float64 `json:"minimum"`
	RequiresRestart bool    `json:"requires_restart"`
	Type            string  `json:"type"`
}

type BetaProgram

type BetaProgram struct {
	Label       string `json:"label"`
	ID          string `json:"id"`
	Description string `json:"description"`

	// Start date of the beta program.
	Started *time.Time `json:"-"`

	// End date of the beta program.
	Ended *time.Time `json:"-"`

	// Greenlight is a program that allows customers to gain access to
	// certain beta programs and to collect direct feedback from those customers.
	GreenlightOnly bool `json:"greenlight_only"`

	// Link to product marketing page for the beta program.
	MoreInfo string `json:"more_info"`
}

BetaProgram is a new product or service that is not generally available to all Akamai customers. Users must enroll into a beta in order to access the functionality.

func (*BetaProgram) UnmarshalJSON

func (beta *BetaProgram) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type ChannelDetails

type ChannelDetails struct {
	Email *EmailChannelDetails `json:"email"`
}

ChannelDetails represents the details block for an AlertChannel

type ChartType

type ChartType string

ChartType is an enum object for Chart type

const (
	ChartTypeLine ChartType = "line"
	ChartTypeArea ChartType = "area"
)

type ChildAccount

type ChildAccount = Account

ChildAccount represents an account under the current account. NOTE: This is an alias to prevent any future breaking changes.

type ChildAccountToken

type ChildAccountToken = Token

ChildAccountToken represents a short-lived token created using the CreateChildAccountToken(...) function. NOTE: This is an alias to prevent any future breaking changes.

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client is a wrapper around the http client

func NewClient

func NewClient(hc *http.Client) (client Client, err error)

NewClient factory to create new Client struct. nolint:funlen

func NewClientFromEnv

func NewClientFromEnv(hc *http.Client) (*Client, error)

NewClientFromEnv creates a Client and initializes it with values from the LINODE_CONFIG file and the LINODE_TOKEN environment variable.

func (*Client) AcceptAccountServiceTransfer

func (c *Client) AcceptAccountServiceTransfer(ctx context.Context, token string) error

AcceptAccountServiceTransfer accepts an AccountServiceTransfer for the provided token to receive the services included in the transfer to the Account.

func (*Client) AcknowledgeAccountAgreements

func (c *Client) AcknowledgeAccountAgreements(ctx context.Context, opts AccountAgreementsUpdateOptions) error

AcknowledgeAccountAgreements acknowledges account agreements for the Account

func (*Client) AddInstanceIPAddress

func (c *Client) AddInstanceIPAddress(ctx context.Context, linodeID int, opts InstanceIPAddOptions) (*InstanceIP, error)

AddInstanceIPAddress adds a public or private IP to a Linode instance

func (*Client) AddPaymentMethod

func (c *Client) AddPaymentMethod(ctx context.Context, opts PaymentMethodCreateOptions) error

AddPaymentMethod adds the provided payment method to the account

func (*Client) AddPromoCode

func (c *Client) AddPromoCode(ctx context.Context, opts PromoCodeCreateOptions) (*Promotion, error)

AddPromoCode adds the provided promo code to the account

func (*Client) AddRetryCondition

func (c *Client) AddRetryCondition(retryCondition RetryConditional) *Client

AddRetryCondition adds a RetryConditional function to the Client

func (*Client) AllocateReserveIP

func (c *Client) AllocateReserveIP(ctx context.Context, opts AllocateReserveIPOptions) (*InstanceIP, error)

AllocateReserveIP allocates a new IPv4 address to the Account, with the option to reserve it and optionally assign it to a Linode.

func (*Client) AppendInstanceConfigInterface

func (c *Client) AppendInstanceConfigInterface(
	ctx context.Context,
	linodeID int,
	configID int,
	opts InstanceConfigInterfaceCreateOptions,
) (*InstanceConfigInterface, error)

func (*Client) AssignInstanceReservedIP

func (c *Client) AssignInstanceReservedIP(ctx context.Context, linodeID int, opts InstanceReserveIPOptions) (*InstanceIP, error)

AssignInstanceReservedIP adds additional reserved IPV4 addresses to an existing linode

func (*Client) AssignPlacementGroupLinodes

func (c *Client) AssignPlacementGroupLinodes(
	ctx context.Context,
	id int,
	options PlacementGroupAssignOptions,
) (*PlacementGroup, error)

AssignPlacementGroupLinodes assigns the specified Linodes to the given placement group.

func (*Client) AttachVolume

func (c *Client) AttachVolume(ctx context.Context, volumeID int, opts *VolumeAttachOptions) (*Volume, error)

AttachVolume attaches a volume to a Linode instance

func (*Client) BootInstance

func (c *Client) BootInstance(ctx context.Context, linodeID int, opts InstanceBootOptions) error

BootInstance will boot a Linode instance A configID of 0 will cause Linode to choose the last/best config

func (*Client) CancelAccountServiceTransfer

func (c *Client) CancelAccountServiceTransfer(ctx context.Context, token string) error

CancelAccountServiceTransfer cancels the AccountServiceTransfer for the provided token.

func (*Client) CancelInstanceBackups

func (c *Client) CancelInstanceBackups(ctx context.Context, linodeID int) error

CancelInstanceBackups Cancels backups for the specified Linode.

func (*Client) CancelObjectStorage

func (c *Client) CancelObjectStorage(ctx context.Context) error

CancelObjectStorage cancels and removes all object storage from the Account

func (*Client) CloneDomain

func (c *Client) CloneDomain(ctx context.Context, domainID int, opts DomainCloneOptions) (*Domain, error)

CloneDomain clones a Domain and all associated DNS records from a Domain that is registered in Linode's DNS manager.

func (*Client) CloneInstance

func (c *Client) CloneInstance(ctx context.Context, linodeID int, opts InstanceCloneOptions) (*Instance, error)

CloneInstance clone an existing Instances Disks and Configuration profiles to another Linode Instance

func (*Client) CloneInstanceDisk

func (c *Client) CloneInstanceDisk(ctx context.Context, linodeID, diskID int) (*InstanceDisk, error)

CloneInstanceDisk clones the given InstanceDisk for the given Instance

func (*Client) CloneVolume

func (c *Client) CloneVolume(ctx context.Context, volumeID int, opts VolumeCloneOptions) (*Volume, error)

CloneVolume clones a Linode volume

func (*Client) ConfirmTwoFactor

func (c *Client) ConfirmTwoFactor(ctx context.Context, opts ConfirmTwoFactorOptions) (*ConfirmTwoFactorResponse, error)

ConfirmTwoFactor confirms that you can successfully generate Two Factor codes and enables TFA on your Account.

func (*Client) CreateChildAccountToken

func (c *Client) CreateChildAccountToken(ctx context.Context, euuid string) (*ChildAccountToken, error)

CreateChildAccountToken creates a short-lived token that can be used to access the Linode API under a child account. The attributes of this token are not currently configurable. NOTE: Parent/Child related features may not be generally available.

func (*Client) CreateDomain

func (c *Client) CreateDomain(ctx context.Context, opts DomainCreateOptions) (*Domain, error)

CreateDomain creates a Domain

func (*Client) CreateDomainRecord

func (c *Client) CreateDomainRecord(ctx context.Context, domainID int, opts DomainRecordCreateOptions) (*DomainRecord, error)

CreateDomainRecord creates a DomainRecord

func (*Client) CreateFirewall

func (c *Client) CreateFirewall(ctx context.Context, opts FirewallCreateOptions) (*Firewall, error)

CreateFirewall creates a single Firewall with at least one set of inbound or outbound rules

func (*Client) CreateFirewallDevice

func (c *Client) CreateFirewallDevice(ctx context.Context, firewallID int, opts FirewallDeviceCreateOptions) (*FirewallDevice, error)

CreateFirewallDevice associates a Device with a given Firewall

func (*Client) CreateFirewallRuleSet

func (c *Client) CreateFirewallRuleSet(ctx context.Context, opts FirewallRuleSetCreateOptions) (*FirewallRuleSet, error)

CreateFirewallRuleSet creates a new Rule Set.

func (*Client) CreateIPv6Range

func (c *Client) CreateIPv6Range(ctx context.Context, opts IPv6RangeCreateOptions) (*IPv6Range, error)

CreateIPv6Range creates an IPv6 Range and assigns it based on the provided Linode or route target IPv6 SLAAC address.

func (*Client) CreateImage

func (c *Client) CreateImage(ctx context.Context, opts ImageCreateOptions) (*Image, error)

CreateImage creates an Image.

func (*Client) CreateImageShareGroup

func (c *Client) CreateImageShareGroup(
	ctx context.Context,
	opts ImageShareGroupCreateOptions,
) (*ProducerImageShareGroup, error)

CreateImageShareGroup allows the producer to create a new ImageShareGroup. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) CreateImageUpload

func (c *Client) CreateImageUpload(ctx context.Context, opts ImageCreateUploadOptions) (*Image, string, error)

CreateImageUpload creates an Image and an upload URL.

func (*Client) CreateInstance

func (c *Client) CreateInstance(ctx context.Context, opts InstanceCreateOptions) (*Instance, error)

CreateInstance creates a Linode instance

func (*Client) CreateInstanceConfig

func (c *Client) CreateInstanceConfig(ctx context.Context, linodeID int, opts InstanceConfigCreateOptions) (*InstanceConfig, error)

CreateInstanceConfig creates a new InstanceConfig for the given Instance

func (*Client) CreateInstanceDisk

func (c *Client) CreateInstanceDisk(ctx context.Context, linodeID int, opts InstanceDiskCreateOptions) (*InstanceDisk, error)

CreateInstanceDisk creates a new InstanceDisk for the given Instance

func (*Client) CreateInstanceSnapshot

func (c *Client) CreateInstanceSnapshot(ctx context.Context, linodeID int, opts InstanceSnapshotCreateOptions) (*InstanceSnapshot, error)

CreateInstanceSnapshot Creates or Replaces the snapshot Backup of a Linode. If a previous snapshot exists for this Linode, it will be deleted.

func (*Client) CreateInterface

func (c *Client) CreateInterface(ctx context.Context, linodeID int, opts LinodeInterfaceCreateOptions) (*LinodeInterface, error)

func (*Client) CreateLKECluster

func (c *Client) CreateLKECluster(ctx context.Context, opts LKEClusterCreateOptions) (*LKECluster, error)

CreateLKECluster creates a LKECluster

func (*Client) CreateLKENodePool

func (c *Client) CreateLKENodePool(ctx context.Context, clusterID int, opts LKENodePoolCreateOptions) (*LKENodePool, error)

CreateLKENodePool creates a LKENodePool

func (*Client) CreateLock

func (c *Client) CreateLock(ctx context.Context, opts LockCreateOptions) (*Lock, error)

CreateLock creates a lock for a resource NOTE: Locks can only be used with v4beta.

func (*Client) CreateLongviewClient

func (c *Client) CreateLongviewClient(ctx context.Context, opts LongviewClientCreateOptions) (*LongviewClient, error)

CreateLongviewClient creates a Longview Client

func (*Client) CreateMonitorAlertDefinition

func (c *Client) CreateMonitorAlertDefinition(
	ctx context.Context,
	serviceType string,
	opts AlertDefinitionCreateOptions,
) (*AlertDefinition, error)

CreateMonitorAlertDefinition creates an ACLP Monitor Alert Definition.

func (*Client) CreateMonitorAlertDefinitionWithIdempotency

func (c *Client) CreateMonitorAlertDefinitionWithIdempotency(
	ctx context.Context,
	serviceType string,
	opts AlertDefinitionCreateOptions,
	idempotencyKey string,
) (*AlertDefinition, error)

CreateMonitorAlertDefinitionWithIdempotency creates an ACLP Monitor Alert Definition and optionally sends an Idempotency-Key header to make the request idempotent.

func (*Client) CreateMonitorServiceTokenForServiceType

func (c *Client) CreateMonitorServiceTokenForServiceType(
	ctx context.Context,
	serviceType string,
	opts MonitorTokenCreateOptions,
) (*MonitorServiceToken, error)

CreateMonitorServiceTokenForServiceType to create token for a given serviceType

func (*Client) CreateMySQLDatabase

func (c *Client) CreateMySQLDatabase(ctx context.Context, opts MySQLCreateOptions) (*MySQLDatabase, error)

CreateMySQLDatabase creates a new MySQL Database using the createOpts as configuration, returns the new MySQL Database

func (*Client) CreateNodeBalancer

func (c *Client) CreateNodeBalancer(ctx context.Context, opts NodeBalancerCreateOptions) (*NodeBalancer, error)

CreateNodeBalancer creates a NodeBalancer

func (*Client) CreateNodeBalancerConfig

func (c *Client) CreateNodeBalancerConfig(ctx context.Context, nodebalancerID int, opts NodeBalancerConfigCreateOptions) (*NodeBalancerConfig, error)

CreateNodeBalancerConfig creates a NodeBalancerConfig

func (*Client) CreateNodeBalancerNode

func (c *Client) CreateNodeBalancerNode(ctx context.Context, nodebalancerID int, configID int, opts NodeBalancerNodeCreateOptions) (*NodeBalancerNode, error)

CreateNodeBalancerNode creates a NodeBalancerNode

func (*Client) CreateOAuthClient

func (c *Client) CreateOAuthClient(ctx context.Context, opts OAuthClientCreateOptions) (*OAuthClient, error)

CreateOAuthClient creates an OAuthClient

func (*Client) CreateObjectStorageBucket

func (c *Client) CreateObjectStorageBucket(ctx context.Context, opts ObjectStorageBucketCreateOptions) (*ObjectStorageBucket, error)

CreateObjectStorageBucket creates an ObjectStorageBucket

func (*Client) CreateObjectStorageKey

func (c *Client) CreateObjectStorageKey(ctx context.Context, opts ObjectStorageKeyCreateOptions) (*ObjectStorageKey, error)

CreateObjectStorageKey creates a ObjectStorageKey

func (*Client) CreateObjectStorageObjectURL

func (c *Client) CreateObjectStorageObjectURL(
	ctx context.Context,
	regionID, label string,
	opts ObjectStorageObjectURLCreateOptions,
) (*ObjectStorageObjectURL, error)

func (*Client) CreatePayment

func (c *Client) CreatePayment(ctx context.Context, opts PaymentCreateOptions) (*Payment, error)

CreatePayment creates a Payment

func (*Client) CreatePlacementGroup

func (c *Client) CreatePlacementGroup(
	ctx context.Context,
	options PlacementGroupCreateOptions,
) (*PlacementGroup, error)

CreatePlacementGroup creates a placement group with the specified options.

func (*Client) CreatePostgresDatabase

func (c *Client) CreatePostgresDatabase(ctx context.Context, opts PostgresCreateOptions) (*PostgresDatabase, error)

CreatePostgresDatabase creates a new Postgres Database using the createOpts as configuration, returns the new Postgres Database

func (*Client) CreateSSHKey

func (c *Client) CreateSSHKey(ctx context.Context, opts SSHKeyCreateOptions) (*SSHKey, error)

CreateSSHKey creates a SSHKey

func (*Client) CreateStackscript

func (c *Client) CreateStackscript(ctx context.Context, opts StackscriptCreateOptions) (*Stackscript, error)

CreateStackscript creates a StackScript

func (*Client) CreateTag

func (c *Client) CreateTag(ctx context.Context, opts TagCreateOptions) (*Tag, error)

CreateTag creates a Tag

func (*Client) CreateToken

func (c *Client) CreateToken(ctx context.Context, opts TokenCreateOptions) (*Token, error)

CreateToken creates a Token

func (*Client) CreateTwoFactorSecret

func (c *Client) CreateTwoFactorSecret(ctx context.Context) (*TwoFactorSecret, error)

CreateTwoFactorSecret generates a Two Factor secret for your User.

func (*Client) CreateUser

func (c *Client) CreateUser(ctx context.Context, opts UserCreateOptions) (*User, error)

CreateUser creates a User. The email address must be confirmed before the User account can be accessed.

func (*Client) CreateVPC

func (c *Client) CreateVPC(
	ctx context.Context,
	opts VPCCreateOptions,
) (*VPC, error)

func (*Client) CreateVPCSubnet

func (c *Client) CreateVPCSubnet(
	ctx context.Context,
	opts VPCSubnetCreateOptions,
	vpcID int,
) (*VPCSubnet, error)

func (*Client) CreateVolume

func (c *Client) CreateVolume(ctx context.Context, opts VolumeCreateOptions) (*Volume, error)

CreateVolume creates a Linode Volume

func (*Client) DeleteDomain

func (c *Client) DeleteDomain(ctx context.Context, domainID int) error

DeleteDomain deletes the Domain with the specified id

func (*Client) DeleteDomainRecord

func (c *Client) DeleteDomainRecord(ctx context.Context, domainID int, recordID int) error

DeleteDomainRecord deletes the DomainRecord with the specified id

func (*Client) DeleteFirewall

func (c *Client) DeleteFirewall(ctx context.Context, firewallID int) error

DeleteFirewall deletes a single Firewall with the provided ID

func (*Client) DeleteFirewallDevice

func (c *Client) DeleteFirewallDevice(ctx context.Context, firewallID, deviceID int) error

DeleteFirewallDevice disassociates a Device with a given Firewall

func (*Client) DeleteFirewallRuleSet

func (c *Client) DeleteFirewallRuleSet(ctx context.Context, rulesetID int) error

DeleteFirewallRuleSet deletes a Rule Set by ID.

func (*Client) DeleteIPv6Range

func (c *Client) DeleteIPv6Range(ctx context.Context, ipRange string) error

DeleteIPv6Range deletes an IPv6 Range.

func (*Client) DeleteImage

func (c *Client) DeleteImage(ctx context.Context, imageID string) error

DeleteImage deletes the Image with the specified id.

func (*Client) DeleteImageShareGroup

func (c *Client) DeleteImageShareGroup(ctx context.Context, imageShareGroupID int) error

DeleteImageShareGroup deletes the specified ImageShareGroup owned by the producer. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) DeleteInstance

func (c *Client) DeleteInstance(ctx context.Context, linodeID int) error

DeleteInstance deletes a Linode instance

func (*Client) DeleteInstanceConfig

func (c *Client) DeleteInstanceConfig(ctx context.Context, linodeID int, configID int) error

DeleteInstanceConfig deletes a Linode InstanceConfig

func (*Client) DeleteInstanceConfigInterface

func (c *Client) DeleteInstanceConfigInterface(
	ctx context.Context,
	linodeID int,
	configID int,
	interfaceID int,
) error

func (*Client) DeleteInstanceDisk

func (c *Client) DeleteInstanceDisk(ctx context.Context, linodeID int, diskID int) error

DeleteInstanceDisk deletes a Linode Instance Disk

func (*Client) DeleteInstanceIPAddress

func (c *Client) DeleteInstanceIPAddress(ctx context.Context, linodeID int, ipAddress string) error

func (*Client) DeleteInterface

func (c *Client) DeleteInterface(ctx context.Context, linodeID int, interfaceID int) error

func (*Client) DeleteLKECluster

func (c *Client) DeleteLKECluster(ctx context.Context, clusterID int) error

DeleteLKECluster deletes the LKECluster with the specified id

func (*Client) DeleteLKEClusterControlPlaneACL

func (c *Client) DeleteLKEClusterControlPlaneACL(
	ctx context.Context,
	clusterID int,
) error

DeleteLKEClusterControlPlaneACL deletes the ACL configuration for the given cluster's control plane.

func (*Client) DeleteLKEClusterKubeconfig

func (c *Client) DeleteLKEClusterKubeconfig(ctx context.Context, clusterID int) error

DeleteLKEClusterKubeconfig deletes the Kubeconfig for the LKE Cluster specified

func (*Client) DeleteLKEClusterServiceToken

func (c *Client) DeleteLKEClusterServiceToken(ctx context.Context, clusterID int) error

DeleteLKEClusterServiceToken deletes and regenerate the service account token for a Cluster.

func (*Client) DeleteLKENodePool

func (c *Client) DeleteLKENodePool(ctx context.Context, clusterID, poolID int) error

DeleteLKENodePool deletes the LKENodePool with the specified id

func (*Client) DeleteLKENodePoolNode

func (c *Client) DeleteLKENodePoolNode(ctx context.Context, clusterID int, nodeID string) error

DeleteLKENodePoolNode deletes a given node from a node pool

func (*Client) DeleteLock

func (c *Client) DeleteLock(ctx context.Context, lockID int) error

DeleteLock deletes a single Lock with the provided ID NOTE: Locks can only be used with v4beta.

func (*Client) DeleteLongviewClient

func (c *Client) DeleteLongviewClient(ctx context.Context, clientID int) error

DeleteLongviewClient deletes a Longview Client

func (*Client) DeleteMonitorAlertDefinition

func (c *Client) DeleteMonitorAlertDefinition(ctx context.Context, serviceType string, alertID int) error

DeleteMonitorAlertDefinition deletes an ACLP Monitor Alert Definition.

func (*Client) DeleteMySQLDatabase

func (c *Client) DeleteMySQLDatabase(ctx context.Context, databaseID int) error

DeleteMySQLDatabase deletes an existing MySQL Database with the given id

func (*Client) DeleteNodeBalancer

func (c *Client) DeleteNodeBalancer(ctx context.Context, nodebalancerID int) error

DeleteNodeBalancer deletes the NodeBalancer with the specified id

func (*Client) DeleteNodeBalancerConfig

func (c *Client) DeleteNodeBalancerConfig(ctx context.Context, nodebalancerID int, configID int) error

DeleteNodeBalancerConfig deletes the NodeBalancerConfig with the specified id

func (*Client) DeleteNodeBalancerNode

func (c *Client) DeleteNodeBalancerNode(ctx context.Context, nodebalancerID int, configID int, nodeID int) error

DeleteNodeBalancerNode deletes the NodeBalancerNode with the specified id

func (*Client) DeleteOAuthClient

func (c *Client) DeleteOAuthClient(ctx context.Context, clientID string) error

DeleteOAuthClient deletes the OAuthClient with the specified id

func (*Client) DeleteObjectStorageBucket

func (c *Client) DeleteObjectStorageBucket(ctx context.Context, regionID, label string) error

DeleteObjectStorageBucket deletes the ObjectStorageBucket with the specified label

func (*Client) DeleteObjectStorageBucketCert

func (c *Client) DeleteObjectStorageBucketCert(ctx context.Context, regionID, bucket string) error

DeleteObjectStorageBucketCert deletes an ObjectStorageBucketCert

func (*Client) DeleteObjectStorageKey

func (c *Client) DeleteObjectStorageKey(ctx context.Context, keyID int) error

DeleteObjectStorageKey deletes the ObjectStorageKey with the specified id

func (*Client) DeletePaymentMethod

func (c *Client) DeletePaymentMethod(ctx context.Context, paymentMethodID int) error

DeletePaymentMethod deletes the payment method with the provided ID

func (*Client) DeletePhoneNumber

func (c *Client) DeletePhoneNumber(ctx context.Context) error

DeletePhoneNumber deletes the verified phone number for the User making this request.

func (*Client) DeletePlacementGroup

func (c *Client) DeletePlacementGroup(
	ctx context.Context,
	id int,
) error

DeletePlacementGroup deletes a placement group with the specified ID.

func (*Client) DeletePostgresDatabase

func (c *Client) DeletePostgresDatabase(ctx context.Context, databaseID int) error

DeletePostgresDatabase deletes an existing Postgres Database with the given id

func (*Client) DeleteProfileApp

func (c *Client) DeleteProfileApp(ctx context.Context, appID int) error

DeleteProfileApp revokes the given ProfileApp's access to the account

func (*Client) DeleteProfileDevice

func (c *Client) DeleteProfileDevice(ctx context.Context, deviceID int) error

DeleteProfileDevice revokes the given ProfileDevice's status as a trusted device

func (*Client) DeleteReservedIPAddress

func (c *Client) DeleteReservedIPAddress(ctx context.Context, ipAddress string) error

DeleteReservedIPAddress deletes a reserved IP address NOTE: Reserved IP feature may not currently be available to all users.

func (*Client) DeleteSSHKey

func (c *Client) DeleteSSHKey(ctx context.Context, keyID int) error

DeleteSSHKey deletes the SSHKey with the specified id

func (*Client) DeleteStackscript

func (c *Client) DeleteStackscript(ctx context.Context, scriptID int) error

DeleteStackscript deletes the StackScript with the specified id

func (*Client) DeleteTag

func (c *Client) DeleteTag(ctx context.Context, label string) error

DeleteTag deletes the Tag with the specified id

func (*Client) DeleteToken

func (c *Client) DeleteToken(ctx context.Context, tokenID int) error

DeleteToken deletes the Token with the specified id

func (*Client) DeleteUser

func (c *Client) DeleteUser(ctx context.Context, userID string) error

DeleteUser deletes the User with the specified id

func (*Client) DeleteVPC

func (c *Client) DeleteVPC(ctx context.Context, vpcID int) error

func (*Client) DeleteVPCSubnet

func (c *Client) DeleteVPCSubnet(ctx context.Context, vpcID int, subnetID int) error

func (*Client) DeleteVolume

func (c *Client) DeleteVolume(ctx context.Context, volumeID int) error

DeleteVolume deletes the Volume with the specified id

func (*Client) DetachVolume

func (c *Client) DetachVolume(ctx context.Context, volumeID int) error

DetachVolume detaches a Linode volume

func (*Client) DisableTwoFactor

func (c *Client) DisableTwoFactor(ctx context.Context) error

DisableTwoFactor disables Two Factor Authentication for your User.

func (*Client) EnableInstanceBackups

func (c *Client) EnableInstanceBackups(ctx context.Context, linodeID int) error

EnableInstanceBackups Enables backups for the specified Linode.

func (*Client) ErrorAndLogf

func (c *Client) ErrorAndLogf(format string, args ...any) error

func (*Client) GetAccount

func (c *Client) GetAccount(ctx context.Context) (*Account, error)

GetAccount gets the contact and billing information related to the Account.

func (*Client) GetAccountAgreements

func (c *Client) GetAccountAgreements(ctx context.Context) (*AccountAgreements, error)

GetAccountAgreements gets all agreements and their acceptance status for the Account.

func (*Client) GetAccountAvailability

func (c *Client) GetAccountAvailability(ctx context.Context, regionID string) (*AccountAvailability, error)

GetAccountAvailability gets the resources availability in a region to the customer.

func (*Client) GetAccountBetaProgram

func (c *Client) GetAccountBetaProgram(ctx context.Context, betaID string) (*AccountBetaProgram, error)

GetAccountBetaProgram gets the details of a beta program an account is enrolled in.

func (*Client) GetAccountRolePermissions

func (c *Client) GetAccountRolePermissions(ctx context.Context) (*AccountRolePermissions, error)

GetAccountRolePermissions returns the role permissions for this Account

func (*Client) GetAccountServiceTransfer

func (c *Client) GetAccountServiceTransfer(ctx context.Context, token string) (*AccountServiceTransfer, error)

GetAccountServiceTransfer gets the details of the AccountServiceTransfer for the provided token.

func (*Client) GetAccountSettings

func (c *Client) GetAccountSettings(ctx context.Context) (*AccountSettings, error)

GetAccountSettings gets the account wide flags or plans that effect new resources

func (*Client) GetAccountTransfer

func (c *Client) GetAccountTransfer(ctx context.Context) (*AccountTransfer, error)

GetAccountTransfer gets current Account's network utilization for the current month.

func (*Client) GetBetaProgram

func (c *Client) GetBetaProgram(ctx context.Context, betaID string) (*BetaProgram, error)

GetBetaProgram gets the beta program's detail with the ID

func (*Client) GetChildAccount

func (c *Client) GetChildAccount(ctx context.Context, euuid string) (*ChildAccount, error)

GetChildAccount gets a single child accounts under the current account. NOTE: Parent/Child related features may not be generally available.

func (*Client) GetDatabaseEngine

func (c *Client) GetDatabaseEngine(ctx context.Context, _ *ListOptions, engineID string) (*DatabaseEngine, error)

GetDatabaseEngine returns a specific Database Engine. This endpoint is cached by default.

func (*Client) GetDatabaseType

func (c *Client) GetDatabaseType(ctx context.Context, _ *ListOptions, typeID string) (*DatabaseType, error)

GetDatabaseType returns a specific Database Type. This endpoint is cached by default.

func (*Client) GetDomain

func (c *Client) GetDomain(ctx context.Context, domainID int) (*Domain, error)

GetDomain gets the domain with the provided ID

func (*Client) GetDomainRecord

func (c *Client) GetDomainRecord(ctx context.Context, domainID int, recordID int) (*DomainRecord, error)

GetDomainRecord gets the domainrecord with the provided ID

func (*Client) GetDomainZoneFile

func (c *Client) GetDomainZoneFile(ctx context.Context, domainID int) (*DomainZoneFile, error)

GetDomainZoneFile gets the zone file for the last rendered zone for the specified domain.

func (*Client) GetEntityRoles

func (c *Client) GetEntityRoles(ctx context.Context, username string, entityType string, entityID int) ([]string, error)

GetEntityRoles returns a list of roles for the entity and user

func (*Client) GetEvent

func (c *Client) GetEvent(ctx context.Context, eventID int) (*Event, error)

GetEvent gets the Event with the Event ID

func (*Client) GetFirewall

func (c *Client) GetFirewall(ctx context.Context, firewallID int) (*Firewall, error)

GetFirewall gets a single Firewall with the provided ID

func (*Client) GetFirewallDevice

func (c *Client) GetFirewallDevice(ctx context.Context, firewallID, deviceID int) (*FirewallDevice, error)

GetFirewallDevice gets a FirewallDevice given an ID

func (*Client) GetFirewallRuleSet

func (c *Client) GetFirewallRuleSet(ctx context.Context, rulesetID int) (*FirewallRuleSet, error)

GetFirewallRuleSet fetches a Rule Set by ID.

func (*Client) GetFirewallRules

func (c *Client) GetFirewallRules(ctx context.Context, firewallID int) (*FirewallRules, error)

GetFirewallRules gets the FirewallRules for the given Firewall.

func (*Client) GetFirewallRulesExpansion

func (c *Client) GetFirewallRulesExpansion(ctx context.Context, firewallID int) (*FirewallRules, error)

GetFirewallRulesExpansion gets the expanded FirewallRules for the given Firewall.

func (*Client) GetFirewallSettings

func (c *Client) GetFirewallSettings(ctx context.Context) (*FirewallSettings, error)

GetFirewallSettings returns default firewalls for Linodes, Linode VPC and public interfaces, and NodeBalancers.

func (*Client) GetFirewallTemplate

func (c *Client) GetFirewallTemplate(ctx context.Context, slug string) (*FirewallTemplate, error)

GetFirewallTemplate gets a FirewallTemplate given a slug. NOTE: This feature may not currently be available to all users.

func (*Client) GetIPAddress

func (c *Client) GetIPAddress(ctx context.Context, id string) (*InstanceIP, error)

GetIPAddress gets the IPAddress with the provided IP.

func (*Client) GetIPv6Pool

func (c *Client) GetIPv6Pool(ctx context.Context, id string) (*IPv6Range, error)

GetIPv6Pool gets the template with the provided ID

func (*Client) GetIPv6Range

func (c *Client) GetIPv6Range(ctx context.Context, ipRange string) (*IPv6Range, error)

GetIPv6Range gets details about an IPv6 range

func (*Client) GetImage

func (c *Client) GetImage(ctx context.Context, imageID string) (*Image, error)

GetImage gets the Image with the provided ID.

func (*Client) GetImageShareGroup

func (c *Client) GetImageShareGroup(
	ctx context.Context,
	imageShareGroupID int,
) (*ProducerImageShareGroup, error)

GetImageShareGroup gets the specified ImageShareGroup owned by the producer. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) GetInstance

func (c *Client) GetInstance(ctx context.Context, linodeID int) (*Instance, error)

GetInstance gets the instance with the provided ID

func (*Client) GetInstanceBackups

func (c *Client) GetInstanceBackups(ctx context.Context, linodeID int) (*InstanceBackupsResponse, error)

GetInstanceBackups gets the Instance's available Backups. This is not called ListInstanceBackups because a single object is returned, matching the API response.

func (*Client) GetInstanceConfig

func (c *Client) GetInstanceConfig(ctx context.Context, linodeID int, configID int) (*InstanceConfig, error)

GetInstanceConfig gets the template with the provided ID

func (*Client) GetInstanceConfigInterface

func (c *Client) GetInstanceConfigInterface(
	ctx context.Context,
	linodeID int,
	configID int,
	interfaceID int,
) (*InstanceConfigInterface, error)

func (*Client) GetInstanceDisk

func (c *Client) GetInstanceDisk(ctx context.Context, linodeID int, diskID int) (*InstanceDisk, error)

GetInstanceDisk gets the template with the provided ID

func (*Client) GetInstanceIPAddress

func (c *Client) GetInstanceIPAddress(ctx context.Context, linodeID int, ipaddress string) (*InstanceIP, error)

GetInstanceIPAddress gets the IPAddress for a Linode instance matching a supplied IP address

func (*Client) GetInstanceIPAddresses

func (c *Client) GetInstanceIPAddresses(ctx context.Context, linodeID int) (*InstanceIPAddressResponse, error)

GetInstanceIPAddresses gets the IPAddresses for a Linode instance

func (*Client) GetInstanceSnapshot

func (c *Client) GetInstanceSnapshot(ctx context.Context, linodeID int, snapshotID int) (*InstanceSnapshot, error)

GetInstanceSnapshot gets the snapshot with the provided ID

func (*Client) GetInstanceStats

func (c *Client) GetInstanceStats(ctx context.Context, linodeID int) (*InstanceStats, error)

GetInstanceStats gets the template with the provided ID

func (*Client) GetInstanceStatsByDate

func (c *Client) GetInstanceStatsByDate(ctx context.Context, linodeID int, year int, month int) (*InstanceStats, error)

GetInstanceStatsByDate gets the template with the provided ID, year, and month

func (*Client) GetInstanceTransfer

func (c *Client) GetInstanceTransfer(ctx context.Context, linodeID int) (*InstanceTransfer, error)

GetInstanceTransfer gets the instance's network transfer pool statistics for the current month.

func (*Client) GetInstanceTransferMonthly

func (c *Client) GetInstanceTransferMonthly(ctx context.Context, linodeID, year, month int) (*MonthlyInstanceTransferStats, error)

GetInstanceTransferMonthly gets the instance's network transfer pool statistics for a specific month.

func (*Client) GetInterface

func (c *Client) GetInterface(ctx context.Context, linodeID int, interfaceID int) (*LinodeInterface, error)

func (*Client) GetInterfaceSettings

func (c *Client) GetInterfaceSettings(ctx context.Context, linodeID int) (*InterfaceSettings, error)

func (*Client) GetInvoice

func (c *Client) GetInvoice(ctx context.Context, invoiceID int) (*Invoice, error)

GetInvoice gets a single Invoice matching the provided ID

func (*Client) GetKernel

func (c *Client) GetKernel(ctx context.Context, kernelID string) (*LinodeKernel, error)

GetKernel gets the kernel with the provided ID. This endpoint is cached by default.

func (*Client) GetLKECluster

func (c *Client) GetLKECluster(ctx context.Context, clusterID int) (*LKECluster, error)

GetLKECluster gets the lkeCluster with the provided ID

func (*Client) GetLKEClusterAPLConsoleURL

func (c *Client) GetLKEClusterAPLConsoleURL(ctx context.Context, clusterID int) (string, error)

GetLKEClusterAPLConsoleURL gets the URL of this cluster's APL installation if this cluster is APL-enabled.

func (*Client) GetLKEClusterAPLHealthCheckURL

func (c *Client) GetLKEClusterAPLHealthCheckURL(ctx context.Context, clusterID int) (string, error)

GetLKEClusterAPLHealthCheckURL gets the URL of this cluster's APL health check endpoint if this cluster is APL-enabled.

func (*Client) GetLKEClusterControlPlaneACL

func (c *Client) GetLKEClusterControlPlaneACL(ctx context.Context, clusterID int) (*LKEClusterControlPlaneACLResponse, error)

GetLKEClusterControlPlaneACL gets the ACL configuration for the given cluster's control plane.

func (*Client) GetLKEClusterKubeconfig

func (c *Client) GetLKEClusterKubeconfig(ctx context.Context, clusterID int) (*LKEClusterKubeconfig, error)

GetLKEClusterKubeconfig gets the Kubeconfig for the LKE Cluster specified

func (*Client) GetLKENodePool

func (c *Client) GetLKENodePool(ctx context.Context, clusterID, poolID int) (*LKENodePool, error)

GetLKENodePool gets the LKENodePool with the provided ID

func (*Client) GetLKENodePoolNode

func (c *Client) GetLKENodePoolNode(ctx context.Context, clusterID int, nodeID string) (*LKENodePoolLinode, error)

GetLKENodePoolNode gets the LKENodePoolLinode with the provided ID

func (*Client) GetLKETierVersion

func (c *Client) GetLKETierVersion(ctx context.Context, tier string, versionID string) (*LKETierVersion, error)

GetLKETierVersion gets the details of a specific LKE tier version. NOTE: This endpoint may not currently be available to all users and can only be used with v4beta.

func (*Client) GetLKEVersion

func (c *Client) GetLKEVersion(ctx context.Context, version string) (*LKEVersion, error)

GetLKEVersion gets details about a specific LKE Version. This endpoint is cached by default.

func (*Client) GetLock

func (c *Client) GetLock(ctx context.Context, lockID int) (*Lock, error)

GetLock gets a single Lock with the provided ID NOTE: Locks can only be used with v4beta.

func (*Client) GetLogin

func (c *Client) GetLogin(ctx context.Context, loginID int) (*Login, error)

func (*Client) GetLongviewClient

func (c *Client) GetLongviewClient(ctx context.Context, clientID int) (*LongviewClient, error)

GetLongviewClient gets the template with the provided ID

func (*Client) GetLongviewPlan

func (c *Client) GetLongviewPlan(ctx context.Context) (*LongviewPlan, error)

GetLongviewPlan gets the template with the provided ID

func (*Client) GetLongviewSubscription

func (c *Client) GetLongviewSubscription(ctx context.Context, templateID string) (*LongviewSubscription, error)

GetLongviewSubscription gets the template with the provided ID

func (*Client) GetMonitorAlertDefinition

func (c *Client) GetMonitorAlertDefinition(
	ctx context.Context,
	serviceType string,
	alertID int,
) (*AlertDefinition, error)

GetMonitorAlertDefinition gets an ACLP Monitor Alert Definition.

func (*Client) GetMonitorDashboard

func (c *Client) GetMonitorDashboard(ctx context.Context, dashboardID int) (*MonitorDashboard, error)

GetMonitorDashboard gets an ACLP Monitor Dashboard for a given dashboardID

func (*Client) GetMonitorServiceByType

func (c *Client) GetMonitorServiceByType(ctx context.Context, serviceType string) (*MonitorService, error)

GetMonitorServiceByType gets a monitor service by a given service_type

func (*Client) GetMySQLDatabase

func (c *Client) GetMySQLDatabase(ctx context.Context, databaseID int) (*MySQLDatabase, error)

GetMySQLDatabase returns a single MySQL Database matching the id

func (*Client) GetMySQLDatabaseConfig

func (c *Client) GetMySQLDatabaseConfig(ctx context.Context) (*MySQLDatabaseConfigInfo, error)

GetMySQLDatabaseConfig returns a detailed list of all the configuration options for MySQL Databases

func (*Client) GetMySQLDatabaseCredentials

func (c *Client) GetMySQLDatabaseCredentials(ctx context.Context, databaseID int) (*MySQLDatabaseCredential, error)

GetMySQLDatabaseCredentials returns the Root Credentials for the given MySQL Database

func (*Client) GetMySQLDatabaseSSL

func (c *Client) GetMySQLDatabaseSSL(ctx context.Context, databaseID int) (*MySQLDatabaseSSL, error)

GetMySQLDatabaseSSL returns the SSL Certificate for the given MySQL Database

func (*Client) GetNodeBalancer

func (c *Client) GetNodeBalancer(ctx context.Context, nodebalancerID int) (*NodeBalancer, error)

GetNodeBalancer gets the NodeBalancer with the provided ID

func (*Client) GetNodeBalancerConfig

func (c *Client) GetNodeBalancerConfig(ctx context.Context, nodebalancerID int, configID int) (*NodeBalancerConfig, error)

GetNodeBalancerConfig gets the template with the provided ID

func (*Client) GetNodeBalancerNode

func (c *Client) GetNodeBalancerNode(ctx context.Context, nodebalancerID int, configID int, nodeID int) (*NodeBalancerNode, error)

GetNodeBalancerNode gets the template with the provided ID

func (*Client) GetNodeBalancerStats

func (c *Client) GetNodeBalancerStats(ctx context.Context, nodebalancerID int) (*NodeBalancerStats, error)

GetNodeBalancerStats gets the template with the provided ID

func (*Client) GetNodeBalancerVPCConfig

func (c *Client) GetNodeBalancerVPCConfig(ctx context.Context, nodebalancerID int, vpcID int) (*NodeBalancerVPCConfig, error)

GetNodeBalancerVPCConfig gets the NodeBalancer VPC config with the specified id

func (*Client) GetOAuthClient

func (c *Client) GetOAuthClient(ctx context.Context, clientID string) (*OAuthClient, error)

GetOAuthClient gets the OAuthClient with the provided ID

func (*Client) GetObjectStorageBucket

func (c *Client) GetObjectStorageBucket(ctx context.Context, regionID, label string) (*ObjectStorageBucket, error)

GetObjectStorageBucket gets the ObjectStorageBucket with the provided label

func (*Client) GetObjectStorageBucketAccess

func (c *Client) GetObjectStorageBucketAccess(ctx context.Context, regionID, label string) (*ObjectStorageBucketAccess, error)

GetObjectStorageBucketAccess gets the current access config for a bucket

func (*Client) GetObjectStorageBucketCert

func (c *Client) GetObjectStorageBucketCert(ctx context.Context, regionID, bucket string) (*ObjectStorageBucketCert, error)

GetObjectStorageBucketCert gets an ObjectStorageBucketCert

func (*Client) GetObjectStorageGlobalQuota

func (c *Client) GetObjectStorageGlobalQuota(ctx context.Context, quotaID string) (*ObjectStorageGlobalQuota, error)

GetObjectStorageGlobalQuota gets information about a specific global/account-level ObjectStorage-related quota on your account.

func (*Client) GetObjectStorageGlobalQuotaUsage

func (c *Client) GetObjectStorageGlobalQuotaUsage(ctx context.Context, quotaID string) (*ObjectStorageGlobalQuotaUsage, error)

GetObjectStorageGlobalQuotaUsage gets usage data for a specific global/account-level ObjectStorage quota resource.

func (*Client) GetObjectStorageKey

func (c *Client) GetObjectStorageKey(ctx context.Context, keyID int) (*ObjectStorageKey, error)

GetObjectStorageKey gets the object storage key with the provided ID

func (*Client) GetObjectStorageObjectACLConfig

func (c *Client) GetObjectStorageObjectACLConfig(ctx context.Context, regionID, label, object string) (*ObjectStorageObjectACLConfig, error)

func (*Client) GetObjectStorageQuota

func (c *Client) GetObjectStorageQuota(ctx context.Context, quotaID string) (*ObjectStorageQuota, error)

GetObjectStorageQuota gets information about a specific ObjectStorage-related quota on your account.

func (*Client) GetObjectStorageQuotaUsage

func (c *Client) GetObjectStorageQuotaUsage(ctx context.Context, quotaID string) (*ObjectStorageQuotaUsage, error)

GetObjectStorageQuotaUsage gets usage data for a specific ObjectStorage Quota resource you can have on your account and the current usage for that resource.

func (*Client) GetObjectStorageTransfer

func (c *Client) GetObjectStorageTransfer(ctx context.Context) (*ObjectStorageTransfer, error)

GetObjectStorageTransfer returns the amount of outbound data transferred used by the Account

func (*Client) GetPayment

func (c *Client) GetPayment(ctx context.Context, paymentID int) (*Payment, error)

GetPayment gets the payment with the provided ID

func (*Client) GetPaymentMethod

func (c *Client) GetPaymentMethod(ctx context.Context, paymentMethodID int) (*PaymentMethod, error)

GetPaymentMethod gets the payment method with the provided ID

func (*Client) GetPlacementGroup

func (c *Client) GetPlacementGroup(
	ctx context.Context,
	id int,
) (*PlacementGroup, error)

GetPlacementGroup gets a placement group with the specified ID.

func (*Client) GetPollDelay

func (c *Client) GetPollDelay() time.Duration

GetPollDelay gets the number of milliseconds to wait between events or status polls. Affects all WaitFor* functions and retries.

func (*Client) GetPostgresDatabase

func (c *Client) GetPostgresDatabase(ctx context.Context, databaseID int) (*PostgresDatabase, error)

GetPostgresDatabase returns a single Postgres Database matching the id

func (*Client) GetPostgresDatabaseConfig

func (c *Client) GetPostgresDatabaseConfig(ctx context.Context) (*PostgresDatabaseConfigInfo, error)

GetPostgresDatabaseConfig returns a detailed list of all the configuration options for PostgreSQL Databases

func (*Client) GetPostgresDatabaseCredentials

func (c *Client) GetPostgresDatabaseCredentials(ctx context.Context, databaseID int) (*PostgresDatabaseCredential, error)

GetPostgresDatabaseCredentials returns the Root Credentials for the given Postgres Database

func (*Client) GetPostgresDatabaseSSL

func (c *Client) GetPostgresDatabaseSSL(ctx context.Context, databaseID int) (*PostgresDatabaseSSL, error)

GetPostgresDatabaseSSL returns the SSL Certificate for the given Postgres Database

func (*Client) GetPrefixList

func (c *Client) GetPrefixList(ctx context.Context, id int) (*PrefixList, error)

GetPrefixList fetches a single Prefix List by its ID.

func (*Client) GetProfile

func (c *Client) GetProfile(ctx context.Context) (*Profile, error)

GetProfile returns the Profile of the authenticated user

func (*Client) GetProfileApp

func (c *Client) GetProfileApp(ctx context.Context, appID int) (*ProfileApp, error)

GetProfileApp returns the ProfileApp with the provided id

func (*Client) GetProfileDevice

func (c *Client) GetProfileDevice(ctx context.Context, deviceID int) (*ProfileDevice, error)

GetProfileDevice returns the ProfileDevice with the provided id

func (*Client) GetProfileLogin

func (c *Client) GetProfileLogin(ctx context.Context, id int) (*ProfileLogin, error)

GetProfileLogin returns the Profile Login of the authenticated user

func (*Client) GetProfilePreferences

func (c *Client) GetProfilePreferences(ctx context.Context) (*ProfilePreferences, error)

GetProfilePreferences retrieves the user preferences for the current User

func (*Client) GetRegion

func (c *Client) GetRegion(ctx context.Context, regionID string) (*Region, error)

GetRegion gets the template with the provided ID. This endpoint is cached by default.

func (*Client) GetRegionAvailability

func (c *Client) GetRegionAvailability(ctx context.Context, regionID string) ([]RegionAvailability, error)

GetRegionAvailability gets availability for all plans in the provided region. This endpoint is cached by default.

func (*Client) GetRegionVPCAvailability

func (c *Client) GetRegionVPCAvailability(ctx context.Context, regionID string) (*RegionVPCAvailability, error)

GetRegionVPCAvailability gets VPC availability data for a single region. NOTE: IPv6 VPCs may not currently be available to all users.

func (*Client) GetReservedIPAddress

func (c *Client) GetReservedIPAddress(ctx context.Context, ipAddress string) (*InstanceIP, error)

GetReservedIPAddress retrieves details of a specific reserved IP address NOTE: Reserved IP feature may not currently be available to all users.

func (*Client) GetSSHKey

func (c *Client) GetSSHKey(ctx context.Context, keyID int) (*SSHKey, error)

GetSSHKey gets the sshkey with the provided ID

func (*Client) GetStackscript

func (c *Client) GetStackscript(ctx context.Context, scriptID int) (*Stackscript, error)

GetStackscript gets the Stackscript with the provided ID

func (*Client) GetTicket

func (c *Client) GetTicket(ctx context.Context, ticketID int) (*Ticket, error)

GetTicket gets a Support Ticket on the Account with the specified ID

func (*Client) GetToken

func (c *Client) GetToken(ctx context.Context, tokenID int) (*Token, error)

GetToken gets the token with the provided ID

func (*Client) GetType

func (c *Client) GetType(ctx context.Context, typeID string) (*LinodeType, error)

GetType gets the type with the provided ID. This endpoint is cached by default.

func (*Client) GetUser

func (c *Client) GetUser(ctx context.Context, userID string) (*User, error)

GetUser gets the user with the provided ID

func (*Client) GetUserAccountPermissions

func (c *Client) GetUserAccountPermissions(ctx context.Context, username string) ([]string, error)

GetUserAccountPermissions returns the account permissions for username

func (*Client) GetUserGrants

func (c *Client) GetUserGrants(ctx context.Context, username string) (*UserGrants, error)

func (*Client) GetUserRolePermissions

func (c *Client) GetUserRolePermissions(ctx context.Context, username string) (*UserRolePermissions, error)

GetUserRolePermissions returns any role permissions for username

func (*Client) GetVLANIPAMAddress

func (c *Client) GetVLANIPAMAddress(ctx context.Context, linodeID int, vlanLabel string) (string, error)

GetVLANIPAMAddress returns the IPAM Address for a given VLAN Label as a string (10.0.0.1/24)

func (*Client) GetVPC

func (c *Client) GetVPC(ctx context.Context, vpcID int) (*VPC, error)

func (*Client) GetVPCSubnet

func (c *Client) GetVPCSubnet(
	ctx context.Context,
	vpcID int,
	subnetID int,
) (*VPCSubnet, error)

func (*Client) GetVolume

func (c *Client) GetVolume(ctx context.Context, volumeID int) (*Volume, error)

GetVolume gets the template with the provided ID

func (*Client) GrantsList

func (c *Client) GrantsList(ctx context.Context) (*GrantsListResponse, error)

func (*Client) ImageShareGroupAddImages

func (c *Client) ImageShareGroupAddImages(
	ctx context.Context,
	imageShareGroupID int,
	opts ImageShareGroupAddImagesOptions,
) ([]ImageShareEntry, error)

ImageShareGroupAddImages allows the producer to add images to a specific ImageShareGroup. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ImageShareGroupAddMember

func (c *Client) ImageShareGroupAddMember(
	ctx context.Context,
	imageShareGroupID int,
	opts ImageShareGroupAddMemberOptions,
) (*ImageShareGroupMember, error)

ImageShareGroupAddMember allows the producer to add members to a specific ImageShareGroup. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ImageShareGroupCreateToken

ImageShareGroupCreateToken allows the consumer to create a single-use ImageShareGroup membership token for a specific ImageShareGroup owned by the producer. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ImageShareGroupGetByToken

func (c *Client) ImageShareGroupGetByToken(ctx context.Context, tokenUUID string) (*ConsumerImageShareGroup, error)

ImageShareGroupGetByToken gets information about the ImageShareGroup that the consumer's specified token has been accepted into. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ImageShareGroupGetImageShareEntriesByToken

func (c *Client) ImageShareGroupGetImageShareEntriesByToken(ctx context.Context, tokenUUID string, opts *ListOptions) ([]ImageShareEntry, error)

ImageShareGroupGetImageShareEntriesByToken lists the shared image entries in the ImageShareGroup that the consumer's specified token has been accepted into. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ImageShareGroupGetMember

func (c *Client) ImageShareGroupGetMember(
	ctx context.Context,
	imageShareGroupID int,
	tokenUUID string,
) (*ImageShareGroupMember, error)

ImageShareGroupGetMember gets the details of the specified ImageShareGroupMember in the specified ImageShareGroup owned by the producer. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ImageShareGroupGetToken

func (c *Client) ImageShareGroupGetToken(ctx context.Context, tokenUUID string) (*ImageShareGroupToken, error)

ImageShareGroupGetToken gets information about the specified ImageShareGroupToken created by the user. The tokens themselves are only visible once upon creation. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ImageShareGroupListImageShareEntries

func (c *Client) ImageShareGroupListImageShareEntries(
	ctx context.Context,
	imageShareGroupID int,
	opts *ListOptions,
) ([]ImageShareEntry, error)

ImageShareGroupListImageShareEntries lists the shared image entries of a specified ImageShareGroup owned by the producer. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ImageShareGroupListMembers

func (c *Client) ImageShareGroupListMembers(
	ctx context.Context,
	imageShareGroupID int,
	opts *ListOptions,
) ([]ImageShareGroupMember, error)

ImageShareGroupListMembers lists the ImageShareGroupMembers of the provided ImageShareGroup owned by the producer. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ImageShareGroupListTokens

func (c *Client) ImageShareGroupListTokens(ctx context.Context, opts *ListOptions) ([]ImageShareGroupToken, error)

ImageShareGroupListTokens lists information about all the ImageShareGroupTokens created by the user. The tokens themselves are only visible once upon creation. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ImageShareGroupRemoveImage

func (c *Client) ImageShareGroupRemoveImage(
	ctx context.Context,
	imageShareGroupID int,
	imageID string,
) error

ImageShareGroupRemoveImage allows the producer to remove access to an image within an ImageShareGroup owned by the producer. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ImageShareGroupRemoveMember

func (c *Client) ImageShareGroupRemoveMember(
	ctx context.Context,
	imageShareGroupID int,
	tokenUUID string,
) error

ImageShareGroupRemoveMember allows the producer to remove an individual ImageShareGroupMember that’s been accepted into the ImageShareGroup owned by the producer. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ImageShareGroupRemoveToken

func (c *Client) ImageShareGroupRemoveToken(ctx context.Context, tokenUUID string) error

ImageShareGroupRemoveToken allows the consumer to remove an individual ImageShareGroupToken from an ImageShareGroup this token has been accepted into. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ImageShareGroupUpdateImageShareEntry

func (c *Client) ImageShareGroupUpdateImageShareEntry(
	ctx context.Context,
	imageShareGroupID int,
	imageID string,
	opts ImageShareGroupUpdateImageOptions,
) (*ImageShareEntry, error)

ImageShareGroupUpdateImageShareEntry allows the producer to update the description and label of a specified ImageShareEntry within the specified ImageShareGroup. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ImageShareGroupUpdateMember

func (c *Client) ImageShareGroupUpdateMember(
	ctx context.Context,
	imageShareGroupID int,
	tokenUUID string,
	opts ImageShareGroupUpdateMemberOptions,
) (*ImageShareGroupMember, error)

ImageShareGroupUpdateMember allows the producer to update the label associated with the specified ImageShareGroupMember in the specified ImageShareGroup owned by the producer. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ImageShareGroupUpdateToken

func (c *Client) ImageShareGroupUpdateToken(ctx context.Context, tokenUUID string, opts ImageShareGroupUpdateTokenOptions) (*ImageShareGroupToken, error)

ImageShareGroupUpdateToken allows the consumer to update an ImageShareGroupToken's label. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ImportDomain

func (c *Client) ImportDomain(ctx context.Context, opts DomainImportOptions) (*Domain, error)

ImportDomain imports a domain zone from a remote nameserver.

func (*Client) InstancesAssignIPs

func (c *Client) InstancesAssignIPs(ctx context.Context, opts LinodesAssignIPsOptions) error

InstancesAssignIPs assigns multiple IPv4 addresses and/or IPv6 ranges to multiple Linodes in one Region. This allows swapping, shuffling, or otherwise reorganizing IPs to your Linodes.

func (*Client) InvalidateCache

func (c *Client) InvalidateCache()

InvalidateCache clears all cached responses for all endpoints.

func (*Client) InvalidateCacheEndpoint

func (c *Client) InvalidateCacheEndpoint(endpoint string) error

InvalidateCacheEndpoint invalidates a single cached endpoint.

func (*Client) JoinBetaProgram

func (c *Client) JoinBetaProgram(ctx context.Context, opts AccountBetaProgramCreateOpts) (*AccountBetaProgram, error)

JoinBetaProgram enrolls an account into a beta program.

func (*Client) ListAccountAvailabilities

func (c *Client) ListAccountAvailabilities(ctx context.Context, opts *ListOptions) ([]AccountAvailability, error)

ListAccountAvailabilities lists all regions and the resource availabilities to the account.

func (*Client) ListAccountBetaPrograms

func (c *Client) ListAccountBetaPrograms(ctx context.Context, opts *ListOptions) ([]AccountBetaProgram, error)

ListAccountBetaPrograms lists all beta programs an account is enrolled in.

func (*Client) ListAccountServiceTransfer

func (c *Client) ListAccountServiceTransfer(ctx context.Context, opts *ListOptions) ([]AccountServiceTransfer, error)

ListAccountServiceTransfer gets a paginated list of AccountServiceTransfer for the Account.

func (*Client) ListAlertChannels

func (c *Client) ListAlertChannels(ctx context.Context, opts *ListOptions) ([]AlertChannel, error)

ListAlertChannels gets a paginated list of Alert Channels.

func (*Client) ListAllMonitorAlertDefinitions

func (c *Client) ListAllMonitorAlertDefinitions(
	ctx context.Context,
	opts *ListOptions,
) ([]AlertDefinition, error)

ListAllMonitorAlertDefinitions returns a paginated list of all ACLP Monitor Alert Definitions under this account.

func (*Client) ListAllVPCIPAddresses

func (c *Client) ListAllVPCIPAddresses(
	ctx context.Context, opts *ListOptions,
) ([]VPCIP, error)

ListAllVPCIPAddresses gets the list of all IP addresses of all VPCs in the Linode account.

func (*Client) ListAllVPCIPv6Addresses

func (c *Client) ListAllVPCIPv6Addresses(
	ctx context.Context, opts *ListOptions,
) ([]VPCIP, error)

ListAllVPCIPv6Addresses gets a list of all IPv6 addresses related to all VPCs accessible by the current Linode account. NOTE: IPv6 VPCs may not currently be available to all users.

func (*Client) ListBetaPrograms

func (c *Client) ListBetaPrograms(ctx context.Context, opts *ListOptions) ([]BetaProgram, error)

ListBetaPrograms lists active beta programs

func (*Client) ListChildAccounts

func (c *Client) ListChildAccounts(ctx context.Context, opts *ListOptions) ([]ChildAccount, error)

ListChildAccounts lists child accounts under the current account. NOTE: Parent/Child related features may not be generally available.

func (*Client) ListDatabaseEngines

func (c *Client) ListDatabaseEngines(ctx context.Context, opts *ListOptions) ([]DatabaseEngine, error)

ListDatabaseEngines lists all Database Engines. This endpoint is cached by default.

func (*Client) ListDatabaseTypes

func (c *Client) ListDatabaseTypes(ctx context.Context, opts *ListOptions) ([]DatabaseType, error)

ListDatabaseTypes lists all Types of Database provided in Linode Managed Databases. This endpoint is cached by default.

func (*Client) ListDatabases

func (c *Client) ListDatabases(ctx context.Context, opts *ListOptions) ([]Database, error)

ListDatabases lists all Database instances in Linode Managed Databases for the account

func (*Client) ListDomainRecords

func (c *Client) ListDomainRecords(ctx context.Context, domainID int, opts *ListOptions) ([]DomainRecord, error)

ListDomainRecords lists DomainRecords

func (*Client) ListDomains

func (c *Client) ListDomains(ctx context.Context, opts *ListOptions) ([]Domain, error)

ListDomains lists Domains

func (*Client) ListEntities

func (c *Client) ListEntities(ctx context.Context, opts *ListOptions) ([]LinodeEntity, error)

ListEntities returns a paginated list of all entities

func (*Client) ListEvents

func (c *Client) ListEvents(ctx context.Context, opts *ListOptions) ([]Event, error)

ListEvents gets a collection of Event objects representing actions taken on the Account. The Events returned depend on the token grants and the grants of the associated user.

func (*Client) ListFirewallDevices

func (c *Client) ListFirewallDevices(ctx context.Context, firewallID int, opts *ListOptions) ([]FirewallDevice, error)

ListFirewallDevices get devices associated with a given Firewall

func (*Client) ListFirewallRuleSets

func (c *Client) ListFirewallRuleSets(ctx context.Context, opts *ListOptions) ([]FirewallRuleSet, error)

ListFirewallRuleSets returns a paginated list of Rule Sets. Supports filtering (e.g., by label) via ListOptions.Filter.

func (*Client) ListFirewallTemplates

func (c *Client) ListFirewallTemplates(ctx context.Context, opts *ListOptions) ([]FirewallTemplate, error)

ListFirewallTemplates gets all available firewall templates for the account. NOTE: This feature may not currently be available to all users.

func (*Client) ListFirewalls

func (c *Client) ListFirewalls(ctx context.Context, opts *ListOptions) ([]Firewall, error)

ListFirewalls returns a paginated list of Cloud Firewalls

func (*Client) ListIPAddresses

func (c *Client) ListIPAddresses(ctx context.Context, opts *ListOptions) ([]InstanceIP, error)

ListIPAddresses lists IPAddresses.

func (*Client) ListIPv6Pools

func (c *Client) ListIPv6Pools(ctx context.Context, opts *ListOptions) ([]IPv6Range, error)

ListIPv6Pools lists IPv6Pools

func (*Client) ListIPv6Ranges

func (c *Client) ListIPv6Ranges(ctx context.Context, opts *ListOptions) ([]IPv6Range, error)

ListIPv6Ranges lists IPv6Ranges

func (*Client) ListImageShareGroups

func (c *Client) ListImageShareGroups(
	ctx context.Context,
	opts *ListOptions,
) ([]ProducerImageShareGroup, error)

ListImageShareGroups lists all ImageShareGroups owned by the producer. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ListImageShareGroupsContainingPrivateImage

func (c *Client) ListImageShareGroupsContainingPrivateImage(
	ctx context.Context,
	privateImageID string,
	opts *ListOptions,
) ([]ProducerImageShareGroup, error)

ListImageShareGroupsContainingPrivateImage lists all current ImageShareGroups owned by the producer where the given private image is present. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) ListImages

func (c *Client) ListImages(ctx context.Context, opts *ListOptions) ([]Image, error)

ListImages lists Images.

func (*Client) ListInstanceConfigInterfaces

func (c *Client) ListInstanceConfigInterfaces(
	ctx context.Context,
	linodeID int,
	configID int,
) ([]InstanceConfigInterface, error)

func (*Client) ListInstanceConfigs

func (c *Client) ListInstanceConfigs(ctx context.Context, linodeID int, opts *ListOptions) ([]InstanceConfig, error)

ListInstanceConfigs lists InstanceConfigs

func (*Client) ListInstanceDisks

func (c *Client) ListInstanceDisks(ctx context.Context, linodeID int, opts *ListOptions) ([]InstanceDisk, error)

ListInstanceDisks lists InstanceDisks

func (*Client) ListInstanceFirewalls

func (c *Client) ListInstanceFirewalls(ctx context.Context, linodeID int, opts *ListOptions) ([]Firewall, error)

ListInstanceFirewalls returns a paginated list of Cloud Firewalls for linodeID

func (*Client) ListInstanceNodeBalancers

func (c *Client) ListInstanceNodeBalancers(ctx context.Context, linodeID int, opts *ListOptions) ([]NodeBalancer, error)

ListInstanceNodeBalancers lists NodeBalancers that the provided instance is a node in

func (*Client) ListInstanceVolumes

func (c *Client) ListInstanceVolumes(ctx context.Context, linodeID int, opts *ListOptions) ([]Volume, error)

ListInstanceVolumes lists InstanceVolumes

func (*Client) ListInstances

func (c *Client) ListInstances(ctx context.Context, opts *ListOptions) ([]Instance, error)

ListInstances lists linode instances

func (*Client) ListInterfaceFirewalls

func (c *Client) ListInterfaceFirewalls(ctx context.Context, linodeID int, interfaceID int, opts *ListOptions) ([]Firewall, error)

func (*Client) ListInterfaces

func (c *Client) ListInterfaces(ctx context.Context, linodeID int, opts *ListOptions) ([]LinodeInterface, error)

func (*Client) ListInvoiceItems

func (c *Client) ListInvoiceItems(ctx context.Context, invoiceID int, opts *ListOptions) ([]InvoiceItem, error)

ListInvoiceItems gets the invoice items associated with a specific Invoice

func (*Client) ListInvoices

func (c *Client) ListInvoices(ctx context.Context, opts *ListOptions) ([]Invoice, error)

ListInvoices gets a paginated list of Invoices against the Account

func (*Client) ListKernels

func (c *Client) ListKernels(ctx context.Context, opts *ListOptions) ([]LinodeKernel, error)

ListKernels lists linode kernels. This endpoint is cached by default.

func (*Client) ListLKEClusterAPIEndpoints

func (c *Client) ListLKEClusterAPIEndpoints(ctx context.Context, clusterID int, opts *ListOptions) ([]LKEClusterAPIEndpoint, error)

ListLKEClusterAPIEndpoints gets the API Endpoint for the LKE Cluster specified

func (*Client) ListLKEClusters

func (c *Client) ListLKEClusters(ctx context.Context, opts *ListOptions) ([]LKECluster, error)

ListLKEClusters lists LKEClusters

func (*Client) ListLKENodePools

func (c *Client) ListLKENodePools(ctx context.Context, clusterID int, opts *ListOptions) ([]LKENodePool, error)

ListLKENodePools lists LKENodePools

func (*Client) ListLKETierVersions

func (c *Client) ListLKETierVersions(ctx context.Context, tier string, opts *ListOptions) ([]LKETierVersion, error)

ListLKETierVersions lists all Kubernetes versions available given tier through LKE. NOTE: This endpoint may not currently be available to all users and can only be used with v4beta.

func (*Client) ListLKETypes

func (c *Client) ListLKETypes(ctx context.Context, opts *ListOptions) ([]LKEType, error)

ListLKETypes lists LKE types. This endpoint is cached by default.

func (*Client) ListLKEVersions

func (c *Client) ListLKEVersions(ctx context.Context, opts *ListOptions) ([]LKEVersion, error)

ListLKEVersions lists the Kubernetes versions available through LKE. This endpoint is cached by default.

func (*Client) ListLocks

func (c *Client) ListLocks(ctx context.Context, opts *ListOptions) ([]Lock, error)

ListLocks returns a paginated list of Locks NOTE: Locks can only be used with v4beta.

func (*Client) ListLogins

func (c *Client) ListLogins(ctx context.Context, opts *ListOptions) ([]Login, error)

func (*Client) ListLongviewClients

func (c *Client) ListLongviewClients(ctx context.Context, opts *ListOptions) ([]LongviewClient, error)

ListLongviewClients lists LongviewClients

func (*Client) ListLongviewSubscriptions

func (c *Client) ListLongviewSubscriptions(ctx context.Context, opts *ListOptions) ([]LongviewSubscription, error)

ListLongviewSubscriptions lists LongviewSubscriptions

func (*Client) ListMaintenancePolicies

func (c *Client) ListMaintenancePolicies(ctx context.Context, opts *ListOptions) ([]MaintenancePolicy, error)

ListMaintenancePolicies lists all available maintenance policies that can be applied to Linodes.

func (*Client) ListMaintenances

func (c *Client) ListMaintenances(ctx context.Context, opts *ListOptions) ([]AccountMaintenance, error)

ListMaintenances lists Account Maintenance objects for any entity a user has permissions to view

func (*Client) ListMonitorAlertDefinitionEntities

func (c *Client) ListMonitorAlertDefinitionEntities(
	ctx context.Context,
	serviceType string,
	alertID int,
	opts *ListOptions,
) ([]AlertDefinitionEntity, error)

ListMonitorAlertDefinitionEntities gets the entities associated with an ACLP Monitor Alert Definition.

func (*Client) ListMonitorAlertDefinitions

func (c *Client) ListMonitorAlertDefinitions(
	ctx context.Context,
	serviceType string,
	opts *ListOptions,
) ([]AlertDefinition, error)

ListMonitorAlertDefinitions returns a paginated list of ACLP Monitor Alert Definitions by service type.

func (*Client) ListMonitorDashboards

func (c *Client) ListMonitorDashboards(ctx context.Context, opts *ListOptions) ([]MonitorDashboard, error)

ListMonitorDashboards lists all the ACLP Monitor Dashboards

func (*Client) ListMonitorDashboardsByServiceType

func (c *Client) ListMonitorDashboardsByServiceType(ctx context.Context, serviceType string, opts *ListOptions) ([]MonitorDashboard, error)

ListMonitorDashboardsByServiceType lists ACLP Monitor Dashboards for a given serviceType

func (*Client) ListMonitorMetricsDefinitionByServiceType

func (c *Client) ListMonitorMetricsDefinitionByServiceType(ctx context.Context, serviceType string, opts *ListOptions) ([]MonitorMetricsDefinition, error)

ListMonitorMetricsDefinitionByServiceType lists metric definitions

func (*Client) ListMonitorServices

func (c *Client) ListMonitorServices(ctx context.Context, opts *ListOptions) ([]MonitorService, error)

ListMonitorServices lists all the registered ACLP MonitorServices

func (*Client) ListMySQLDatabases

func (c *Client) ListMySQLDatabases(ctx context.Context, opts *ListOptions) ([]MySQLDatabase, error)

ListMySQLDatabases lists all MySQL Databases associated with the account

func (*Client) ListNetworkTransferPrices

func (c *Client) ListNetworkTransferPrices(ctx context.Context, opts *ListOptions) ([]NetworkTransferPrice, error)

ListNetworkTransferPrices lists network transfer prices. This endpoint is cached by default.

func (*Client) ListNodeBalancerConfigs

func (c *Client) ListNodeBalancerConfigs(ctx context.Context, nodebalancerID int, opts *ListOptions) ([]NodeBalancerConfig, error)

ListNodeBalancerConfigs lists NodeBalancerConfigs

func (*Client) ListNodeBalancerFirewalls

func (c *Client) ListNodeBalancerFirewalls(ctx context.Context, nodebalancerID int, opts *ListOptions) ([]Firewall, error)

ListNodeBalancerFirewalls returns a paginated list of Cloud Firewalls for nodebalancerID

func (*Client) ListNodeBalancerNodes

func (c *Client) ListNodeBalancerNodes(ctx context.Context, nodebalancerID int, configID int, opts *ListOptions) ([]NodeBalancerNode, error)

ListNodeBalancerNodes lists NodeBalancerNodes

func (*Client) ListNodeBalancerTypes

func (c *Client) ListNodeBalancerTypes(ctx context.Context, opts *ListOptions) ([]NodeBalancerType, error)

ListNodeBalancerTypes lists NodeBalancer types. This endpoint is cached by default.

func (*Client) ListNodeBalancerVPCConfigs

func (c *Client) ListNodeBalancerVPCConfigs(ctx context.Context, nodebalancerID int, opts *ListOptions) ([]NodeBalancerVPCConfig, error)

ListNodeBalancerVPCConfigs lists NodeBalancer VPC configs

func (*Client) ListNodeBalancers

func (c *Client) ListNodeBalancers(ctx context.Context, opts *ListOptions) ([]NodeBalancer, error)

ListNodeBalancers lists NodeBalancers

func (*Client) ListNotifications

func (c *Client) ListNotifications(ctx context.Context, opts *ListOptions) ([]Notification, error)

ListNotifications gets a collection of Notification objects representing important, often time-sensitive items related to the Account. An account cannot interact directly with Notifications, and a Notification will disappear when the circumstances causing it have been resolved. For example, if the account has an important Ticket open, a response to the Ticket will dismiss the Notification.

func (*Client) ListOAuthClients

func (c *Client) ListOAuthClients(ctx context.Context, opts *ListOptions) ([]OAuthClient, error)

ListOAuthClients lists OAuthClients

func (*Client) ListObjectStorageBucketContents

func (c *Client) ListObjectStorageBucketContents(
	ctx context.Context,
	regionID, label string,
	params *ObjectStorageBucketListContentsParams,
) (*ObjectStorageBucketContent, error)

ListObjectStorageBucketContents lists the contents of the specified ObjectStorageBucket

func (*Client) ListObjectStorageBuckets

func (c *Client) ListObjectStorageBuckets(ctx context.Context, opts *ListOptions) ([]ObjectStorageBucket, error)

ListObjectStorageBuckets lists ObjectStorageBuckets

func (*Client) ListObjectStorageBucketsInRegion

func (c *Client) ListObjectStorageBucketsInRegion(ctx context.Context, opts *ListOptions, regionID string) ([]ObjectStorageBucket, error)

ListObjectStorageBucketsInRegion lists all ObjectStorageBuckets in the specified region

func (*Client) ListObjectStorageEndpoints

func (c *Client) ListObjectStorageEndpoints(ctx context.Context, opts *ListOptions) ([]ObjectStorageEndpoint, error)

ListObjectStorageEndpoints lists all endpoints in all regions

func (*Client) ListObjectStorageGlobalQuotas

func (c *Client) ListObjectStorageGlobalQuotas(ctx context.Context, opts *ListOptions) ([]ObjectStorageGlobalQuota, error)

ListObjectStorageGlobalQuotas lists the global/account-level ObjectStorage-related quotas applied to your account.

func (*Client) ListObjectStorageKeys

func (c *Client) ListObjectStorageKeys(ctx context.Context, opts *ListOptions) ([]ObjectStorageKey, error)

ListObjectStorageKeys lists ObjectStorageKeys

func (*Client) ListObjectStorageQuotas

func (c *Client) ListObjectStorageQuotas(ctx context.Context, opts *ListOptions) ([]ObjectStorageQuota, error)

ListObjectStorageQuotas lists the active ObjectStorage-related quotas applied to your account.

func (*Client) ListPaymentMethods

func (c *Client) ListPaymentMethods(ctx context.Context, opts *ListOptions) ([]PaymentMethod, error)

ListPaymentMethods lists PaymentMethods

func (*Client) ListPayments

func (c *Client) ListPayments(ctx context.Context, opts *ListOptions) ([]Payment, error)

ListPayments lists Payments

func (*Client) ListPlacementGroups

func (c *Client) ListPlacementGroups(
	ctx context.Context,
	options *ListOptions,
) ([]PlacementGroup, error)

ListPlacementGroups lists placement groups under the current account matching the given list options.

func (*Client) ListPostgresDatabases

func (c *Client) ListPostgresDatabases(ctx context.Context, opts *ListOptions) ([]PostgresDatabase, error)

ListPostgresDatabases lists all Postgres Databases associated with the account

func (*Client) ListPrefixLists

func (c *Client) ListPrefixLists(ctx context.Context, opts *ListOptions) ([]PrefixList, error)

ListPrefixLists returns a paginated collection of Prefix Lists.

func (*Client) ListProfileApps

func (c *Client) ListProfileApps(ctx context.Context, opts *ListOptions) ([]ProfileApp, error)

ListProfileApps lists ProfileApps that have access to the Account

func (*Client) ListProfileDevices

func (c *Client) ListProfileDevices(ctx context.Context, opts *ListOptions) ([]ProfileDevice, error)

ListProfileDevices lists ProfileDevices for the User

func (*Client) ListProfileLogins

func (c *Client) ListProfileLogins(ctx context.Context, opts *ListOptions) ([]ProfileLogin, error)

ListProfileLogins lists Profile Logins of the authenticated user

func (*Client) ListRegions

func (c *Client) ListRegions(ctx context.Context, opts *ListOptions) ([]Region, error)

ListRegions lists Regions. This endpoint is cached by default.

func (*Client) ListRegionsAvailability

func (c *Client) ListRegionsAvailability(ctx context.Context, opts *ListOptions) ([]RegionAvailability, error)

ListRegionsAvailability lists Regions. This endpoint is cached by default.

func (*Client) ListRegionsVPCAvailability

func (c *Client) ListRegionsVPCAvailability(ctx context.Context, opts *ListOptions) ([]RegionVPCAvailability, error)

ListRegionsVPCAvailability lists VPC availability data for all regions. NOTE: IPv6 VPCs may not currently be available to all users.

func (*Client) ListReservedIPAddresses

func (c *Client) ListReservedIPAddresses(ctx context.Context, opts *ListOptions) ([]InstanceIP, error)

ListReservedIPAddresses retrieves a list of reserved IP addresses NOTE: Reserved IP feature may not currently be available to all users.

func (*Client) ListSSHKeys

func (c *Client) ListSSHKeys(ctx context.Context, opts *ListOptions) ([]SSHKey, error)

ListSSHKeys lists SSHKeys

func (*Client) ListStackscripts

func (c *Client) ListStackscripts(ctx context.Context, opts *ListOptions) ([]Stackscript, error)

ListStackscripts lists Stackscripts

func (*Client) ListTaggedObjects

func (c *Client) ListTaggedObjects(ctx context.Context, label string, opts *ListOptions) (TaggedObjectList, error)

ListTaggedObjects lists Tagged Objects

func (*Client) ListTags

func (c *Client) ListTags(ctx context.Context, opts *ListOptions) ([]Tag, error)

ListTags lists Tags

func (*Client) ListTickets

func (c *Client) ListTickets(ctx context.Context, opts *ListOptions) ([]Ticket, error)

ListTickets returns a collection of Support Tickets on the Account. Support Tickets can be both tickets opened with Linode for support, as well as tickets generated by Linode regarding the Account. This collection includes all Support Tickets generated on the Account, with open tickets returned first.

func (*Client) ListTokens

func (c *Client) ListTokens(ctx context.Context, opts *ListOptions) ([]Token, error)

ListTokens lists Tokens

func (*Client) ListTypes

func (c *Client) ListTypes(ctx context.Context, opts *ListOptions) ([]LinodeType, error)

ListTypes lists linode types. This endpoint is cached by default.

func (*Client) ListUsers

func (c *Client) ListUsers(ctx context.Context, opts *ListOptions) ([]User, error)

ListUsers lists Users on the account

func (*Client) ListVLANs

func (c *Client) ListVLANs(ctx context.Context, opts *ListOptions) ([]VLAN, error)

ListVLANs returns a paginated list of VLANs

func (*Client) ListVPCIPAddresses

func (c *Client) ListVPCIPAddresses(
	ctx context.Context, vpcID int, opts *ListOptions,
) ([]VPCIP, error)

ListVPCIPAddresses gets the list of all IP addresses of a specific VPC.

func (*Client) ListVPCIPv6Addresses

func (c *Client) ListVPCIPv6Addresses(
	ctx context.Context, vpcID int, opts *ListOptions,
) ([]VPCIP, error)

ListVPCIPv6Addresses gets the list of all IPv6 addresses of a specific VPC. NOTE: IPv6 VPCs may not currently be available to all users.

func (*Client) ListVPCSubnets

func (c *Client) ListVPCSubnets(
	ctx context.Context,
	vpcID int,
	opts *ListOptions,
) ([]VPCSubnet, error)

func (*Client) ListVPCs

func (c *Client) ListVPCs(ctx context.Context, opts *ListOptions) ([]VPC, error)

func (*Client) ListVolumeTypes

func (c *Client) ListVolumeTypes(ctx context.Context, opts *ListOptions) ([]VolumeType, error)

ListVolumeTypes lists Volume types. This endpoint is cached by default.

func (*Client) ListVolumes

func (c *Client) ListVolumes(ctx context.Context, opts *ListOptions) ([]Volume, error)

ListVolumes lists Volumes

func (*Client) LoadConfig

func (c *Client) LoadConfig(options *LoadConfigOptions) error

LoadConfig loads a Linode config according to the option's argument. If no options are specified, the following defaults will be used: Path: ~/.config/linode Profile: default

func (*Client) MarkEventsSeen

func (c *Client) MarkEventsSeen(ctx context.Context, event *Event) error

MarkEventsSeen marks all Events up to and including this Event by ID as seen.

func (*Client) MigrateInstance

func (c *Client) MigrateInstance(ctx context.Context, linodeID int, opts InstanceMigrateOptions) error

MigrateInstance - Migrate an instance

func (*Client) ModifyObjectStorageBucketAccess

func (c *Client) ModifyObjectStorageBucketAccess(ctx context.Context, regionID, label string, opts ObjectStorageBucketModifyAccessOptions) error

ModifyObjectStorageBucketAccess modifies the access configuration for an ObjectStorageBucket

func (Client) NewEventPoller

func (client Client) NewEventPoller(
	ctx context.Context, id any, entityType EntityType, action EventAction,
) (*EventPoller, error)

NewEventPoller initializes a new Linode event poller. This should be run before the event is triggered as it stores the previous state of the entity's events.

func (Client) NewEventPollerWithSecondary

func (client Client) NewEventPollerWithSecondary(
	ctx context.Context, id any, primaryEntityType EntityType, secondaryID int, action EventAction,
) (*EventPoller, error)

NewEventPollerWithSecondary initializes a new Linode event poller with for events with a specific secondary entity.

func (Client) NewEventPollerWithoutEntity

func (client Client) NewEventPollerWithoutEntity(entityType EntityType, action EventAction) (*EventPoller, error)

NewEventPollerWithoutEntity initializes a new Linode event poller without a target entity ID. This is useful for create events where the ID of the entity is not yet known. For example: p, _ := client.NewEventPollerWithoutEntity(...) inst, _ := client.CreateInstance(...) p.EntityID = inst.ID ...

func (*Client) OnAfterResponse

func (c *Client) OnAfterResponse(m func(*http.Response) error)

func (*Client) OnBeforeRequest

func (c *Client) OnBeforeRequest(m func(*http.Request) error)

func (*Client) PasswordResetInstanceDisk

func (c *Client) PasswordResetInstanceDisk(ctx context.Context, linodeID int, diskID int, opts InstanceDiskPasswordResetOptions) error

PasswordResetInstanceDisk resets the "root" account password on the Instance disk

func (*Client) PatchMySQLDatabase

func (c *Client) PatchMySQLDatabase(ctx context.Context, databaseID int) error

PatchMySQLDatabase applies security patches and updates to the underlying operating system of the Managed MySQL Database

func (*Client) PatchPostgresDatabase

func (c *Client) PatchPostgresDatabase(ctx context.Context, databaseID int) error

PatchPostgresDatabase applies security patches and updates to the underlying operating system of the Managed Postgres Database

func (*Client) RebootInstance

func (c *Client) RebootInstance(ctx context.Context, linodeID int, opts InstanceRebootOptions) error

RebootInstance reboots a Linode instance A configID of 0 will cause Linode to choose the last/best config

func (*Client) RebuildInstance

func (c *Client) RebuildInstance(ctx context.Context, linodeID int, opts InstanceRebuildOptions) (*Instance, error)

RebuildInstance Deletes all Disks and Configs on this Linode, then deploys a new Image to this Linode with the given attributes.

func (*Client) RebuildNodeBalancerConfig

func (c *Client) RebuildNodeBalancerConfig(
	ctx context.Context,
	nodeBalancerID int,
	configID int,
	opts NodeBalancerConfigRebuildOptions,
) (*NodeBalancerConfig, error)

RebuildNodeBalancerConfig updates the NodeBalancer with the specified id

func (*Client) RecycleLKEClusterNodes

func (c *Client) RecycleLKEClusterNodes(ctx context.Context, clusterID int) error

RecycleLKEClusterNodes recycles all nodes in all pools of the specified LKE Cluster.

func (*Client) RecycleLKENodePool

func (c *Client) RecycleLKENodePool(ctx context.Context, clusterID, poolID int) error

RecycleLKENodePool recycles a LKENodePool

func (*Client) RecycleLKENodePoolNode

func (c *Client) RecycleLKENodePoolNode(ctx context.Context, clusterID int, nodeID string) error

RecycleLKENodePoolNode recycles a LKENodePoolLinode

func (*Client) RegenerateLKECluster

func (c *Client) RegenerateLKECluster(ctx context.Context, clusterID int, opts LKEClusterRegenerateOptions) (*LKECluster, error)

RegenerateLKECluster regenerates the Kubeconfig file and/or the service account token for the specified LKE Cluster.

func (*Client) RenameInstance

func (c *Client) RenameInstance(ctx context.Context, linodeID int, label string) (*Instance, error)

RenameInstance renames an Instance

func (*Client) RenameInstanceConfig

func (c *Client) RenameInstanceConfig(ctx context.Context, linodeID int, configID int, label string) (*InstanceConfig, error)

RenameInstanceConfig renames an InstanceConfig

func (*Client) RenameInstanceDisk

func (c *Client) RenameInstanceDisk(ctx context.Context, linodeID int, diskID int, label string) (*InstanceDisk, error)

RenameInstanceDisk renames an InstanceDisk

func (*Client) ReorderInstanceConfigInterfaces

func (c *Client) ReorderInstanceConfigInterfaces(
	ctx context.Context,
	linodeID int,
	configID int,
	opts InstanceConfigInterfacesReorderOptions,
) error

func (*Client) ReplicateImage

func (c *Client) ReplicateImage(ctx context.Context, imageID string, opts ImageReplicateOptions) (*Image, error)

ReplicateImage replicates an image to a given set of regions.

func (*Client) RequestAccountServiceTransfer

func (c *Client) RequestAccountServiceTransfer(ctx context.Context, opts AccountServiceTransferRequestOptions) (*AccountServiceTransfer, error)

RequestAccountServiceTransfer creates a transfer request for the specified services.

func (*Client) RescueInstance

func (c *Client) RescueInstance(ctx context.Context, linodeID int, opts InstanceRescueOptions) error

RescueInstance reboots an instance into a safe environment for performing many system recovery and disk management tasks. Rescue Mode is based on the Finnix recovery distribution, a self-contained and bootable Linux distribution. You can also use Rescue Mode for tasks other than disaster recovery, such as formatting disks to use different filesystems, copying data between disks, and downloading files from a disk via SSH and SFTP.

func (*Client) ReserveIPAddress

func (c *Client) ReserveIPAddress(ctx context.Context, opts ReserveIPOptions) (*InstanceIP, error)

ReserveIPAddress reserves a new IP address NOTE: Reserved IP feature may not currently be available to all users.

func (*Client) ResetInstancePassword

func (c *Client) ResetInstancePassword(ctx context.Context, linodeID int, opts InstancePasswordResetOptions) error

ResetInstancePassword resets a Linode instance's root password

func (*Client) ResetMySQLDatabaseCredentials

func (c *Client) ResetMySQLDatabaseCredentials(ctx context.Context, databaseID int) error

ResetMySQLDatabaseCredentials returns the Root Credentials for the given MySQL Database (may take a few seconds to work)

func (*Client) ResetOAuthClientSecret

func (c *Client) ResetOAuthClientSecret(ctx context.Context, clientID string) (*OAuthClient, error)

ResetOAuthClientSecret resets the OAuth Client secret for a client with a specified id

func (*Client) ResetPostgresDatabaseCredentials

func (c *Client) ResetPostgresDatabaseCredentials(ctx context.Context, databaseID int) error

ResetPostgresDatabaseCredentials returns the Root Credentials for the given Postgres Database (may take a few seconds to work)

func (*Client) ResizeInstance

func (c *Client) ResizeInstance(ctx context.Context, linodeID int, opts InstanceResizeOptions) error

ResizeInstance resizes an instance to new Linode type

func (*Client) ResizeInstanceDisk

func (c *Client) ResizeInstanceDisk(ctx context.Context, linodeID int, diskID int, opts InstanceDiskResizeOptions) error

ResizeInstanceDisk resizes the size of the Instance disk

func (*Client) ResizeVolume

func (c *Client) ResizeVolume(ctx context.Context, volumeID int, opts VolumeResizeOptions) error

ResizeVolume resizes an instance to new Linode type

func (*Client) RestoreInstanceBackup

func (c *Client) RestoreInstanceBackup(ctx context.Context, linodeID int, backupID int, opts RestoreInstanceOptions) error

RestoreInstanceBackup Restores a Linode's Backup to the specified Linode.

func (*Client) ResumeMySQLDatabase

func (c *Client) ResumeMySQLDatabase(ctx context.Context, databaseID int) error

ResumeMySQLDatabase resumes a suspended MySQL Managed Database

func (*Client) ResumePostgresDatabase

func (c *Client) ResumePostgresDatabase(ctx context.Context, databaseID int) error

ResumePostgresDatabase resumes a suspended PostgreSQL Managed Database

func (*Client) SecurityQuestionsAnswer

func (c *Client) SecurityQuestionsAnswer(ctx context.Context, opts SecurityQuestionsAnswerOptions) error

SecurityQuestionsAnswer adds security question responses for your User.

func (*Client) SecurityQuestionsList

func (c *Client) SecurityQuestionsList(ctx context.Context) (*SecurityQuestionsListResponse, error)

SecurityQuestionsList returns a collection of security questions and their responses, if any, for your User Profile.

func (*Client) SendPhoneNumberVerificationCode

func (c *Client) SendPhoneNumberVerificationCode(ctx context.Context, opts SendPhoneNumberVerificationCodeOptions) error

SendPhoneNumberVerificationCode sends a one-time verification code via SMS message to the submitted phone number.

func (*Client) SetAPIVersion

func (c *Client) SetAPIVersion(apiVersion string) *Client

SetAPIVersion sets the version of the API to interface with

func (*Client) SetBaseURL

func (c *Client) SetBaseURL(baseURL string) *Client

func (*Client) SetDebug

func (c *Client) SetDebug(debug bool) *Client

func (*Client) SetDefaultPaymentMethod

func (c *Client) SetDefaultPaymentMethod(ctx context.Context, paymentMethodID int) error

SetDefaultPaymentMethod sets the payment method with the provided ID as the default

func (*Client) SetGlobalCacheExpiration

func (c *Client) SetGlobalCacheExpiration(expiryTime time.Duration)

SetGlobalCacheExpiration sets the desired time for any cached response to be valid for.

func (*Client) SetHeader

func (c *Client) SetHeader(name, value string)

SetHeader sets a custom header to be used in all API requests made with the current client. NOTE: Some headers may be overridden by the individual request functions.

func (*Client) SetLogger

func (c *Client) SetLogger(logger Logger) *Client

func (*Client) SetPollDelay

func (c *Client) SetPollDelay(delay time.Duration) *Client

SetPollDelay sets the number of milliseconds to wait between events or status polls. Affects all WaitFor* functions and retries.

func (*Client) SetRetries

func (c *Client) SetRetries() *Client

SetRetries adds retry conditions for "Linode Busy." errors and 429s.

func (*Client) SetRetryAfter

func (c *Client) SetRetryAfter(callback RetryAfter) *Client

SetRetryAfter sets the callback function to be invoked with a failed request to determine wben it should be retried.

func (*Client) SetRetryCount

func (c *Client) SetRetryCount(count int) *Client

SetRetryCount sets the maximum retry attempts before aborting.

func (*Client) SetRetryMaxWaitTime

func (c *Client) SetRetryMaxWaitTime(maxWaitTime time.Duration) *Client

SetRetryMaxWaitTime sets the maximum delay before retrying a request.

func (*Client) SetRetryWaitTime

func (c *Client) SetRetryWaitTime(minWaitTime time.Duration) *Client

SetRetryWaitTime sets the default (minimum) delay before retrying a request.

func (*Client) SetRootCertificate

func (c *Client) SetRootCertificate(certPath string) error

SetRootCertificate adds a root certificate to the underlying TLS client config.

func (*Client) SetToken

func (c *Client) SetToken(token string) *Client

SetToken sets the API token for all requests from this client Only necessary if you haven't already provided the http client to NewClient() configured with the token.

func (*Client) SetUserAgent

func (c *Client) SetUserAgent(ua string) *Client

SetUserAgent sets a custom user-agent for HTTP requests

func (*Client) ShareIPAddresses

func (c *Client) ShareIPAddresses(ctx context.Context, opts IPAddressesShareOptions) error

ShareIPAddresses allows IP address reassignment (also referred to as IP failover) from one Linode to another if the primary Linode becomes unresponsive.

func (*Client) ShutdownInstance

func (c *Client) ShutdownInstance(ctx context.Context, id int) error

ShutdownInstance - Shutdown an instance

func (*Client) SuspendMySQLDatabase

func (c *Client) SuspendMySQLDatabase(ctx context.Context, databaseID int) error

SuspendMySQLDatabase suspends a MySQL Managed Database, releasing idle resources and keeping only necessary data. All service data is lost if there are no backups available.

func (*Client) SuspendPostgresDatabase

func (c *Client) SuspendPostgresDatabase(ctx context.Context, databaseID int) error

SuspendPostgresDatabase suspends a PostgreSQL Managed Database, releasing idle resources and keeping only necessary data. All service data is lost if there are no backups available.

func (*Client) Transport

func (c *Client) Transport() (*http.Transport, error)

func (*Client) UnassignPlacementGroupLinodes

func (c *Client) UnassignPlacementGroupLinodes(
	ctx context.Context,
	id int,
	options PlacementGroupUnAssignOptions,
) (*PlacementGroup, error)

UnassignPlacementGroupLinodes un-assigns the specified Linodes from the given placement group.

func (*Client) UpdateAccount

func (c *Client) UpdateAccount(ctx context.Context, opts AccountUpdateOptions) (*Account, error)

UpdateAccount updates the Account

func (*Client) UpdateAccountSettings

func (c *Client) UpdateAccountSettings(ctx context.Context, opts AccountSettingsUpdateOptions) (*AccountSettings, error)

UpdateAccountSettings updates the settings associated with the account

func (*Client) UpdateDomain

func (c *Client) UpdateDomain(ctx context.Context, domainID int, opts DomainUpdateOptions) (*Domain, error)

UpdateDomain updates the Domain with the specified id

func (*Client) UpdateDomainRecord

func (c *Client) UpdateDomainRecord(ctx context.Context, domainID int, recordID int, opts DomainRecordUpdateOptions) (*DomainRecord, error)

UpdateDomainRecord updates the DomainRecord with the specified id

func (*Client) UpdateFirewall

func (c *Client) UpdateFirewall(ctx context.Context, firewallID int, opts FirewallUpdateOptions) (*Firewall, error)

UpdateFirewall updates a Firewall with the given ID

func (*Client) UpdateFirewallRuleSet

func (c *Client) UpdateFirewallRuleSet(ctx context.Context, rulesetID int, opts FirewallRuleSetUpdateOptions) (*FirewallRuleSet, error)

UpdateFirewallRuleSet updates a Rule Set by ID.

func (*Client) UpdateFirewallRules

func (c *Client) UpdateFirewallRules(ctx context.Context, firewallID int, rules FirewallRulesUpdateOptions) (*FirewallRules, error)

UpdateFirewallRules updates the FirewallRules for the given Firewall

func (*Client) UpdateFirewallSettings

func (c *Client) UpdateFirewallSettings(ctx context.Context, opts FirewallSettingsUpdateOptions) (*FirewallSettings, error)

UpdateFirewallSettings updates the default firewalls for Linodes, Linode VPC and public interfaces, and NodeBalancers.

func (*Client) UpdateIPAddress

func (c *Client) UpdateIPAddress(ctx context.Context, address string, opts IPAddressUpdateOptions) (*InstanceIP, error)

UpdateIPAddress updates the IP address with the specified address.

func (*Client) UpdateImage

func (c *Client) UpdateImage(ctx context.Context, imageID string, opts ImageUpdateOptions) (*Image, error)

UpdateImage updates the Image with the specified id.

func (*Client) UpdateImageShareGroup

func (c *Client) UpdateImageShareGroup(
	ctx context.Context,
	imageShareGroupID int,
	opts ImageShareGroupUpdateOptions,
) (*ProducerImageShareGroup, error)

UpdateImageShareGroup allows the producer to update an existing ImageShareGroup's description and label. NOTE: May not currently be available to all users and can only be used with v4beta.

func (*Client) UpdateInstance

func (c *Client) UpdateInstance(ctx context.Context, linodeID int, opts InstanceUpdateOptions) (*Instance, error)

UpdateInstance updates a Linode instance

func (*Client) UpdateInstanceConfig

func (c *Client) UpdateInstanceConfig(ctx context.Context, linodeID int, configID int, opts InstanceConfigUpdateOptions) (*InstanceConfig, error)

UpdateInstanceConfig update an InstanceConfig for the given Instance

func (*Client) UpdateInstanceConfigInterface

func (c *Client) UpdateInstanceConfigInterface(
	ctx context.Context,
	linodeID int,
	configID int,
	interfaceID int,
	opts InstanceConfigInterfaceUpdateOptions,
) (*InstanceConfigInterface, error)

func (*Client) UpdateInstanceDisk

func (c *Client) UpdateInstanceDisk(ctx context.Context, linodeID int, diskID int, opts InstanceDiskUpdateOptions) (*InstanceDisk, error)

UpdateInstanceDisk creates a new InstanceDisk for the given Instance

func (*Client) UpdateInstanceFirewalls

func (c *Client) UpdateInstanceFirewalls(ctx context.Context, linodeID int, opts InstanceFirewallUpdateOptions) ([]Firewall, error)

UpdateInstanceFirewalls updates the Cloud Firewalls for a Linode instance Followup this call with `ListInstanceFirewalls` to verify the changes if necessary.

func (*Client) UpdateInstanceIPAddress

func (c *Client) UpdateInstanceIPAddress(ctx context.Context, linodeID int, ipAddress string, opts InstanceIPAddressUpdateOptions) (*InstanceIP, error)

UpdateInstanceIPAddress updates the IPAddress with the specified instance id and IP address

func (*Client) UpdateInterface

func (c *Client) UpdateInterface(ctx context.Context, linodeID int, interfaceID int, opts LinodeInterfaceUpdateOptions) (*LinodeInterface, error)

func (*Client) UpdateInterfaceSettings

func (c *Client) UpdateInterfaceSettings(ctx context.Context, linodeID int, opts InterfaceSettingsUpdateOptions) (*InterfaceSettings, error)

func (*Client) UpdateLKECluster

func (c *Client) UpdateLKECluster(ctx context.Context, clusterID int, opts LKEClusterUpdateOptions) (*LKECluster, error)

UpdateLKECluster updates the LKECluster with the specified id

func (*Client) UpdateLKEClusterControlPlaneACL

func (c *Client) UpdateLKEClusterControlPlaneACL(
	ctx context.Context,
	clusterID int,
	opts LKEClusterControlPlaneACLUpdateOptions,
) (*LKEClusterControlPlaneACLResponse, error)

UpdateLKEClusterControlPlaneACL updates the ACL configuration for the given cluster's control plane.

func (*Client) UpdateLKENodePool

func (c *Client) UpdateLKENodePool(ctx context.Context, clusterID, poolID int, opts LKENodePoolUpdateOptions) (*LKENodePool, error)

UpdateLKENodePool updates the LKENodePool with the specified id

func (*Client) UpdateLongviewClient

func (c *Client) UpdateLongviewClient(ctx context.Context, clientID int, opts LongviewClientUpdateOptions) (*LongviewClient, error)

UpdateLongviewClient updates a Longview Client

func (*Client) UpdateLongviewPlan

func (c *Client) UpdateLongviewPlan(ctx context.Context, opts LongviewPlanUpdateOptions) (*LongviewPlan, error)

UpdateLongviewPlan updates a Longview Plan

func (*Client) UpdateMonitorAlertDefinition

func (c *Client) UpdateMonitorAlertDefinition(
	ctx context.Context,
	serviceType string,
	alertID int,
	opts AlertDefinitionUpdateOptions,
) (*AlertDefinition, error)

UpdateMonitorAlertDefinition updates an ACLP Monitor Alert Definition.

func (*Client) UpdateMySQLDatabase

func (c *Client) UpdateMySQLDatabase(ctx context.Context, databaseID int, opts MySQLUpdateOptions) (*MySQLDatabase, error)

UpdateMySQLDatabase updates the given MySQL Database with the provided opts, returns the MySQLDatabase with the new settings

func (*Client) UpdateNodeBalancer

func (c *Client) UpdateNodeBalancer(ctx context.Context, nodebalancerID int, opts NodeBalancerUpdateOptions) (*NodeBalancer, error)

UpdateNodeBalancer updates the NodeBalancer with the specified id

func (*Client) UpdateNodeBalancerConfig

func (c *Client) UpdateNodeBalancerConfig(
	ctx context.Context,
	nodebalancerID int,
	configID int,
	opts NodeBalancerConfigUpdateOptions,
) (*NodeBalancerConfig, error)

UpdateNodeBalancerConfig updates the NodeBalancerConfig with the specified id

func (*Client) UpdateNodeBalancerNode

func (c *Client) UpdateNodeBalancerNode(
	ctx context.Context,
	nodebalancerID int,
	configID int,
	nodeID int,
	opts NodeBalancerNodeUpdateOptions,
) (*NodeBalancerNode, error)

UpdateNodeBalancerNode updates the NodeBalancerNode with the specified id

func (*Client) UpdateOAuthClient

func (c *Client) UpdateOAuthClient(ctx context.Context, clientID string, opts OAuthClientUpdateOptions) (*OAuthClient, error)

UpdateOAuthClient updates the OAuthClient with the specified id

func (*Client) UpdateObjectStorageBucketAccess

func (c *Client) UpdateObjectStorageBucketAccess(ctx context.Context, regionID, label string, opts ObjectStorageBucketUpdateAccessOptions) error

UpdateObjectStorageBucketAccess updates the access configuration for an ObjectStorageBucket

func (*Client) UpdateObjectStorageKey

func (c *Client) UpdateObjectStorageKey(ctx context.Context, keyID int, opts ObjectStorageKeyUpdateOptions) (*ObjectStorageKey, error)

UpdateObjectStorageKey updates the object storage key with the specified id

func (*Client) UpdateObjectStorageObjectACLConfig

func (c *Client) UpdateObjectStorageObjectACLConfig(
	ctx context.Context,
	regionID, label string,
	opts ObjectStorageObjectACLConfigUpdateOptions,
) (*ObjectStorageObjectACLConfig, error)

func (*Client) UpdatePlacementGroup

func (c *Client) UpdatePlacementGroup(
	ctx context.Context,
	id int,
	options PlacementGroupUpdateOptions,
) (*PlacementGroup, error)

UpdatePlacementGroup updates a placement group with the specified ID using the provided options.

func (*Client) UpdatePostgresDatabase

func (c *Client) UpdatePostgresDatabase(ctx context.Context, databaseID int, opts PostgresUpdateOptions) (*PostgresDatabase, error)

UpdatePostgresDatabase updates the given Postgres Database with the provided opts, returns the PostgresDatabase with the new settings

func (*Client) UpdateProfile

func (c *Client) UpdateProfile(ctx context.Context, opts ProfileUpdateOptions) (*Profile, error)

UpdateProfile updates the Profile with the specified id

func (*Client) UpdateProfilePreferences

func (c *Client) UpdateProfilePreferences(ctx context.Context, opts ProfilePreferences) (*ProfilePreferences, error)

UpdateProfilePreferences updates the user's preferences with the provided data

func (*Client) UpdateSSHKey

func (c *Client) UpdateSSHKey(ctx context.Context, keyID int, opts SSHKeyUpdateOptions) (*SSHKey, error)

UpdateSSHKey updates the SSHKey with the specified id

func (*Client) UpdateStackscript

func (c *Client) UpdateStackscript(ctx context.Context, scriptID int, opts StackscriptUpdateOptions) (*Stackscript, error)

UpdateStackscript updates the StackScript with the specified id

func (*Client) UpdateToken

func (c *Client) UpdateToken(ctx context.Context, tokenID int, opts TokenUpdateOptions) (*Token, error)

UpdateToken updates the Token with the specified id

func (*Client) UpdateUser

func (c *Client) UpdateUser(ctx context.Context, userID string, opts UserUpdateOptions) (*User, error)

UpdateUser updates the User with the specified id

func (*Client) UpdateUserGrants

func (c *Client) UpdateUserGrants(ctx context.Context, username string, opts UserGrantsUpdateOptions) (*UserGrants, error)

func (*Client) UpdateUserRolePermissions

func (c *Client) UpdateUserRolePermissions(ctx context.Context, username string, opts UserRolePermissionsUpdateOptions) (*UserRolePermissions, error)

UpdateUserRolePermissions updates any role permissions for username

func (*Client) UpdateVPC

func (c *Client) UpdateVPC(
	ctx context.Context,
	vpcID int,
	opts VPCUpdateOptions,
) (*VPC, error)

func (*Client) UpdateVPCSubnet

func (c *Client) UpdateVPCSubnet(
	ctx context.Context,
	vpcID int,
	subnetID int,
	opts VPCSubnetUpdateOptions,
) (*VPCSubnet, error)

func (*Client) UpdateVolume

func (c *Client) UpdateVolume(ctx context.Context, volumeID int, opts VolumeUpdateOptions) (*Volume, error)

UpdateVolume updates the Volume with the specified id

func (*Client) UpgradeInstance

func (c *Client) UpgradeInstance(ctx context.Context, linodeID int, opts InstanceUpgradeOptions) error

UpgradeInstance upgrades a Linode to its next generation.

func (*Client) UpgradeInterfaces

func (c *Client) UpgradeInterfaces(ctx context.Context, linodeID int, opts LinodeInterfacesUpgradeOptions) (*LinodeInterfacesUpgrade, error)

func (*Client) UploadImage

func (c *Client) UploadImage(ctx context.Context, opts ImageUploadOptions) (*Image, error)

UploadImage creates and uploads an image.

func (*Client) UploadImageToURL

func (c *Client) UploadImageToURL(ctx context.Context, uploadURL string, image io.Reader) error

UploadImageToURL uploads the given image to the given upload URL.

func (*Client) UploadObjectStorageBucketCert

func (c *Client) UploadObjectStorageBucketCert(
	ctx context.Context,
	regionID, bucket string,
	opts ObjectStorageBucketCertUploadOptions,
) (*ObjectStorageBucketCert, error)

UploadObjectStorageBucketCert uploads a TLS/SSL Cert to be used with an Object Storage Bucket.

func (*Client) UseCache

func (c *Client) UseCache(value bool)

UseCache sets whether response caching should be used

func (*Client) UseProfile

func (c *Client) UseProfile(name string) error

UseProfile switches client to use the specified profile. The specified profile must be already be loaded using client.LoadConfig(...)

func (*Client) UseURL

func (c *Client) UseURL(apiURL string) (*Client, error)

UseURL parses the individual components of the given API URL and configures the client accordingly. For example, a valid URL. For example:

client.UseURL("https://api.test.linode.com/v4beta")

func (*Client) VerifyPhoneNumber

func (c *Client) VerifyPhoneNumber(ctx context.Context, opts VerifyPhoneNumberOptions) error

VerifyPhoneNumber verifies a phone number by confirming the one-time code received via SMS message after accessing the Phone Verification Code Send command.

func (Client) WaitForAlertDefinitionStatus

func (client Client) WaitForAlertDefinitionStatus(
	ctx context.Context,
	status AlertDefinitionStatus,
	serviceType string,
	alertID int,
) (*AlertDefinition, error)

WaitForAlertDefinitionStatus waits for the Alert Definition to reach the specified status

func (Client) WaitForDatabaseStatus

func (client Client) WaitForDatabaseStatus(
	ctx context.Context, dbID int, dbEngine DatabaseEngineType, status DatabaseStatus,
) error

WaitForDatabaseStatus waits for the provided database to have the given status.

func (Client) WaitForEventFinished

func (client Client) WaitForEventFinished(
	ctx context.Context,
	id any,
	entityType EntityType,
	action EventAction,
	minStart time.Time,
) (*Event, error)

WaitForEventFinished waits for an entity action to reach the 'finished' state before returning. If the event indicates a failure both the failed event and the error will be returned. nolint

func (Client) WaitForImageRegionStatus

func (client Client) WaitForImageRegionStatus(ctx context.Context, imageID, region string, status ImageRegionStatus) (*Image, error)

WaitForImageRegionStatus waits for an Image's replica to reach the desired state before returning.

func (Client) WaitForImageStatus

func (client Client) WaitForImageStatus(ctx context.Context, imageID string, status ImageStatus) (*Image, error)

WaitForImageStatus waits for the Image to reach the desired state before returning.

func (Client) WaitForInstanceDiskStatus

func (client Client) WaitForInstanceDiskStatus(ctx context.Context, instanceID int, diskID int, status DiskStatus) (*InstanceDisk, error)

WaitForInstanceDiskStatus waits for the Linode instance disk to reach the desired state before returning.

func (Client) WaitForInstanceStatus

func (client Client) WaitForInstanceStatus(ctx context.Context, instanceID int, status InstanceStatus) (*Instance, error)

WaitForInstanceStatus waits for the Linode instance to reach the desired state before returning.

func (Client) WaitForLKEClusterConditions

func (client Client) WaitForLKEClusterConditions(
	ctx context.Context,
	clusterID int,
	options LKEClusterPollOptions,
	conditions ...ClusterConditionFunc,
) error

WaitForLKEClusterConditions waits for the given LKE conditions to be true

func (Client) WaitForLKEClusterStatus

func (client Client) WaitForLKEClusterStatus(ctx context.Context, clusterID int, status LKEClusterStatus) (*LKECluster, error)

WaitForLKEClusterStatus waits for the LKECluster to reach the desired state before returning.

func (Client) WaitForResourceFree

func (client Client) WaitForResourceFree(
	ctx context.Context, entityType EntityType, entityID any,
) error

WaitForResourceFree waits for a resource to have no running events.

func (Client) WaitForSnapshotStatus

func (client Client) WaitForSnapshotStatus(
	ctx context.Context,
	instanceID int,
	snapshotID int,
	status InstanceSnapshotStatus,
) (*InstanceSnapshot, error)

WaitForSnapshotStatus waits for the Snapshot to reach the desired state before returning.

func (Client) WaitForVolumeIOReadyStatus

func (client Client) WaitForVolumeIOReadyStatus(
	ctx context.Context,
	volumeID int,
	status bool,
) (*Volume, error)

WaitForVolumeIOReadyStatus waits for the io_ready status to verify whether the volume is successfully attached to a Linode instance and ready for read and write operations

func (Client) WaitForVolumeLinodeID

func (client Client) WaitForVolumeLinodeID(ctx context.Context, volumeID int, linodeID *int) (*Volume, error)

WaitForVolumeLinodeID waits for the Volume to match the desired LinodeID before returning. An active Instance will not immediately attach or detach a volume, so the LinodeID must be polled to determine volume readiness from the API.

func (Client) WaitForVolumeStatus

func (client Client) WaitForVolumeStatus(ctx context.Context, volumeID int, status VolumeStatus) (*Volume, error)

WaitForVolumeStatus waits for the Volume to reach the desired state before returning.

type ClusterConditionFunc

type ClusterConditionFunc func(context.Context, ClusterConditionOptions) (bool, error)

ClusterConditionFunc represents a function that tests a condition against an LKE cluster, returns true if the condition has been reached, false if it has not yet been reached.

type ClusterConditionOptions

type ClusterConditionOptions struct {
	LKEClusterKubeconfig *LKEClusterKubeconfig
	TransportWrapper     func(http.RoundTripper) http.RoundTripper
}

ClusterConditionOptions configures LKE cluster condition checks.

type ClusterPrice

type ClusterPrice struct {
	Hourly  float32 `json:"hourly"`
	Monthly float32 `json:"monthly"`
}

ClusterPrice for Hourly and Monthly price models

type Comp

type Comp struct {
	Column   string
	Operator FilterOperator
	Value    any
}

func (*Comp) JSONValueSegment

func (c *Comp) JSONValueSegment() any

func (*Comp) Key

func (c *Comp) Key() string

type ConfigAlgorithm

type ConfigAlgorithm string

ConfigAlgorithm constants start with Algorithm and include Linode API NodeBalancer Config Algorithms

const (
	AlgorithmRoundRobin ConfigAlgorithm = "roundrobin"
	AlgorithmLeastConn  ConfigAlgorithm = "leastconn"
	AlgorithmSource     ConfigAlgorithm = "source"
	AlgorithmRingHash   ConfigAlgorithm = "ring_hash"
)

ConfigAlgorithm constants reflect the NodeBalancer Config Algorithm

type ConfigCheck

type ConfigCheck string

ConfigCheck constants start with Check and include Linode API NodeBalancer Config Check methods

const (
	CheckNone       ConfigCheck = "none"
	CheckConnection ConfigCheck = "connection"
	CheckHTTP       ConfigCheck = "http"
	CheckHTTPBody   ConfigCheck = "http_body"
)

ConfigCheck constants reflect the node health status checking method for a NodeBalancer Config

type ConfigCipher

type ConfigCipher string

ConfigCipher constants start with Cipher and include Linode API NodeBalancer Config Cipher values

const (
	CipherRecommended ConfigCipher = "recommended"
	CipherLegacy      ConfigCipher = "legacy"
)

ConfigCipher constants reflect the preferred cipher set for a NodeBalancer Config

type ConfigInterfacePurpose

type ConfigInterfacePurpose string

ConfigInterfacePurpose options start with InterfacePurpose and include all known interface purpose types

const (
	InterfacePurposePublic ConfigInterfacePurpose = "public"
	InterfacePurposeVLAN   ConfigInterfacePurpose = "vlan"
	InterfacePurposeVPC    ConfigInterfacePurpose = "vpc"
)

type ConfigProfile

type ConfigProfile struct {
	APIToken   string `ini:"token"`
	APIVersion string `ini:"api_version"`
	APIURL     string `ini:"api_url"`
}

type ConfigProtocol

type ConfigProtocol string

ConfigProtocol constants start with Protocol and include Linode API Nodebalancer Config protocols

const (
	ProtocolHTTP  ConfigProtocol = "http"
	ProtocolHTTPS ConfigProtocol = "https"
	ProtocolTCP   ConfigProtocol = "tcp"
	ProtocolUDP   ConfigProtocol = "udp"
)

ConfigProtocol constants reflect the protocol used by a NodeBalancer Config

type ConfigProxyProtocol

type ConfigProxyProtocol string

ConfigProxyProtocol constants start with ProxyProtocol and include Linode API NodeBalancer Config proxy protocol versions

const (
	ProxyProtocolNone ConfigProxyProtocol = "none"
	ProxyProtocolV1   ConfigProxyProtocol = "v1"
	ProxyProtocolV2   ConfigProxyProtocol = "v2"
)

ConfigProxyProtocol constants reflect the proxy protocol version used by a NodeBalancer Config

type ConfigStickiness

type ConfigStickiness string

ConfigStickiness constants start with Stickiness and include Linode API NodeBalancer Config Stickiness

const (
	StickinessNone       ConfigStickiness = "none"
	StickinessSession    ConfigStickiness = "session"
	StickinessTable      ConfigStickiness = "table"
	StickinessHTTPCookie ConfigStickiness = "http_cookie"
	StickinessSourceIP   ConfigStickiness = "source_ip"
)

ConfigStickiness constants reflect the node stickiness method for a NodeBalancer Config

type ConfirmTwoFactorOptions

type ConfirmTwoFactorOptions struct {
	TFACode string `json:"tfa_code"`
}

ConfirmTwoFactorOptions contains fields used by ConfirmTwoFactor

type ConfirmTwoFactorResponse

type ConfirmTwoFactorResponse struct {
	Scratch string `json:"scratch"`
}

ConfirmTwoFactorResponse contains fields returned by ConfirmTwoFactor

type ConnectTimeout

type ConnectTimeout struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type ConsumerImageShareGroup

type ConsumerImageShareGroup struct {
	ID          int        `json:"id"`
	UUID        string     `json:"uuid"`
	Label       string     `json:"label"`
	Description string     `json:"description"`
	IsSuspended bool       `json:"is_suspended"`
	Created     *time.Time `json:"-"`
	Updated     *time.Time `json:"-"`
}

ConsumerImageShareGroup represents an ImageShareGroup that the consumer is a member of.

func (*ConsumerImageShareGroup) UnmarshalJSON

func (isg *ConsumerImageShareGroup) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type CreditCard

type CreditCard struct {
	LastFour string `json:"last_four"`
	Expiry   string `json:"expiry"`
}

CreditCard information associated with the Account.

type CriteriaCondition

type CriteriaCondition string

CriteriaCondition represents supported criteria conditions

const (
	CriteriaConditionAll CriteriaCondition = "ALL"
)

type DashboardFilter

type DashboardFilter struct {
	DimensionLabel string `json:"dimension_label"`
	Operator       string `json:"operator"`
	Value          string `json:"value"`
}

DashboardFilter represents a filter for dashboard widgets

type DashboardType

type DashboardType string

DashboardType is an enum object for DashboardType

const (
	DashboardTypeStandard DashboardType = "standard"
	DashboardTypeCustom   DashboardType = "custom"
)

type DashboardWidget

type DashboardWidget struct {
	Metric            string            `json:"metric"`
	Unit              string            `json:"unit"`
	Label             string            `json:"label"`
	Color             string            `json:"color"`
	Size              int               `json:"size"`
	ChartType         ChartType         `json:"chart_type"`
	YLabel            string            `json:"y_label"`
	AggregateFunction AggregateFunction `json:"aggregate_function"`
	GroupBy           []string          `json:"group_by"`
	Filters           []DashboardFilter `json:"filters"`
}

DashboardWidget represents an ACLP DashboardWidget object

type Database

type Database struct {
	ID              int                       `json:"id"`
	Status          DatabaseStatus            `json:"status"`
	Label           string                    `json:"label"`
	Hosts           DatabaseHost              `json:"hosts"`
	Region          string                    `json:"region"`
	Type            string                    `json:"type"`
	Engine          string                    `json:"engine"`
	Version         string                    `json:"version"`
	ClusterSize     int                       `json:"cluster_size"`
	Platform        DatabasePlatform          `json:"platform"`
	Fork            *DatabaseFork             `json:"fork"`
	Updates         DatabaseMaintenanceWindow `json:"updates"`
	UsedDiskSizeGB  int                       `json:"used_disk_size_gb"`
	TotalDiskSizeGB int                       `json:"total_disk_size_gb"`
	Port            int                       `json:"port"`

	// Members has dynamic keys so it is a map
	Members map[string]DatabaseMemberType `json:"members"`

	Encrypted         bool       `json:"encrypted"`
	AllowList         []string   `json:"allow_list"`
	InstanceURI       string     `json:"instance_uri"`
	Created           *time.Time `json:"-"`
	Updated           *time.Time `json:"-"`
	OldestRestoreTime *time.Time `json:"-"`

	PrivateNetwork *DatabasePrivateNetwork `json:"private_network,omitzero"`
}

A Database is a instance of Linode Managed Databases

func (*Database) UnmarshalJSON

func (d *Database) UnmarshalJSON(b []byte) error

type DatabaseDayOfWeek

type DatabaseDayOfWeek int
const (
	DatabaseMaintenanceDayMonday DatabaseDayOfWeek = iota + 1
	DatabaseMaintenanceDayTuesday
	DatabaseMaintenanceDayWednesday
	DatabaseMaintenanceDayThursday
	DatabaseMaintenanceDayFriday
	DatabaseMaintenanceDaySaturday
	DatabaseMaintenanceDaySunday
)

type DatabaseEngine

type DatabaseEngine struct {
	ID      string `json:"id"`
	Engine  string `json:"engine"`
	Version string `json:"version"`
}

DatabaseEngine is information about Engines supported by Linode Managed Databases

type DatabaseEngineType

type DatabaseEngineType string
const (
	DatabaseEngineTypeMySQL    DatabaseEngineType = "mysql"
	DatabaseEngineTypePostgres DatabaseEngineType = "postgresql"
)

type DatabaseFork

type DatabaseFork struct {
	Source      int        `json:"source"`
	RestoreTime *time.Time `json:"-,omitzero"`
}

DatabaseFork describes the source and restore time for the fork for forked DBs

func (*DatabaseFork) UnmarshalJSON

func (d *DatabaseFork) UnmarshalJSON(b []byte) error

type DatabaseHost

type DatabaseHost struct {
	Primary string `json:"primary"`
	Standby string `json:"standby"`
}

DatabaseHost for Primary/Secondary of Database

type DatabaseMaintenanceFrequency

type DatabaseMaintenanceFrequency string
const (
	DatabaseMaintenanceFrequencyWeekly  DatabaseMaintenanceFrequency = "weekly"
	DatabaseMaintenanceFrequencyMonthly DatabaseMaintenanceFrequency = "monthly"
)

type DatabaseMaintenanceWindow

type DatabaseMaintenanceWindow struct {
	DayOfWeek DatabaseDayOfWeek            `json:"day_of_week"`
	Duration  int                          `json:"duration"`
	Frequency DatabaseMaintenanceFrequency `json:"frequency"`
	HourOfDay int                          `json:"hour_of_day"`

	Pending []DatabaseMaintenanceWindowPending `json:"pending,omitzero"`
}

DatabaseMaintenanceWindow stores information about a MySQL cluster's maintenance window

type DatabaseMaintenanceWindowPending

type DatabaseMaintenanceWindowPending struct {
	Deadline    *time.Time `json:"-"`
	Description string     `json:"description"`
	PlannedFor  *time.Time `json:"-"`
}

func (*DatabaseMaintenanceWindowPending) UnmarshalJSON

func (d *DatabaseMaintenanceWindowPending) UnmarshalJSON(b []byte) error

type DatabaseMemberType

type DatabaseMemberType string
const (
	DatabaseMemberTypePrimary  DatabaseMemberType = "primary"
	DatabaseMemberTypeFailover DatabaseMemberType = "failover"
)

type DatabasePlatform

type DatabasePlatform string
const (
	DatabasePlatformRDBMSLegacy  DatabasePlatform = "rdbms-legacy"
	DatabasePlatformRDBMSDefault DatabasePlatform = "rdbms-default"
)

type DatabasePrivateNetwork

type DatabasePrivateNetwork struct {
	VPCID        int  `json:"vpc_id"`
	SubnetID     int  `json:"subnet_id"`
	PublicAccess bool `json:"public_access"`
}

type DatabaseStatus

type DatabaseStatus string
const (
	DatabaseStatusProvisioning DatabaseStatus = "provisioning"
	DatabaseStatusActive       DatabaseStatus = "active"
	DatabaseStatusDeleting     DatabaseStatus = "deleting"
	DatabaseStatusDeleted      DatabaseStatus = "deleted"
	DatabaseStatusSuspending   DatabaseStatus = "suspending"
	DatabaseStatusSuspended    DatabaseStatus = "suspended"
	DatabaseStatusResuming     DatabaseStatus = "resuming"
	DatabaseStatusRestoring    DatabaseStatus = "restoring"
	DatabaseStatusFailed       DatabaseStatus = "failed"
	DatabaseStatusDegraded     DatabaseStatus = "degraded"
	DatabaseStatusUpdating     DatabaseStatus = "updating"
	DatabaseStatusBackingUp    DatabaseStatus = "backing_up"
)

type DatabaseType

type DatabaseType struct {
	ID          string                `json:"id"`
	Label       string                `json:"label"`
	Class       string                `json:"class"`
	VirtualCPUs int                   `json:"vcpus"`
	Disk        int                   `json:"disk"`
	Memory      int                   `json:"memory"`
	Engines     DatabaseTypeEngineMap `json:"engines"`
	Deprecated  bool                  `json:"deprecated"`
}

DatabaseType is information about the supported Database Types by Linode Managed Databases

type DatabaseTypeEngine

type DatabaseTypeEngine struct {
	Quantity int          `json:"quantity"`
	Price    ClusterPrice `json:"price"`
}

DatabaseTypeEngine Sizes and Prices

type DatabaseTypeEngineMap

type DatabaseTypeEngineMap struct {
	MySQL      []DatabaseTypeEngine `json:"mysql"`
	PostgreSQL []DatabaseTypeEngine `json:"postgresql"`
}

DatabaseTypeEngineMap stores a list of Database Engine types by engine

type DeadlockTimeout

type DeadlockTimeout struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type DefaultFirewallIDs

type DefaultFirewallIDs struct {
	Linode          *int `json:"linode"`
	NodeBalancer    *int `json:"nodebalancer"`
	PublicInterface *int `json:"public_interface"`
	VPCInterface    *int `json:"vpc_interface"`
}

type DefaultFirewallIDsOptions

type DefaultFirewallIDsOptions struct {
	Linode          **int `json:"linode,omitzero"`
	NodeBalancer    **int `json:"nodebalancer,omitzero"`
	PublicInterface **int `json:"public_interface,omitzero"`
	VPCInterface    **int `json:"vpc_interface,omitzero"`
}

type DefaultTimeZone

type DefaultTimeZone struct {
	Description     string `json:"description"`
	Example         string `json:"example"`
	MaxLength       int    `json:"maxLength"`
	MinLength       int    `json:"minLength"`
	Pattern         string `json:"pattern"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type DefaultToastCompression

type DefaultToastCompression struct {
	Description     string   `json:"description"`
	Enum            []string `json:"enum"`
	Example         string   `json:"example"`
	RequiresRestart bool     `json:"requires_restart"`
	Type            string   `json:"type"`
}

type DevicesCreationOptions

type DevicesCreationOptions struct {
	Linodes          []int `json:"linodes,omitzero"`
	NodeBalancers    []int `json:"nodebalancers,omitzero"`
	LinodeInterfaces []int `json:"linode_interfaces,omitzero"`
}

DevicesCreationOptions fields are used when adding devices during the Firewall creation process.

type DimensionFilter

type DimensionFilter struct {
	DimensionLabel string `json:"dimension_label"`
	Label          string `json:"label"`
	Operator       string `json:"operator"`
	Value          string `json:"value"`
}

DimensionFilter represents a single dimension filter used inside a Rule.

type DimensionFilterOptions

type DimensionFilterOptions struct {
	DimensionLabel string `json:"dimension_label,omitzero"`
	Operator       string `json:"operator,omitzero"`
	Value          string `json:"value,omitzero"`
}

DimensionFilterOptions represents a single dimension filter option used inside a Rule.

type DiskFilesystem

type DiskFilesystem string

DiskFilesystem constants start with Filesystem and include Linode API Filesystems

const (
	FilesystemRaw    DiskFilesystem = "raw"
	FilesystemSwap   DiskFilesystem = "swap"
	FilesystemExt3   DiskFilesystem = "ext3"
	FilesystemExt4   DiskFilesystem = "ext4"
	FilesystemInitrd DiskFilesystem = "initrd"
)

DiskFilesystem constants represent the filesystems types an Instance Disk may use

type DiskStatus

type DiskStatus string

DiskStatus constants have the prefix "Disk" and include Linode API Instance Disk Status

const (
	DiskReady    DiskStatus = "ready"
	DiskNotReady DiskStatus = "not ready"
	DiskDeleting DiskStatus = "deleting"
)

DiskStatus constants represent the status values an Instance Disk may have

type Domain

type Domain struct {
	//	This Domain's unique ID
	ID int `json:"id"`

	// The domain this Domain represents. These must be unique in our system; you cannot have two Domains representing the same domain.
	Domain string `json:"domain"`

	// If this Domain represents the authoritative source of information for the domain it describes, or if it is a read-only copy of a master (also called a slave).
	Type DomainType `json:"type"` // Enum:"master" "slave"

	// Used to control whether this Domain is currently being rendered.
	Status DomainStatus `json:"status"` // Enum:"disabled" "active" "edit_mode" "has_errors"

	// A description for this Domain. This is for display purposes only.
	Description string `json:"description"`

	// Start of Authority email address. This is required for master Domains.
	SOAEmail string `json:"soa_email"`

	// The interval, in seconds, at which a failed refresh should be retried.
	// Valid values are 300, 3600, 7200, 14400, 28800, 57600, 86400, 172800, 345600, 604800, 1209600, and 2419200 - any other value will be rounded to the nearest valid value.
	RetrySec int `json:"retry_sec"`

	// The IP addresses representing the master DNS for this Domain.
	MasterIPs []string `json:"master_ips"`

	// The list of IPs that may perform a zone transfer for this Domain. This is potentially dangerous, and should be set to an empty list unless you intend to use it.
	AXfrIPs []string `json:"axfr_ips"`

	// An array of tags applied to this object. Tags are for organizational purposes only.
	Tags []string `json:"tags"`

	// The amount of time in seconds that may pass before this Domain is no longer authoritative. Valid values are 300, 3600, 7200, 14400, 28800, 57600, 86400, 172800, 345600, 604800, 1209600, and 2419200 - any other value will be rounded to the nearest valid value.
	ExpireSec int `json:"expire_sec"`

	// The amount of time in seconds before this Domain should be refreshed. Valid values are 300, 3600, 7200, 14400, 28800, 57600, 86400, 172800, 345600, 604800, 1209600, and 2419200 - any other value will be rounded to the nearest valid value.
	RefreshSec int `json:"refresh_sec"`

	// "Time to Live" - the amount of time in seconds that this Domain's records may be cached by resolvers or other domain servers. Valid values are 300, 3600, 7200, 14400, 28800, 57600, 86400, 172800, 345600, 604800, 1209600, and 2419200 - any other value will be rounded to the nearest valid value.
	TTLSec int `json:"ttl_sec"`
}

Domain represents a Domain object

func (Domain) GetUpdateOptions

func (d Domain) GetUpdateOptions() (du DomainUpdateOptions)

GetUpdateOptions converts a Domain to DomainUpdateOptions for use in UpdateDomain

type DomainCloneOptions

type DomainCloneOptions struct {
	Domain string `json:"domain"`
}

type DomainCreateOptions

type DomainCreateOptions struct {
	// The domain this Domain represents. These must be unique in our system; you cannot have two Domains representing the same domain.
	Domain string `json:"domain"`

	// If this Domain represents the authoritative source of information for the domain it describes, or if it is a read-only copy of a master (also called a slave).
	// Enum:"master" "slave"
	Type DomainType `json:"type"`

	// Used to control whether this Domain is currently being rendered.
	// Enum:"disabled" "active" "edit_mode" "has_errors"
	Status DomainStatus `json:"status,omitzero"`

	// A description for this Domain. This is for display purposes only.
	Description string `json:"description,omitzero"`

	// Start of Authority email address. This is required for master Domains.
	SOAEmail string `json:"soa_email,omitzero"`

	// The interval, in seconds, at which a failed refresh should be retried.
	// Valid values are 300, 3600, 7200, 14400, 28800, 57600, 86400, 172800, 345600, 604800, 1209600, and 2419200 - any other value will be rounded to the nearest valid value.
	RetrySec int `json:"retry_sec,omitzero"`

	// The IP addresses representing the master DNS for this Domain.
	MasterIPs []string `json:"master_ips"`

	// The list of IPs that may perform a zone transfer for this Domain. This is potentially dangerous, and should be set to an empty list unless you intend to use it.
	AXfrIPs []string `json:"axfr_ips"`

	// An array of tags applied to this object. Tags are for organizational purposes only.
	Tags []string `json:"tags"`

	// The amount of time in seconds that may pass before this Domain is no longer authoritative. Valid values are 300, 3600, 7200, 14400, 28800, 57600, 86400, 172800, 345600, 604800, 1209600, and 2419200 - any other value will be rounded to the nearest valid value.
	ExpireSec int `json:"expire_sec,omitzero"`

	// The amount of time in seconds before this Domain should be refreshed. Valid values are 300, 3600, 7200, 14400, 28800, 57600, 86400, 172800, 345600, 604800, 1209600, and 2419200 - any other value will be rounded to the nearest valid value.
	RefreshSec int `json:"refresh_sec,omitzero"`

	// "Time to Live" - the amount of time in seconds that this Domain's records may be cached by resolvers or other domain servers. Valid values are 300, 3600, 7200, 14400, 28800, 57600, 86400, 172800, 345600, 604800, 1209600, and 2419200 - any other value will be rounded to the nearest valid value.
	TTLSec int `json:"ttl_sec,omitzero"`
}

DomainCreateOptions fields are those accepted by CreateDomain

type DomainImportOptions

type DomainImportOptions struct {
	Domain           string `json:"domain"`
	RemoteNameserver string `json:"remove_nameserver"`
}

type DomainRecord

type DomainRecord struct {
	ID       int              `json:"id"`
	Type     DomainRecordType `json:"type"`
	Name     string           `json:"name"`
	Target   string           `json:"target"`
	Priority int              `json:"priority"`
	Weight   int              `json:"weight"`
	Port     int              `json:"port"`
	Service  *string          `json:"service"`
	Protocol *string          `json:"protocol"`
	TTLSec   int              `json:"ttl_sec"`
	Tag      *string          `json:"tag"`
	Created  *time.Time       `json:"-"`
	Updated  *time.Time       `json:"-"`
}

DomainRecord represents a DomainRecord object

func (DomainRecord) GetUpdateOptions

func (d DomainRecord) GetUpdateOptions() (du DomainRecordUpdateOptions)

GetUpdateOptions converts a DomainRecord to DomainRecordUpdateOptions for use in UpdateDomainRecord

func (*DomainRecord) UnmarshalJSON

func (d *DomainRecord) UnmarshalJSON(b []byte) error

UnmarshalJSON for DomainRecord responses

type DomainRecordCreateOptions

type DomainRecordCreateOptions struct {
	Type     DomainRecordType `json:"type"`
	Name     string           `json:"name"`
	Target   string           `json:"target"`
	Priority *int             `json:"priority,omitzero"`
	Weight   *int             `json:"weight,omitzero"`
	Port     *int             `json:"port,omitzero"`
	Service  *string          `json:"service,omitzero"`
	Protocol *string          `json:"protocol,omitzero"`
	TTLSec   int              `json:"ttl_sec,omitzero"` // 0 is not accepted by Linode, so can be omitted
	Tag      *string          `json:"tag,omitzero"`
}

DomainRecordCreateOptions fields are those accepted by CreateDomainRecord

type DomainRecordType

type DomainRecordType string

DomainRecordType constants start with RecordType and include Linode API Domain Record Types

const (
	RecordTypeA     DomainRecordType = "A"
	RecordTypeAAAA  DomainRecordType = "AAAA"
	RecordTypeNS    DomainRecordType = "NS"
	RecordTypeMX    DomainRecordType = "MX"
	RecordTypeCNAME DomainRecordType = "CNAME"
	RecordTypeTXT   DomainRecordType = "TXT"
	RecordTypeSRV   DomainRecordType = "SRV"
	RecordTypePTR   DomainRecordType = "PTR"
	RecordTypeCAA   DomainRecordType = "CAA"
)

DomainRecordType constants are the DNS record types a DomainRecord can assign

type DomainRecordUpdateOptions

type DomainRecordUpdateOptions struct {
	Type     DomainRecordType `json:"type,omitzero"`
	Name     string           `json:"name,omitzero"`
	Target   string           `json:"target,omitzero"`
	Priority *int             `json:"priority,omitzero"` // 0 is valid, so omit only nil values
	Weight   *int             `json:"weight,omitzero"`   // 0 is valid, so omit only nil values
	Port     *int             `json:"port,omitzero"`     // 0 is valid to spec, so omit only nil values
	Service  *string          `json:"service,omitzero"`
	Protocol *string          `json:"protocol,omitzero"`
	TTLSec   int              `json:"ttl_sec,omitzero"` // 0 is not accepted by Linode, so can be omitted
	Tag      *string          `json:"tag,omitzero"`
}

DomainRecordUpdateOptions fields are those accepted by UpdateDomainRecord

type DomainStatus

type DomainStatus string

DomainStatus constants start with DomainStatus and include Linode API Domain Status values

const (
	DomainStatusDisabled  DomainStatus = "disabled"
	DomainStatusActive    DomainStatus = "active"
	DomainStatusEditMode  DomainStatus = "edit_mode"
	DomainStatusHasErrors DomainStatus = "has_errors"
)

DomainStatus constants reflect the current status of a Domain

type DomainType

type DomainType string

DomainType constants start with DomainType and include Linode API Domain Type values

const (
	DomainTypeMaster DomainType = "master"
	DomainTypeSlave  DomainType = "slave"
)

DomainType constants reflect the DNS zone type of a Domain

type DomainUpdateOptions

type DomainUpdateOptions struct {
	// The domain this Domain represents. These must be unique in our system; you cannot have two Domains representing the same domain.
	Domain string `json:"domain,omitzero"`

	// If this Domain represents the authoritative source of information for the domain it describes, or if it is a read-only copy of a master (also called a slave).
	// Enum:"master" "slave"
	Type DomainType `json:"type,omitzero"`

	// Used to control whether this Domain is currently being rendered.
	// Enum:"disabled" "active" "edit_mode" "has_errors"
	Status DomainStatus `json:"status,omitzero"`

	// A description for this Domain. This is for display purposes only.
	Description string `json:"description,omitzero"`

	// Start of Authority email address. This is required for master Domains.
	SOAEmail string `json:"soa_email,omitzero"`

	// The interval, in seconds, at which a failed refresh should be retried.
	// Valid values are 300, 3600, 7200, 14400, 28800, 57600, 86400, 172800, 345600, 604800, 1209600, and 2419200 - any other value will be rounded to the nearest valid value.
	RetrySec int `json:"retry_sec,omitzero"`

	// The IP addresses representing the master DNS for this Domain.
	MasterIPs []string `json:"master_ips"`

	// The list of IPs that may perform a zone transfer for this Domain. This is potentially dangerous, and should be set to an empty list unless you intend to use it.
	AXfrIPs []string `json:"axfr_ips"`

	// An array of tags applied to this object. Tags are for organizational purposes only.
	Tags []string `json:"tags"`

	// The amount of time in seconds that may pass before this Domain is no longer authoritative. Valid values are 300, 3600, 7200, 14400, 28800, 57600, 86400, 172800, 345600, 604800, 1209600, and 2419200 - any other value will be rounded to the nearest valid value.
	ExpireSec int `json:"expire_sec,omitzero"`

	// The amount of time in seconds before this Domain should be refreshed. Valid values are 300, 3600, 7200, 14400, 28800, 57600, 86400, 172800, 345600, 604800, 1209600, and 2419200 - any other value will be rounded to the nearest valid value.
	RefreshSec int `json:"refresh_sec,omitzero"`

	// "Time to Live" - the amount of time in seconds that this Domain's records may be cached by resolvers or other domain servers. Valid values are 300, 3600, 7200, 14400, 28800, 57600, 86400, 172800, 345600, 604800, 1209600, and 2419200 - any other value will be rounded to the nearest valid value.
	TTLSec int `json:"ttl_sec,omitzero"`
}

DomainUpdateOptions converts a Domain to DomainUpdateOptions for use in UpdateDomain

type DomainZoneFile

type DomainZoneFile struct {
	ZoneFile []string `json:"zone_file"`
}

DomainZoneFile represents the Zone File of a Domain

type EmailChannelDetails

type EmailChannelDetails struct {
	Usernames     []string `json:"usernames"`
	RecipientType string   `json:"recipient_type"`
}

EmailChannelDetails represents email-specific details for a channel

type Entity

type Entity struct {
	ID    int    `json:"id"`
	Label string `json:"label"`
	Type  string `json:"type"`
	URL   string `json:"url"`
}

Entity represents the entity being affected by maintenance

type EntityMetric

type EntityMetric struct {
	Name              string            `json:"name"`
	AggregateFunction AggregateFunction `json:"aggregate_function"`
}

EntityMetric specifies a metric name and its corresponding aggregation function.

type EntityMetrics

type EntityMetrics struct {
	Data      EntityMetricsData  `json:"data"`
	IsPartial bool               `json:"is_partial"`
	Stats     EntityMetricsStats `json:"stats"`
	Status    string             `json:"status"`
}

EntityMetrics is the response body of the metrics for the entities requested

type EntityMetricsData

type EntityMetricsData struct {
	Result     []EntityMetricsDataResult `json:"result"`
	ResultType string                    `json:"result_type"`
}

EntityMetricsData describes the result and type for the entity metrics

type EntityMetricsDataResult

type EntityMetricsDataResult struct {
	Metric map[string]any `json:"metric"`
	Values [][]any        `json:"values"`
}

EntityMetricsDataResult contains the information of a metric and values

type EntityMetricsFetchOptions

type EntityMetricsFetchOptions struct {
	// EntityIDs are expected to be type "any" as different service_types have different variable type for their entity_ids. For example, Linode has "int" entity_ids whereas object storage has "string" as entity_ids.
	EntityIDs []any `json:"entity_ids"`

	Filters              []MetricFilter              `json:"filters,omitzero"`
	Metrics              []EntityMetric              `json:"metrics"`
	TimeGranularity      []MetricTimeGranularity     `json:"time_granularity,omitzero"`
	RelativeTimeDuration *MetricRelativeTimeDuration `json:"relative_time_duration,omitzero"`
	AbsoluteTimeDuration *MetricAbsoluteTimeDuration `json:"absolute_time_duration,omitzero"`
}

EntityMetricsFetchOptions are the options used to fetch metrics with the entity ids provided

type EntityMetricsStats

type EntityMetricsStats struct {
	ExecutionTimeMsec int    `json:"executionTimeMsec"`
	SeriesFetched     string `json:"seriesFetched"`
}

EntityMetricsStats shows statistics info of the metrics fetched

type EntityType

type EntityType string

EntityType constants start with Entity and include Linode API Event Entity Types

const (
	EntityAccount        EntityType = "account"
	EntityBackups        EntityType = "backups"
	EntityCommunity      EntityType = "community"
	EntityDatabase       EntityType = "database"
	EntityDisk           EntityType = "disk"
	EntityDomain         EntityType = "domain"
	EntityTransfer       EntityType = "entity_transfer"
	EntityFirewall       EntityType = "firewall"
	EntityImage          EntityType = "image"
	EntityIPAddress      EntityType = "ipaddress"
	EntityLinode         EntityType = "linode"
	EntityLKECluster     EntityType = "lkecluster"
	EntityLKENodePool    EntityType = "lkenodepool"
	EntityLongview       EntityType = "longview"
	EntityManagedService EntityType = "managed_service"
	EntityNodebalancer   EntityType = "nodebalancer"
	EntityOAuthClient    EntityType = "oauth_client"
	EntityPlacementGroup EntityType = "placement_group"
	EntityProfile        EntityType = "profile"
	EntityStackscript    EntityType = "stackscript"
	EntityTag            EntityType = "tag"
	EntityTicket         EntityType = "ticket"
	EntityToken          EntityType = "token"
	EntityUser           EntityType = "user"
	EntityUserSSHKey     EntityType = "user_ssh_key"
	EntityVolume         EntityType = "volume"
	EntityVPC            EntityType = "vpc"
	EntityVPCSubnet      EntityType = "subnet"
)

EntityType constants are the entities an Event can be related to.

type EntityUserGrant

type EntityUserGrant struct {
	ID          int                   `json:"id"`
	Permissions *GrantPermissionLevel `json:"permissions"`
}

type EnvDefaults

type EnvDefaults struct {
	Token   string
	Profile string
}

type Error

type Error struct {
	Response *http.Response
	Code     int
	Message  string
}

Error wraps the LinodeGo error with the relevant http.Response

func NewError

func NewError(err any) *Error

NewError creates a linodego.Error with a Code identifying the source err type, - ErrorFromString (1) from a string - ErrorFromError (2) for an error - ErrorFromStringer (3) for a Stringer - HTTP Status Codes (100-600) for a http.Response object

func (Error) Error

func (err Error) Error() string

func (Error) Is

func (err Error) Is(target error) bool

func (Error) StatusCode

func (err Error) StatusCode() int

type Event

type Event struct {
	// The unique ID of this Event.
	ID int `json:"id"`

	// Current status of the Event, Enum: "failed" "finished" "notification" "scheduled" "started"
	Status EventStatus `json:"status"`

	// The action that caused this Event. New actions may be added in the future.
	Action EventAction `json:"action"`

	// A percentage estimating the amount of time remaining for an Event. Returns null for notification events.
	PercentComplete int `json:"percent_complete"`

	// The rate of completion of the Event. Only some Events will return rate; for example, migration and resize Events.
	Rate *string `json:"rate"`

	// If this Event has been read.
	Read bool `json:"read"`

	// If this Event has been seen.
	Seen bool `json:"seen"`

	// The estimated time remaining until the completion of this Event. This value is only returned for in-progress events.
	TimeRemaining *int `json:"-"`

	// The username of the User who caused the Event.
	Username string `json:"username"`

	// Detailed information about the Event's entity, including ID, type, label, and URL used to access it.
	Entity *EventEntity `json:"entity"`

	// Detailed information about the Event's secondary or related entity, including ID, type, label, and URL used to access it.
	SecondaryEntity *EventEntity `json:"secondary_entity"`

	// When this Event was created.
	Created *time.Time `json:"-"`

	// Provides additional information about the event.
	Message string `json:"message"`

	// The total duration in seconds that it takes for the Event to complete.
	Duration float64 `json:"duration"`

	// The maintenance policy configured by the user for the event.
	MaintenancePolicySet string `json:"maintenance_policy_set"`

	// Describes the nature of the event (e.g., whether it is scheduled or emergency).
	Description string `json:"description"`

	// The origin of the event (e.g., platform, user).
	Source string `json:"source"`

	// Scheduled start time for the event.
	NotBefore *time.Time `json:"-"`

	// The actual start time of the event.
	StartTime *time.Time `json:"-"`

	// The actual completion time of the event.
	CompleteTime *time.Time `json:"-"`
}

Event represents an action taken on the Account.

func (*Event) UnmarshalJSON

func (i *Event) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type EventAction

type EventAction string

EventAction constants start with Action and include all known Linode API Event Actions.

const (
	ActionAccountUpdate                           EventAction = "account_update"
	ActionAccountSettingsUpdate                   EventAction = "account_settings_update"
	ActionBackupsEnable                           EventAction = "backups_enable"
	ActionBackupsCancel                           EventAction = "backups_cancel"
	ActionBackupsRestore                          EventAction = "backups_restore"
	ActionCommunityQuestionReply                  EventAction = "community_question_reply"
	ActionCommunityLike                           EventAction = "community_like"
	ActionCreditCardUpdated                       EventAction = "credit_card_updated"
	ActionDatabaseCreate                          EventAction = "database_create"
	ActionDatabaseDegraded                        EventAction = "database_degraded"
	ActionDatabaseDelete                          EventAction = "database_delete"
	ActionDatabaseFailed                          EventAction = "database_failed"
	ActionDatabaseUpdate                          EventAction = "database_update"
	ActionDatabaseResize                          EventAction = "database_resize"
	ActionDatabaseCreateFailed                    EventAction = "database_create_failed"
	ActionDatabaseUpdateFailed                    EventAction = "database_update_failed"
	ActionDatabaseBackupCreate                    EventAction = "database_backup_create"
	ActionDatabaseBackupRestore                   EventAction = "database_backup_restore"
	ActionDatabaseCredentialsReset                EventAction = "database_credentials_reset"
	ActionDiskCreate                              EventAction = "disk_create"
	ActionDiskDelete                              EventAction = "disk_delete"
	ActionDiskUpdate                              EventAction = "disk_update"
	ActionDiskDuplicate                           EventAction = "disk_duplicate"
	ActionDiskImagize                             EventAction = "disk_imagize"
	ActionDiskResize                              EventAction = "disk_resize"
	ActionDNSRecordCreate                         EventAction = "dns_record_create"
	ActionDNSRecordDelete                         EventAction = "dns_record_delete"
	ActionDNSRecordUpdate                         EventAction = "dns_record_update"
	ActionDNSZoneCreate                           EventAction = "dns_zone_create"
	ActionDNSZoneDelete                           EventAction = "dns_zone_delete"
	ActionDNSZoneUpdate                           EventAction = "dns_zone_update"
	ActionDNSZoneImport                           EventAction = "dns_zone_import"
	ActionEntityTransferAccept                    EventAction = "entity_transfer_accept"
	ActionEntityTransferCancel                    EventAction = "entity_transfer_cancel"
	ActionEntityTransferCreate                    EventAction = "entity_transfer_create"
	ActionEntityTransferFail                      EventAction = "entity_transfer_fail"
	ActionEntityTransferStale                     EventAction = "entity_transfer_stale"
	ActionFirewallCreate                          EventAction = "firewall_create"
	ActionFirewallDelete                          EventAction = "firewall_delete"
	ActionFirewallDisable                         EventAction = "firewall_disable"
	ActionFirewallEnable                          EventAction = "firewall_enable"
	ActionFirewallUpdate                          EventAction = "firewall_update"
	ActionFirewallDeviceAdd                       EventAction = "firewall_device_add"
	ActionFirewallDeviceRemove                    EventAction = "firewall_device_remove"
	ActionFirewallRuleSetCreate                   EventAction = "firewall_ruleset_create"
	ActionFirewallRuleSetUpdate                   EventAction = "firewall_ruleset_update"
	ActionFirewallRuleSetDelete                   EventAction = "firewall_ruleset_delete"
	ActionFirewallRuleSetFirewallUpdate           EventAction = "firewall_ruleset_firewall_update"
	ActionHostReboot                              EventAction = "host_reboot"
	ActionImageDelete                             EventAction = "image_delete"
	ActionImageUpdate                             EventAction = "image_update"
	ActionImageUpload                             EventAction = "image_upload"
	ActionIPAddressUpdate                         EventAction = "ipaddress_update"
	ActionLassieReboot                            EventAction = "lassie_reboot"
	ActionLinodeAddIP                             EventAction = "linode_addip"
	ActionLinodeBoot                              EventAction = "linode_boot"
	ActionLinodeClone                             EventAction = "linode_clone"
	ActionLinodeCreate                            EventAction = "linode_create"
	ActionLinodeDelete                            EventAction = "linode_delete"
	ActionLinodeUpdate                            EventAction = "linode_update"
	ActionLinodeDeleteIP                          EventAction = "linode_deleteip"
	ActionLinodeMigrate                           EventAction = "linode_migrate"
	ActionLinodeMigrateDatacenter                 EventAction = "linode_migrate_datacenter"
	ActionLinodeMigrateDatacenterCreate           EventAction = "linode_migrate_datacenter_create"
	ActionLinodeMutate                            EventAction = "linode_mutate"
	ActionLinodeMutateCreate                      EventAction = "linode_mutate_create"
	ActionLinodePowerOffOn                        EventAction = "linode_poweroff_on"
	ActionLinodeReboot                            EventAction = "linode_reboot"
	ActionLinodeRebuild                           EventAction = "linode_rebuild"
	ActionLinodeResize                            EventAction = "linode_resize"
	ActionLinodeResizeCreate                      EventAction = "linode_resize_create"
	ActionLinodeShutdown                          EventAction = "linode_shutdown"
	ActionLinodeSnapshot                          EventAction = "linode_snapshot"
	ActionLinodeConfigCreate                      EventAction = "linode_config_create"
	ActionLinodeConfigDelete                      EventAction = "linode_config_delete"
	ActionLinodeConfigUpdate                      EventAction = "linode_config_update"
	ActionLishBoot                                EventAction = "lish_boot"
	ActionLKENodeCreate                           EventAction = "lke_node_create"
	ActionLKEControlPlaneACLCreate                EventAction = "lke_control_plane_acl_create"
	ActionLKEControlPlaneACLUpdate                EventAction = "lke_control_plane_acl_update"
	ActionLKEControlPlaneACLDelete                EventAction = "lke_control_plane_acl_delete"
	ActionLongviewClientCreate                    EventAction = "longviewclient_create"
	ActionLongviewClientDelete                    EventAction = "longviewclient_delete"
	ActionLongviewClientUpdate                    EventAction = "longviewclient_update"
	ActionManagedDisabled                         EventAction = "managed_disabled"
	ActionManagedEnabled                          EventAction = "managed_enabled"
	ActionManagedServiceCreate                    EventAction = "managed_service_create"
	ActionManagedServiceDelete                    EventAction = "managed_service_delete"
	ActionNodebalancerCreate                      EventAction = "nodebalancer_create"
	ActionNodebalancerDelete                      EventAction = "nodebalancer_delete"
	ActionNodebalancerUpdate                      EventAction = "nodebalancer_update"
	ActionNodebalancerConfigCreate                EventAction = "nodebalancer_config_create"
	ActionNodebalancerConfigDelete                EventAction = "nodebalancer_config_delete"
	ActionNodebalancerConfigUpdate                EventAction = "nodebalancer_config_update"
	ActionNodebalancerFirewallModificationSuccess EventAction = "nodebalancer_firewall_modification_success"
	ActionNodebalancerFirewallModificationFailed  EventAction = "nodebalancer_firewall_modification_failed"
	ActionNodebalancerNodeCreate                  EventAction = "nodebalancer_node_create"
	ActionNodebalancerNodeDelete                  EventAction = "nodebalancer_node_delete"
	ActionNodebalancerNodeUpdate                  EventAction = "nodebalancer_node_update"
	ActionOAuthClientCreate                       EventAction = "oauth_client_create"
	ActionOAuthClientDelete                       EventAction = "oauth_client_delete"
	ActionOAuthClientSecretReset                  EventAction = "oauth_client_secret_reset" //#nosec G101
	ActionOAuthClientUpdate                       EventAction = "oauth_client_update"
	ActionOBJAccessKeyCreate                      EventAction = "obj_access_key_create"
	ActionOBJAccessKeyDelete                      EventAction = "obj_access_key_delete"
	ActionOBJAccessKeyUpdate                      EventAction = "obj_access_key_update"
	ActionPaymentMethodAdd                        EventAction = "payment_method_add"
	ActionPaymentSubmitted                        EventAction = "payment_submitted"
	ActionPasswordReset                           EventAction = "password_reset"
	ActionPlacementGroupCreate                    EventAction = "placement_group_create"
	ActionPlacementGroupUpdate                    EventAction = "placement_group_update"
	ActionPlacementGroupDelete                    EventAction = "placement_group_delete"
	ActionPlacementGroupAssign                    EventAction = "placement_group_assign"
	ActionPlacementGroupUnassign                  EventAction = "placement_group_unassign"
	ActionPlacementGroupBecameNonCompliant        EventAction = "placement_group_became_non_compliant"
	ActionPlacementGroupBecameCompliant           EventAction = "placement_group_became_compliant"
	ActionProfileUpdate                           EventAction = "profile_update"
	ActionStackScriptCreate                       EventAction = "stackscript_create"
	ActionStackScriptDelete                       EventAction = "stackscript_delete"
	ActionStackScriptUpdate                       EventAction = "stackscript_update"
	ActionStackScriptPublicize                    EventAction = "stackscript_publicize"
	ActionStackScriptRevise                       EventAction = "stackscript_revise"
	ActionTaxIDInvalid                            EventAction = "tax_id_invalid"
	ActionTagCreate                               EventAction = "tag_create"
	ActionTagDelete                               EventAction = "tag_delete"
	ActionTFADisabled                             EventAction = "tfa_disabled"
	ActionTFAEnabled                              EventAction = "tfa_enabled"
	ActionTicketAttachmentUpload                  EventAction = "ticket_attachment_upload"
	ActionTicketCreate                            EventAction = "ticket_create"
	ActionTicketUpdate                            EventAction = "ticket_update"
	ActionTokenCreate                             EventAction = "token_create"
	ActionTokenDelete                             EventAction = "token_delete"
	ActionTokenUpdate                             EventAction = "token_update"
	ActionUserCreate                              EventAction = "user_create"
	ActionUserDelete                              EventAction = "user_delete"
	ActionUserUpdate                              EventAction = "user_update"
	ActionUserSSHKeyAdd                           EventAction = "user_ssh_key_add"
	ActionUserSSHKeyDelete                        EventAction = "user_ssh_key_delete"
	ActionUserSSHKeyUpdate                        EventAction = "user_ssh_key_update"
	ActionVLANAttach                              EventAction = "vlan_attach"
	ActionVLANDetach                              EventAction = "vlan_detach"
	ActionVolumeAttach                            EventAction = "volume_attach"
	ActionVolumeClone                             EventAction = "volume_clone"
	ActionVolumeCreate                            EventAction = "volume_create"
	ActionVolumeDelete                            EventAction = "volume_delete"
	ActionVolumeUpdate                            EventAction = "volume_update"
	ActionVolumeDetach                            EventAction = "volume_detach"
	ActionVolumeResize                            EventAction = "volume_resize"
	ActionVPCCreate                               EventAction = "vpc_create"
	ActionVPCDelete                               EventAction = "vpc_delete"
	ActionVPCUpdate                               EventAction = "vpc_update"
	ActionVPCSubnetCreate                         EventAction = "subnet_create"
	ActionVPCSubnetDelete                         EventAction = "subnet_delete"
	ActionVPCSubnetUpdate                         EventAction = "subnet_update"
)

EventAction constants represent the actions that cause an Event. New actions may be added in the future.

type EventEntity

type EventEntity struct {
	// ID may be a string or int, it depends on the EntityType
	ID     any        `json:"id"`
	Label  string     `json:"label"`
	Type   EntityType `json:"type"`
	Status string     `json:"status"`
	URL    string     `json:"url"`
}

EventEntity provides detailed information about the Event's associated entity, including ID, Type, Label, and a URL that can be used to access it.

type EventPoller

type EventPoller struct {
	EntityID   any
	EntityType EntityType

	// Type is excluded here because it is implicitly determined
	// by the event action.
	SecondaryEntityID any

	Action EventAction
	// contains filtered or unexported fields
}

EventPoller waits for events associated with a given entity and action.

func (*EventPoller) WaitForFinished

func (p *EventPoller) WaitForFinished(ctx context.Context) (*Event, error)

WaitForFinished waits for a new event to be finished.

func (*EventPoller) WaitForLatestUnknownEvent

func (p *EventPoller) WaitForLatestUnknownEvent(ctx context.Context) (*Event, error)

WaitForLatestUnknownEvent waits for the next event not observed by this poller.

type EventStatus

type EventStatus string

EventStatus constants start with Event and include Linode API Event Status values

const (
	EventFailed       EventStatus = "failed"
	EventFinished     EventStatus = "finished"
	EventNotification EventStatus = "notification"
	EventScheduled    EventStatus = "scheduled"
	EventStarted      EventStatus = "started"
	EventCanceled     EventStatus = "canceled"
)

EventStatus constants reflect the current status of an Event

type Filter

type Filter struct {
	// Operator is the logic for all Children nodes ("+and"/"+or")
	Operator string
	Children []FilterNode
	// OrderBy is the field you want to order your results by (ex: "+order_by": "class")
	OrderBy string
	// Order is the direction in which to order the results ("+order": "asc"/"desc")
	Order string
}

func And

func And(order string, orderBy string, nodes ...FilterNode) *Filter

func Or

func Or(order string, orderBy string, nodes ...FilterNode) *Filter

func (*Filter) AddField

func (f *Filter) AddField(op FilterOperator, key string, value any)

func (*Filter) MarshalJSON

func (f *Filter) MarshalJSON() ([]byte, error)

type FilterNode

type FilterNode interface {
	Key() string
	JSONValueSegment() any
}

type FilterOperator

type FilterOperator string
const (
	Eq         FilterOperator = "+eq"
	Neq        FilterOperator = "+neq"
	Gt         FilterOperator = "+gt"
	Gte        FilterOperator = "+gte"
	Lt         FilterOperator = "+lt"
	Lte        FilterOperator = "+lte"
	Contains   FilterOperator = "+contains"
	Ascending                 = "asc"
	Descending                = "desc"
)

type Firewall

type Firewall struct {
	ID       int                    `json:"id"`
	Label    string                 `json:"label"`
	Status   FirewallStatus         `json:"status"`
	Tags     []string               `json:"tags"`
	Rules    FirewallRules          `json:"rules"`
	Entities []FirewallDeviceEntity `json:"entities"`
	Created  *time.Time             `json:"-"`
	Updated  *time.Time             `json:"-"`
}

A Firewall is a set of networking rules (iptables) applied to Devices with which it is associated

func (*Firewall) GetUpdateOptions

func (f *Firewall) GetUpdateOptions() FirewallUpdateOptions

GetUpdateOptions converts a Firewall to FirewallUpdateOptions for use in Client.UpdateFirewall.

func (*Firewall) UnmarshalJSON

func (f *Firewall) UnmarshalJSON(b []byte) error

UnmarshalJSON for Firewall responses

type FirewallCreateOptions

type FirewallCreateOptions struct {
	Label   string                     `json:"label,omitzero"`
	Rules   FirewallRulesCreateOptions `json:"rules"`
	Tags    []string                   `json:"tags,omitzero"`
	Devices DevicesCreationOptions     `json:"devices,omitzero"`
}

FirewallCreateOptions fields are those accepted by CreateFirewall

type FirewallDevice

type FirewallDevice struct {
	ID      int                  `json:"id"`
	Entity  FirewallDeviceEntity `json:"entity"`
	Created *time.Time           `json:"-"`
	Updated *time.Time           `json:"-"`
}

FirewallDevice represents a device governed by a Firewall

func (*FirewallDevice) UnmarshalJSON

func (device *FirewallDevice) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type FirewallDeviceCreateOptions

type FirewallDeviceCreateOptions struct {
	ID   int                `json:"id"`
	Type FirewallDeviceType `json:"type"`
}

FirewallDeviceCreateOptions fields are those accepted by CreateFirewallDevice

type FirewallDeviceEntity

type FirewallDeviceEntity struct {
	ID           int                   `json:"id"`
	Type         FirewallDeviceType    `json:"type"`
	Label        *string               `json:"label"`
	URL          string                `json:"url"`
	ParentEntity *FirewallDeviceEntity `json:"parent_entity"`
}

FirewallDeviceEntity contains information about a device associated with a Firewall

type FirewallDeviceType

type FirewallDeviceType string

FirewallDeviceType represents the different kinds of devices governable by a Firewall

const (
	FirewallDeviceLinode          FirewallDeviceType = "linode"
	FirewallDeviceNodeBalancer    FirewallDeviceType = "nodebalancer"
	FirewallDeviceLinodeInterface FirewallDeviceType = "linode_interface"
)

FirewallDeviceType constants start with FirewallDevice

type FirewallRuleInbound

type FirewallRuleInbound struct {
	Action      string           `json:"action"`
	Label       string           `json:"label"`
	Description string           `json:"description,omitzero"`
	Ports       string           `json:"ports,omitzero"`
	Protocol    NetworkProtocol  `json:"protocol"`
	Addresses   NetworkAddresses `json:"addresses"`

	// FirewallRuleInbound references one `Rule Set` by ID. When provided, this entry
	// represents a reference and should be mutually exclusive with ordinary
	// rule fields according to the API contract.
	RuleSet int `json:"ruleset,omitzero"`
}

func (FirewallRuleInbound) MarshalJSON

func (r FirewallRuleInbound) MarshalJSON() ([]byte, error)

MarshalJSON ensures that when a rule references a Rule Set (FirewallRuleSet != 0), only the reference shape { "ruleset": <id> } is emitted. Otherwise, the ordinary rule fields are emitted without the ruleset key.

type FirewallRuleOutbound

type FirewallRuleOutbound struct {
	Action      string           `json:"action"`
	Label       string           `json:"label"`
	Description string           `json:"description,omitzero"`
	Ports       string           `json:"ports,omitzero"`
	Protocol    NetworkProtocol  `json:"protocol"`
	Addresses   NetworkAddresses `json:"addresses"`

	// FirewallRuleOutbound references one `Rule Set` by ID. When provided, this entry
	// represents a reference and should be mutually exclusive with ordinary
	// rule fields according to the API contract.
	RuleSet int `json:"ruleset,omitzero"`
}

func (FirewallRuleOutbound) MarshalJSON

func (r FirewallRuleOutbound) MarshalJSON() ([]byte, error)

MarshalJSON ensures that when a rule references a Rule Set (FirewallRuleSet != 0), only the reference shape { "ruleset": <id> } is emitted. Otherwise, the ordinary rule fields are emitted without the ruleset key.

type FirewallRuleSet

type FirewallRuleSet struct {
	ID               int                   `json:"id"`
	Label            string                `json:"label"`
	Description      string                `json:"description,omitzero"`
	Type             FirewallRuleSetType   `json:"type"`
	Rules            []FirewallRuleSetRule `json:"rules"`
	IsServiceDefined bool                  `json:"is_service_defined"`
	Version          int                   `json:"version"`

	Created *time.Time `json:"-"`
	Updated *time.Time `json:"-"`
	Deleted *time.Time `json:"-"`
}

FirewallRuleSet represents the Rule Set resource. Note: created/updated/deleted are parsed via UnmarshalJSON into time.Time pointers.

func (*FirewallRuleSet) UnmarshalJSON

func (r *FirewallRuleSet) UnmarshalJSON(b []byte) error

UnmarshalJSON implements custom timestamp parsing for FirewallRuleSet.

type FirewallRuleSetCreateOptions

type FirewallRuleSetCreateOptions struct {
	Label       string                             `json:"label"`
	Description string                             `json:"description,omitzero"`
	Type        FirewallRuleSetType                `json:"type"`
	Rules       []FirewallRuleSetRuleCreateOptions `json:"rules"`
}

FirewallRuleSetCreateOptions fields accepted by CreateRuleSet.

type FirewallRuleSetRule

type FirewallRuleSetRule struct {
	Action    string           `json:"action"`
	Label     string           `json:"label"`
	Ports     string           `json:"ports,omitzero"`
	Protocol  NetworkProtocol  `json:"protocol"`
	Addresses NetworkAddresses `json:"addresses"`
}

A FirewallRuleSetRule is a whitelist of ports, protocols, and addresses for which traffic should be allowed. The ipv4/ipv6 address lists may contain Prefix List tokens (for example, "pl::..." or "pl:system:...") in addition to literal IP addresses.

type FirewallRuleSetRuleCreateOptions

type FirewallRuleSetRuleCreateOptions struct {
	Action    string           `json:"action"`
	Label     string           `json:"label"`
	Ports     string           `json:"ports,omitzero"`
	Protocol  NetworkProtocol  `json:"protocol"`
	Addresses NetworkAddresses `json:"addresses"`
}

FirewallRuleSetRuleCreateOptions fields accepted in Firewall Rule Set create payloads.

type FirewallRuleSetRuleUpdateOptions

type FirewallRuleSetRuleUpdateOptions struct {
	Action    string           `json:"action"`
	Label     string           `json:"label"`
	Ports     string           `json:"ports,omitzero"`
	Protocol  NetworkProtocol  `json:"protocol"`
	Addresses NetworkAddresses `json:"addresses"`
}

FirewallRuleSetRuleUpdateOptions fields accepted in Firewall Rule Set update payloads.

type FirewallRuleSetType

type FirewallRuleSetType string

FirewallRuleSetType represents the type of rules a Rule Set contains. Valid values are "inbound" and "outbound".

const (
	FirewallRuleSetTypeInbound  FirewallRuleSetType = "inbound"
	FirewallRuleSetTypeOutbound FirewallRuleSetType = "outbound"
)

type FirewallRuleSetUpdateOptions

type FirewallRuleSetUpdateOptions struct {
	Label       *string                            `json:"label,omitzero"`
	Description *string                            `json:"description,omitzero"`
	Rules       []FirewallRuleSetRuleUpdateOptions `json:"rules,omitzero"`
}

FirewallRuleSetUpdateOptions fields accepted by UpdateRuleSet. Omit a top-level field to leave it unchanged. If Rules is provided, it replaces the entire ordered rules array.

type FirewallRules

type FirewallRules struct {
	Inbound        []FirewallRuleInbound  `json:"inbound"`
	InboundPolicy  string                 `json:"inbound_policy"`
	Outbound       []FirewallRuleOutbound `json:"outbound"`
	OutboundPolicy string                 `json:"outbound_policy"`
	Version        int                    `json:"version,omitzero"`
	Fingerprint    string                 `json:"fingerprint,omitzero"`
}

FirewallRules is a pair of inbound and outbound rules that specify what network traffic should be allowed.

type FirewallRulesCreateOptions

type FirewallRulesCreateOptions struct {
	Inbound        []FirewallRuleInbound  `json:"inbound"`
	InboundPolicy  string                 `json:"inbound_policy"`
	Outbound       []FirewallRuleOutbound `json:"outbound"`
	OutboundPolicy string                 `json:"outbound_policy"`
}

type FirewallRulesUpdateOptions

type FirewallRulesUpdateOptions struct {
	Inbound        []FirewallRuleInbound  `json:"inbound"`
	InboundPolicy  string                 `json:"inbound_policy"`
	Outbound       []FirewallRuleOutbound `json:"outbound"`
	OutboundPolicy string                 `json:"outbound_policy"`
}

type FirewallSettings

type FirewallSettings struct {
	DefaultFirewallIDs DefaultFirewallIDs `json:"default_firewall_ids"`
}

FirewallSettings represents the default firewalls for Linodes, Linode VPC and public interfaces, and NodeBalancers.

type FirewallSettingsUpdateOptions

type FirewallSettingsUpdateOptions struct {
	DefaultFirewallIDs *DefaultFirewallIDsOptions `json:"default_firewall_ids,omitzero"`
}

FirewallSettingsUpdateOptions is an options struct used when Updating FirewallSettings

type FirewallStatus

type FirewallStatus string

FirewallStatus enum type

const (
	FirewallEnabled  FirewallStatus = "enabled"
	FirewallDisabled FirewallStatus = "disabled"
	FirewallDeleted  FirewallStatus = "deleted"
)

FirewallStatus enums start with Firewall

type FirewallTemplate

type FirewallTemplate struct {
	Slug  string        `json:"slug"`
	Rules FirewallRules `json:"rules"`
}

type FirewallUpdateOptions

type FirewallUpdateOptions struct {
	Label  string         `json:"label,omitzero"`
	Status FirewallStatus `json:"status,omitzero"`
	Tags   []string       `json:"tags,omitzero"`
}

FirewallUpdateOptions is an options struct used when Updating a Firewall

type GlobalUserGrants

type GlobalUserGrants struct {
	AccountAccess        *GrantPermissionLevel `json:"account_access"`
	AddDatabases         bool                  `json:"add_databases"`
	AddDomains           bool                  `json:"add_domains"`
	AddFirewalls         bool                  `json:"add_firewalls"`
	AddImages            bool                  `json:"add_images"`
	AddLinodes           bool                  `json:"add_linodes"`
	AddLongview          bool                  `json:"add_longview"`
	AddNodeBalancers     bool                  `json:"add_nodebalancers"`
	AddStackScripts      bool                  `json:"add_stackscripts"`
	AddVolumes           bool                  `json:"add_volumes"`
	AddVPCs              bool                  `json:"add_vpcs"`
	CancelAccount        bool                  `json:"cancel_account"`
	ChildAccountAccess   bool                  `json:"child_account_access"`
	LongviewSubscription bool                  `json:"longview_subscription"`
}

type GrantPermissionLevel

type GrantPermissionLevel string
const (
	AccessLevelReadOnly  GrantPermissionLevel = "read_only"
	AccessLevelReadWrite GrantPermissionLevel = "read_write"
)

type GrantedEntity

type GrantedEntity struct {
	ID          int                  `json:"id"`
	Label       string               `json:"label"`
	Permissions GrantPermissionLevel `json:"permissions"`
}

type GrantsListResponse

type GrantsListResponse = UserGrants

type GroupConcatMaxLen

type GroupConcatMaxLen struct {
	Description     string  `json:"description"`
	Example         float64 `json:"example"`
	Maximum         float64 `json:"maximum"`
	Minimum         float64 `json:"minimum"`
	RequiresRestart bool    `json:"requires_restart"`
	Type            string  `json:"type"`
}

type IPAddressUpdateOptions

type IPAddressUpdateOptions struct {
	// The reverse DNS assigned to this address. For public IPv4 addresses, this will be set to a default value provided by Linode if set to nil.
	Reserved *bool    `json:"reserved,omitzero"`
	RDNS     **string `json:"rdns,omitzero"`
}

IPAddressUpdateOptions fields are those accepted by UpdateIPAddress. NOTE: An IP's RDNS can be reset to default using the following pattern:

IPAddressUpdateOptions{
	RDNS: linodego.Pointer[*string](nil),
}

type IPAddressesShareOptions

type IPAddressesShareOptions struct {
	IPs      []string `json:"ips"`
	LinodeID int      `json:"linode_id"`
}

IPAddressesShareOptions fields are those accepted by ShareIPAddresses.

type IPv6Range

type IPv6Range struct {
	Range  string `json:"range"`
	Region string `json:"region"`
	Prefix int    `json:"prefix"`

	RouteTarget string `json:"route_target"`

	// These fields are only returned by GetIPv6Range(...)
	IsBGP   bool  `json:"is_bgp"`
	Linodes []int `json:"linodes"`
}

IPv6Range represents a range of IPv6 addresses routed to a single Linode in a given Region

type IPv6RangeCreateOptions

type IPv6RangeCreateOptions struct {
	LinodeID     int    `json:"linode_id,omitzero"`
	PrefixLength int    `json:"prefix_length"`
	RouteTarget  string `json:"route_target,omitzero"`
}

IPv6RangeCreateOptions fields are those accepted by CreateIPv6Range

type IdleInTransactionSessionTimeout

type IdleInTransactionSessionTimeout struct {
	Description     string `json:"description"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type Image

type Image struct {
	ID           string      `json:"id"`
	CreatedBy    string      `json:"created_by"`
	Capabilities []string    `json:"capabilities"`
	Label        string      `json:"label"`
	Description  string      `json:"description"`
	Type         string      `json:"type"`
	Vendor       string      `json:"vendor"`
	Status       ImageStatus `json:"status"`
	Size         int         `json:"size"`
	TotalSize    int         `json:"total_size"`
	IsPublic     bool        `json:"is_public"`

	// NOTE: IsShared may not currently be available to all users and can only be used with v4beta.
	IsShared bool `json:"is_shared"`

	Deprecated bool          `json:"deprecated"`
	Regions    []ImageRegion `json:"regions"`
	Tags       []string      `json:"tags"`

	Updated *time.Time `json:"-"`
	Created *time.Time `json:"-"`
	Expiry  *time.Time `json:"-"`
	EOL     *time.Time `json:"-"`

	// NOTE: ImageSharing may not currently be available to all users and can only be used with v4beta.
	ImageSharing ImageSharing `json:"image_sharing"`
}

Image represents a deployable Image object for use with Linode Instances

func (Image) GetUpdateOptions

func (i Image) GetUpdateOptions() (iu ImageUpdateOptions)

GetUpdateOptions converts an Image to ImageUpdateOptions for use in UpdateImage

func (*Image) UnmarshalJSON

func (i *Image) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type ImageCreateOptions

type ImageCreateOptions struct {
	DiskID      int      `json:"disk_id"`
	Label       string   `json:"label"`
	Description string   `json:"description,omitzero"`
	CloudInit   bool     `json:"cloud_init,omitzero"`
	Tags        []string `json:"tags,omitzero"`
}

ImageCreateOptions fields are those accepted by CreateImage

type ImageCreateUploadOptions

type ImageCreateUploadOptions struct {
	Region      string   `json:"region"`
	Label       string   `json:"label"`
	Description string   `json:"description,omitzero"`
	CloudInit   bool     `json:"cloud_init,omitzero"`
	Tags        []string `json:"tags,omitzero"`
}

ImageCreateUploadOptions fields are those accepted by CreateImageUpload

type ImageCreateUploadResponse

type ImageCreateUploadResponse struct {
	Image    *Image `json:"image"`
	UploadTo string `json:"upload_to"`
}

ImageCreateUploadResponse fields are those returned by CreateImageUpload

type ImageRegion

type ImageRegion struct {
	Region string            `json:"region"`
	Status ImageRegionStatus `json:"status"`
}

ImageRegion represents the status of an Image object in a given Region.

type ImageRegionStatus

type ImageRegionStatus string

ImageRegionStatus represents the status of an Image's replica.

const (
	ImageRegionStatusAvailable          ImageRegionStatus = "available"
	ImageRegionStatusCreating           ImageRegionStatus = "creating"
	ImageRegionStatusPending            ImageRegionStatus = "pending"
	ImageRegionStatusPendingReplication ImageRegionStatus = "pending replication"
	ImageRegionStatusPendingDeletion    ImageRegionStatus = "pending deletion"
	ImageRegionStatusReplicating        ImageRegionStatus = "replicating"
)

ImageRegionStatus options start with ImageRegionStatus and include all Image replica statuses

type ImageReplicateOptions

type ImageReplicateOptions struct {
	Regions []string `json:"regions"`
}

ImageReplicateOptions represents the options accepted by the ReplicateImage(...) function.

type ImageShareEntry

type ImageShareEntry struct {
	ID           string        `json:"id"`
	CreatedBy    *string       `json:"created_by"`
	Capabilities []string      `json:"capabilities"`
	Label        string        `json:"label"`
	Description  string        `json:"description"`
	Type         string        `json:"type"`
	Vendor       *string       `json:"vendor"`
	Status       ImageStatus   `json:"status"`
	Size         int           `json:"size"`
	TotalSize    int           `json:"total_size"`
	IsPublic     bool          `json:"is_public"`
	IsShared     *bool         `json:"is_shared"`
	Deprecated   bool          `json:"deprecated"`
	Regions      []ImageRegion `json:"regions"`
	Tags         []string      `json:"tags"`

	Updated *time.Time `json:"-"`
	Created *time.Time `json:"-"`
	Expiry  *time.Time `json:"-"`
	EOL     *time.Time `json:"-"`

	ImageSharing ImageSharing `json:"image_sharing"`
}

ImageShareEntry represents a shared image entry for an ImageShareGroup

func (*ImageShareEntry) UnmarshalJSON

func (ise *ImageShareEntry) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type ImageShareGroupAddImagesOptions

type ImageShareGroupAddImagesOptions struct {
	Images []ImageShareGroupImage `json:"images"`
}

ImageShareGroupAddImagesOptions fields are those accepted by ImageShareGroupAddImages.

type ImageShareGroupAddMemberOptions

type ImageShareGroupAddMemberOptions struct {
	Token string `json:"token"`
	Label string `json:"label"`
}

ImageShareGroupAddMemberOptions fields are those accepted by ImageShareGroupAddMember. The token must be provided to the producer by the consumer via an outside medium.

type ImageShareGroupCreateOptions

type ImageShareGroupCreateOptions struct {
	Label       string                 `json:"label"`
	Description *string                `json:"description,omitzero"`
	Images      []ImageShareGroupImage `json:"images,omitzero"`
}

ImageShareGroupCreateOptions fields are those accepted by CreateImageShareGroup.

type ImageShareGroupCreateTokenOptions

type ImageShareGroupCreateTokenOptions struct {
	Label                  *string `json:"label,omitzero"`
	ValidForShareGroupUUID string  `json:"valid_for_sharegroup_uuid"`
}

ImageShareGroupCreateTokenOptions fields are those accepted by ImageShareGroupCreateToken

type ImageShareGroupCreateTokenResponse

type ImageShareGroupCreateTokenResponse struct {
	Token                  string     `json:"token"`
	TokenUUID              string     `json:"token_uuid"`
	Status                 string     `json:"status"`
	Label                  string     `json:"label"`
	ValidForShareGroupUUID string     `json:"valid_for_sharegroup_uuid"`
	Created                *time.Time `json:"-"`
	Updated                *time.Time `json:"-"`
	Expiry                 *time.Time `json:"-"`
	ShareGroupUUID         *string    `json:"sharegroup_uuid"`
	ShareGroupLabel        *string    `json:"sharegroup_label"`
}

ImageShareGroupCreateTokenResponse represents the response when the consumer creates a single-use ImageShareGroup membership token. The token itself is only provided upon creation, and must be given to the producer via an outside medium for the consumer to be added as a member of the producer's ImageShareGroup.

func (*ImageShareGroupCreateTokenResponse) UnmarshalJSON

func (t *ImageShareGroupCreateTokenResponse) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type ImageShareGroupImage

type ImageShareGroupImage struct {
	ID          string  `json:"id"`
	Label       *string `json:"label,omitzero"`
	Description *string `json:"description,omitzero"`
}

ImageShareGroupImage represents an Image to be included in a ProducerImageShareGroup.

type ImageShareGroupMember

type ImageShareGroupMember struct {
	TokenUUID string     `json:"token_uuid"`
	Status    string     `json:"status"`
	Label     string     `json:"label"`
	Created   *time.Time `json:"-"`
	Updated   *time.Time `json:"-"`
	Expiry    *time.Time `json:"-"`
}

ImageShareGroupMember represents a Member of an ImageShareGroup owned by the producer.

func (*ImageShareGroupMember) UnmarshalJSON

func (m *ImageShareGroupMember) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type ImageShareGroupToken

type ImageShareGroupToken struct {
	TokenUUID              string     `json:"token_uuid"`
	Status                 string     `json:"status"`
	Label                  string     `json:"label"`
	ValidForShareGroupUUID string     `json:"valid_for_sharegroup_uuid"`
	Created                *time.Time `json:"-"`
	Updated                *time.Time `json:"-"`
	Expiry                 *time.Time `json:"-"`
	ShareGroupUUID         *string    `json:"sharegroup_uuid"`
	ShareGroupLabel        *string    `json:"sharegroup_label"`
}

ImageShareGroupToken contains information about a token created by a consumer. The token itself is only visible once upon creation.

func (*ImageShareGroupToken) UnmarshalJSON

func (t *ImageShareGroupToken) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type ImageShareGroupUpdateImageOptions

type ImageShareGroupUpdateImageOptions struct {
	Label       *string `json:"label,omitzero"`
	Description *string `json:"description,omitzero"`
}

ImageShareGroupUpdateImageOptions fields are those accepted by ImageShareGroupUpdateImage.

type ImageShareGroupUpdateMemberOptions

type ImageShareGroupUpdateMemberOptions struct {
	Label string `json:"label"`
}

ImageShareGroupUpdateMemberOptions fields are those accepted by ImageShareGroupUpdateMember.

type ImageShareGroupUpdateOptions

type ImageShareGroupUpdateOptions struct {
	Label       *string `json:"label,omitzero"`
	Description *string `json:"description,omitzero"`
}

ImageShareGroupUpdateOptions fields are those accepted by UpdateImageShareGroup.

type ImageShareGroupUpdateTokenOptions

type ImageShareGroupUpdateTokenOptions struct {
	Label string `json:"label"`
}

ImageShareGroupUpdateTokenOptions fields are those accepted by ImageShareGroupUpdateToken

type ImageSharing

type ImageSharing struct {
	SharedWith *ImageSharingSharedWith `json:"shared_with"`
	SharedBy   *ImageSharingSharedBy   `json:"shared_by"`
}

type ImageSharingSharedBy

type ImageSharingSharedBy struct {
	ShareGroupID    int     `json:"sharegroup_id"`
	ShareGroupUUID  string  `json:"sharegroup_uuid"`
	ShareGroupLabel string  `json:"sharegroup_label"`
	SourceImageID   *string `json:"source_image_id"`
}

type ImageSharingSharedWith

type ImageSharingSharedWith struct {
	ShareGroupCount   int    `json:"sharegroup_count"`
	ShareGroupListURL string `json:"sharegroup_list_url"`
}

type ImageStatus

type ImageStatus string

ImageStatus represents the status of an Image.

const (
	ImageStatusCreating      ImageStatus = "creating"
	ImageStatusPendingUpload ImageStatus = "pending_upload"
	ImageStatusAvailable     ImageStatus = "available"
)

ImageStatus options start with ImageStatus and include all Image statuses

type ImageUpdateOptions

type ImageUpdateOptions struct {
	Label       string   `json:"label,omitzero"`
	Description *string  `json:"description,omitzero"`
	Tags        []string `json:"tags,omitzero"`
}

ImageUpdateOptions fields are those accepted by UpdateImage

type ImageUploadOptions

type ImageUploadOptions struct {
	Region      string   `json:"region"`
	Label       string   `json:"label"`
	Description string   `json:"description,omitzero"`
	CloudInit   bool     `json:"cloud_init"`
	Tags        []string `json:"tags,omitzero"`
	Image       io.Reader
}

ImageUploadOptions fields are those accepted by UploadImage

type InformationSchemaStatsExpiry

type InformationSchemaStatsExpiry struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type InnoDBChangeBufferMaxSize

type InnoDBChangeBufferMaxSize struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type InnoDBFTMinTokenSize

type InnoDBFTMinTokenSize struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type InnoDBFTServerStopwordTable

type InnoDBFTServerStopwordTable struct {
	Description     string   `json:"description"`
	Example         string   `json:"example"`
	MaxLength       int      `json:"maxLength"`
	Pattern         string   `json:"pattern"`
	RequiresRestart bool     `json:"requires_restart"`
	Type            []string `json:"type"`
}

type InnoDBFlushNeighbors

type InnoDBFlushNeighbors struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type InnoDBLockWaitTimeout

type InnoDBLockWaitTimeout struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type InnoDBLogBufferSize

type InnoDBLogBufferSize struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type InnoDBOnlineAlterLogMaxSize

type InnoDBOnlineAlterLogMaxSize struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type InnoDBReadIOThreads

type InnoDBReadIOThreads struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type InnoDBRollbackOnTimeout

type InnoDBRollbackOnTimeout struct {
	Description     string `json:"description"`
	Example         bool   `json:"example"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type InnoDBThreadConcurrency

type InnoDBThreadConcurrency struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type InnoDBWriteIOThreads

type InnoDBWriteIOThreads struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type Instance

type Instance struct {
	ID                  int                     `json:"id"`
	Created             *time.Time              `json:"-"`
	Updated             *time.Time              `json:"-"`
	Region              string                  `json:"region"`
	Alerts              *InstanceAlert          `json:"alerts"`
	Backups             *InstanceBackup         `json:"backups"`
	Image               string                  `json:"image"`
	Group               string                  `json:"group"`
	IPv4                []net.IP                `json:"ipv4"`
	IPv6                string                  `json:"ipv6"`
	Label               string                  `json:"label"`
	Type                string                  `json:"type"`
	Status              InstanceStatus          `json:"status"`
	HasUserData         bool                    `json:"has_user_data"`
	Hypervisor          string                  `json:"hypervisor"`
	HostUUID            string                  `json:"host_uuid"`
	Specs               *InstanceSpec           `json:"specs"`
	WatchdogEnabled     bool                    `json:"watchdog_enabled"`
	Tags                []string                `json:"tags"`
	PlacementGroup      *InstancePlacementGroup `json:"placement_group"`
	DiskEncryption      InstanceDiskEncryption  `json:"disk_encryption"`
	LKEClusterID        int                     `json:"lke_cluster_id"`
	Capabilities        []string                `json:"capabilities"`
	InterfaceGeneration InterfaceGeneration     `json:"interface_generation"`
	MaintenancePolicy   string                  `json:"maintenance_policy"`

	// NOTE: Both cannot_delete and cannot_delete_with_subresources apply to Instances and can only be used with v4beta.
	Locks []LockType `json:"locks"`
}

Instance represents a linode object

func (*Instance) GetUpdateOptions

func (i *Instance) GetUpdateOptions() InstanceUpdateOptions

GetUpdateOptions converts an Instance to InstanceUpdateOptions for use in UpdateInstance

func (*Instance) UnmarshalJSON

func (i *Instance) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type InstanceAlert

type InstanceAlert struct {
	CPU           int `json:"cpu"`
	IO            int `json:"io"`
	NetworkIn     int `json:"network_in"`
	NetworkOut    int `json:"network_out"`
	TransferQuota int `json:"transfer_quota"`
}

InstanceAlert represents a metric alert

type InstanceBackup

type InstanceBackup struct {
	Available      bool       `json:"available,omitzero"` // read-only
	Enabled        bool       `json:"enabled,omitzero"`   // read-only
	LastSuccessful *time.Time `json:"-"`                  // read-only
	Schedule       struct {
		Day    string `json:"day,omitzero"`
		Window string `json:"window,omitzero"`
	} `json:"schedule"`
}

InstanceBackup represents backup settings for an instance

func (*InstanceBackup) UnmarshalJSON

func (backup *InstanceBackup) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type InstanceBackupSnapshotResponse

type InstanceBackupSnapshotResponse struct {
	Current    *InstanceSnapshot `json:"current"`
	InProgress *InstanceSnapshot `json:"in_progress"`
}

InstanceBackupSnapshotResponse fields are those representing Instance Backup Snapshots

type InstanceBackupsResponse

type InstanceBackupsResponse struct {
	Automatic []InstanceSnapshot              `json:"automatic"`
	Snapshot  *InstanceBackupSnapshotResponse `json:"snapshot"`
}

InstanceBackupsResponse response struct for backup snapshot

type InstanceBootOptions

type InstanceBootOptions struct {
	ConfigID *int `json:"config_id,omitzero"`
}

type InstanceCloneOptions

type InstanceCloneOptions struct {
	Region string `json:"region,omitzero"`
	Type   string `json:"type,omitzero"`

	// LinodeID is an optional existing instance to use as the target of the clone
	LinodeID       int                                  `json:"linode_id,omitzero"`
	Label          string                               `json:"label,omitzero"`
	BackupsEnabled bool                                 `json:"backups_enabled"`
	Disks          []int                                `json:"disks,omitzero"`
	Configs        []int                                `json:"configs,omitzero"`
	PrivateIP      bool                                 `json:"private_ip,omitzero"`
	Metadata       *InstanceMetadataOptions             `json:"metadata,omitzero"`
	PlacementGroup *InstanceCreatePlacementGroupOptions `json:"placement_group,omitzero"`
}

InstanceCloneOptions is an options struct sent when Cloning an Instance

type InstanceConfig

type InstanceConfig struct {
	ID          int                       `json:"id"`
	Label       string                    `json:"label"`
	Comments    string                    `json:"comments"`
	Devices     *InstanceConfigDeviceMap  `json:"devices"`
	Helpers     *InstanceConfigHelpers    `json:"helpers"`
	Interfaces  []InstanceConfigInterface `json:"interfaces"`
	MemoryLimit int                       `json:"memory_limit"`
	Kernel      string                    `json:"kernel"`
	InitRD      *int                      `json:"init_rd"`
	RootDevice  string                    `json:"root_device"`
	RunLevel    string                    `json:"run_level"`
	VirtMode    string                    `json:"virt_mode"`
	Created     *time.Time                `json:"-"`
	Updated     *time.Time                `json:"-"`
}

InstanceConfig represents all of the settings that control the boot and run configuration of a Linode Instance

func (InstanceConfig) GetCreateOptions

func (i InstanceConfig) GetCreateOptions() InstanceConfigCreateOptions

GetCreateOptions converts a InstanceConfig to InstanceConfigCreateOptions for use in CreateInstanceConfig

func (InstanceConfig) GetUpdateOptions

func (i InstanceConfig) GetUpdateOptions() InstanceConfigUpdateOptions

GetUpdateOptions converts a InstanceConfig to InstanceConfigUpdateOptions for use in UpdateInstanceConfig

func (*InstanceConfig) UnmarshalJSON

func (i *InstanceConfig) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type InstanceConfigCreateOptions

type InstanceConfigCreateOptions struct {
	Label       string                                 `json:"label,omitzero"`
	Comments    string                                 `json:"comments,omitzero"`
	Devices     InstanceConfigDeviceMap                `json:"devices"`
	Helpers     *InstanceConfigHelpers                 `json:"helpers,omitzero"`
	Interfaces  []InstanceConfigInterfaceCreateOptions `json:"interfaces"`
	MemoryLimit int                                    `json:"memory_limit,omitzero"`
	Kernel      string                                 `json:"kernel,omitzero"`
	InitRD      int                                    `json:"init_rd,omitzero"`
	RootDevice  *string                                `json:"root_device,omitzero"`
	RunLevel    string                                 `json:"run_level,omitzero"`
	VirtMode    string                                 `json:"virt_mode,omitzero"`
}

InstanceConfigCreateOptions are InstanceConfig settings that can be used at creation

type InstanceConfigDevice

type InstanceConfigDevice struct {
	DiskID   int `json:"disk_id,omitzero"`
	VolumeID int `json:"volume_id,omitzero"`
}

InstanceConfigDevice contains either the DiskID or VolumeID assigned to a Config Device

type InstanceConfigDeviceMap

type InstanceConfigDeviceMap struct {
	// sda-sdz
	SDA *InstanceConfigDevice `json:"sda,omitzero"`
	SDB *InstanceConfigDevice `json:"sdb,omitzero"`
	SDC *InstanceConfigDevice `json:"sdc,omitzero"`
	SDD *InstanceConfigDevice `json:"sdd,omitzero"`
	SDE *InstanceConfigDevice `json:"sde,omitzero"`
	SDF *InstanceConfigDevice `json:"sdf,omitzero"`
	SDG *InstanceConfigDevice `json:"sdg,omitzero"`
	SDH *InstanceConfigDevice `json:"sdh,omitzero"`
	SDI *InstanceConfigDevice `json:"sdi,omitzero"`
	SDJ *InstanceConfigDevice `json:"sdj,omitzero"`
	SDK *InstanceConfigDevice `json:"sdk,omitzero"`
	SDL *InstanceConfigDevice `json:"sdl,omitzero"`
	SDM *InstanceConfigDevice `json:"sdm,omitzero"`
	SDN *InstanceConfigDevice `json:"sdn,omitzero"`
	SDO *InstanceConfigDevice `json:"sdo,omitzero"`
	SDP *InstanceConfigDevice `json:"sdp,omitzero"`
	SDQ *InstanceConfigDevice `json:"sdq,omitzero"`
	SDR *InstanceConfigDevice `json:"sdr,omitzero"`
	SDS *InstanceConfigDevice `json:"sds,omitzero"`
	SDT *InstanceConfigDevice `json:"sdt,omitzero"`
	SDU *InstanceConfigDevice `json:"sdu,omitzero"`
	SDV *InstanceConfigDevice `json:"sdv,omitzero"`
	SDW *InstanceConfigDevice `json:"sdw,omitzero"`
	SDX *InstanceConfigDevice `json:"sdx,omitzero"`
	SDY *InstanceConfigDevice `json:"sdy,omitzero"`
	SDZ *InstanceConfigDevice `json:"sdz,omitzero"`

	// sdaa-sdaz
	SDAA *InstanceConfigDevice `json:"sdaa,omitzero"`
	SDAB *InstanceConfigDevice `json:"sdab,omitzero"`
	SDAC *InstanceConfigDevice `json:"sdac,omitzero"`
	SDAD *InstanceConfigDevice `json:"sdad,omitzero"`
	SDAE *InstanceConfigDevice `json:"sdae,omitzero"`
	SDAF *InstanceConfigDevice `json:"sdaf,omitzero"`
	SDAG *InstanceConfigDevice `json:"sdag,omitzero"`
	SDAH *InstanceConfigDevice `json:"sdah,omitzero"`
	SDAI *InstanceConfigDevice `json:"sdai,omitzero"`
	SDAJ *InstanceConfigDevice `json:"sdaj,omitzero"`
	SDAK *InstanceConfigDevice `json:"sdak,omitzero"`
	SDAL *InstanceConfigDevice `json:"sdal,omitzero"`
	SDAM *InstanceConfigDevice `json:"sdam,omitzero"`
	SDAN *InstanceConfigDevice `json:"sdan,omitzero"`
	SDAO *InstanceConfigDevice `json:"sdao,omitzero"`
	SDAP *InstanceConfigDevice `json:"sdap,omitzero"`
	SDAQ *InstanceConfigDevice `json:"sdaq,omitzero"`
	SDAR *InstanceConfigDevice `json:"sdar,omitzero"`
	SDAS *InstanceConfigDevice `json:"sdas,omitzero"`
	SDAT *InstanceConfigDevice `json:"sdat,omitzero"`
	SDAU *InstanceConfigDevice `json:"sdau,omitzero"`
	SDAV *InstanceConfigDevice `json:"sdav,omitzero"`
	SDAW *InstanceConfigDevice `json:"sdaw,omitzero"`
	SDAX *InstanceConfigDevice `json:"sdax,omitzero"`
	SDAY *InstanceConfigDevice `json:"sday,omitzero"`
	SDAZ *InstanceConfigDevice `json:"sdaz,omitzero"`

	// sdba-sdbl
	SDBA *InstanceConfigDevice `json:"sdba,omitzero"`
	SDBB *InstanceConfigDevice `json:"sdbb,omitzero"`
	SDBC *InstanceConfigDevice `json:"sdbc,omitzero"`
	SDBD *InstanceConfigDevice `json:"sdbd,omitzero"`
	SDBE *InstanceConfigDevice `json:"sdbe,omitzero"`
	SDBF *InstanceConfigDevice `json:"sdbf,omitzero"`
	SDBG *InstanceConfigDevice `json:"sdbg,omitzero"`
	SDBH *InstanceConfigDevice `json:"sdbh,omitzero"`
	SDBI *InstanceConfigDevice `json:"sdbi,omitzero"`
	SDBJ *InstanceConfigDevice `json:"sdbj,omitzero"`
	SDBK *InstanceConfigDevice `json:"sdbk,omitzero"`
	SDBL *InstanceConfigDevice `json:"sdbl,omitzero"`
}

InstanceConfigDeviceMap contains SDA-SDH InstanceConfigDevice settings

type InstanceConfigHelpers

type InstanceConfigHelpers struct {
	UpdateDBDisabled  bool `json:"updatedb_disabled"`
	Distro            bool `json:"distro"`
	ModulesDep        bool `json:"modules_dep"`
	Network           bool `json:"network"`
	DevTmpFsAutomount bool `json:"devtmpfs_automount"`
}

InstanceConfigHelpers are Instance Config options that control Linux distribution specific tweaks

type InstanceConfigInterface

type InstanceConfigInterface struct {
	ID          int                    `json:"id"`
	IPAMAddress string                 `json:"ipam_address"`
	Label       string                 `json:"label"`
	Purpose     ConfigInterfacePurpose `json:"purpose"`
	Primary     bool                   `json:"primary"`
	Active      bool                   `json:"active"`
	VPCID       *int                   `json:"vpc_id"`
	SubnetID    *int                   `json:"subnet_id"`
	IPv4        *VPCIPv4               `json:"ipv4"`

	// NOTE: IPv6 interfaces may not currently be available to all users.
	IPv6 *InstanceConfigInterfaceIPv6 `json:"ipv6"`

	IPRanges []string `json:"ip_ranges"`
}

InstanceConfigInterface contains information about a configuration's network interface

func (InstanceConfigInterface) GetCreateOptions

func (InstanceConfigInterface) GetUpdateOptions

type InstanceConfigInterfaceCreateOptions

type InstanceConfigInterfaceCreateOptions struct {
	IPAMAddress string                 `json:"ipam_address,omitzero"`
	Label       string                 `json:"label,omitzero"`
	Purpose     ConfigInterfacePurpose `json:"purpose,omitzero"`
	Primary     bool                   `json:"primary,omitzero"`
	SubnetID    *int                   `json:"subnet_id,omitzero"`
	IPv4        *VPCIPv4CreateOptions  `json:"ipv4,omitzero"`

	// NOTE: IPv6 interfaces may not currently be available to all users.
	IPv6 *InstanceConfigInterfaceCreateOptionsIPv6 `json:"ipv6,omitzero"`

	IPRanges []string `json:"ip_ranges,omitzero"`
}

type InstanceConfigInterfaceCreateOptionsIPv6

type InstanceConfigInterfaceCreateOptionsIPv6 struct {
	SLAAC    []InstanceConfigInterfaceCreateOptionsIPv6SLAAC `json:"slaac,omitzero"`
	Ranges   []InstanceConfigInterfaceCreateOptionsIPv6Range `json:"ranges,omitzero"`
	IsPublic *bool                                           `json:"is_public,omitzero"`
}

InstanceConfigInterfaceCreateOptionsIPv6 represents the IPv6 configuration of a Linode interface specified during creation. NOTE: IPv6 interfaces may not currently be available to all users.

type InstanceConfigInterfaceCreateOptionsIPv6Range

type InstanceConfigInterfaceCreateOptionsIPv6Range struct {
	Range *string `json:"range,omitzero"`
}

InstanceConfigInterfaceCreateOptionsIPv6Range represents a single IPv6 ranges of a Linode interface specified during creation. NOTE: IPv6 interfaces may not currently be available to all users.

type InstanceConfigInterfaceCreateOptionsIPv6SLAAC

type InstanceConfigInterfaceCreateOptionsIPv6SLAAC struct {
	Range string `json:"range"`
}

InstanceConfigInterfaceCreateOptionsIPv6SLAAC represents a single IPv6 SLAAC of a Linode interface specified during creation. NOTE: IPv6 interfaces may not currently be available to all users.

type InstanceConfigInterfaceIPv6

type InstanceConfigInterfaceIPv6 struct {
	SLAAC    []InstanceConfigInterfaceIPv6SLAAC `json:"slaac"`
	Ranges   []InstanceConfigInterfaceIPv6Range `json:"ranges"`
	IsPublic *bool                              `json:"is_public"`
}

InstanceConfigInterfaceIPv6 represents the IPv6 configuration of a Linode interface. NOTE: IPv6 interfaces may not currently be available to all users.

type InstanceConfigInterfaceIPv6Range

type InstanceConfigInterfaceIPv6Range struct {
	Range string `json:"range"`
}

InstanceConfigInterfaceIPv6Range represents a single IPv6 range under a Linode interface. NOTE: IPv6 interfaces may not currently be available to all users.

type InstanceConfigInterfaceIPv6SLAAC

type InstanceConfigInterfaceIPv6SLAAC struct {
	Range   string `json:"range"`
	Address string `json:"address"`
}

InstanceConfigInterfaceIPv6SLAAC represents a single IPv6 SLAAC under a Linode interface. NOTE: IPv6 interfaces may not currently be available to all users.

type InstanceConfigInterfaceUpdateOptions

type InstanceConfigInterfaceUpdateOptions struct {
	Primary bool                  `json:"primary,omitzero"`
	IPv4    *VPCIPv4UpdateOptions `json:"ipv4,omitzero"`

	// NOTE: IPv6 interfaces may not currently be available to all users.
	IPv6 *InstanceConfigInterfaceUpdateOptionsIPv6 `json:"ipv6,omitzero"`

	IPRanges []string `json:"ip_ranges,omitzero"`
}

type InstanceConfigInterfaceUpdateOptionsIPv6

type InstanceConfigInterfaceUpdateOptionsIPv6 struct {
	SLAAC    []InstanceConfigInterfaceUpdateOptionsIPv6SLAAC `json:"slaac,omitzero"`
	Ranges   []InstanceConfigInterfaceUpdateOptionsIPv6Range `json:"ranges,omitzero"`
	IsPublic *bool                                           `json:"is_public,omitzero"`
}

InstanceConfigInterfaceUpdateOptionsIPv6 represents the IPv6 configuration of a Linode interface specified during updates. NOTE: IPv6 interfaces may not currently be available to all users.

type InstanceConfigInterfaceUpdateOptionsIPv6Range

type InstanceConfigInterfaceUpdateOptionsIPv6Range struct {
	Range *string `json:"range,omitzero"`
}

InstanceConfigInterfaceUpdateOptionsIPv6Range represents a single IPv6 ranges of a Linode interface specified during updates. NOTE: IPv6 interfaces may not currently be available to all users.

type InstanceConfigInterfaceUpdateOptionsIPv6SLAAC

type InstanceConfigInterfaceUpdateOptionsIPv6SLAAC struct {
	Range *string `json:"range,omitzero"`
}

InstanceConfigInterfaceUpdateOptionsIPv6SLAAC represents a single IPv6 SLAAC of a Linode interface specified during updates. NOTE: IPv6 interfaces may not currently be available to all users.

type InstanceConfigInterfacesReorderOptions

type InstanceConfigInterfacesReorderOptions struct {
	IDs []int `json:"ids"`
}

type InstanceConfigUpdateOptions

type InstanceConfigUpdateOptions struct {
	Label      string                                 `json:"label,omitzero"`
	Comments   string                                 `json:"comments"`
	Devices    *InstanceConfigDeviceMap               `json:"devices,omitzero"`
	Helpers    *InstanceConfigHelpers                 `json:"helpers,omitzero"`
	Interfaces []InstanceConfigInterfaceCreateOptions `json:"interfaces"`
	// MemoryLimit 0 means unlimitted, this is not omitted
	MemoryLimit int    `json:"memory_limit"`
	Kernel      string `json:"kernel,omitzero"`
	// InitRD is nullable, permit the sending of null
	InitRD     *int   `json:"init_rd"`
	RootDevice string `json:"root_device,omitzero"`
	RunLevel   string `json:"run_level,omitzero"`
	VirtMode   string `json:"virt_mode,omitzero"`
}

InstanceConfigUpdateOptions are InstanceConfig settings that can be used in updates

type InstanceCreateOptions

type InstanceCreateOptions struct {
	Region              string                               `json:"region"`
	Type                string                               `json:"type"`
	Label               string                               `json:"label,omitzero"`
	RootPass            string                               `json:"root_pass,omitzero"`
	AuthorizedKeys      []string                             `json:"authorized_keys,omitzero"`
	AuthorizedUsers     []string                             `json:"authorized_users,omitzero"`
	StackScriptID       int                                  `json:"stackscript_id,omitzero"`
	StackScriptData     map[string]string                    `json:"stackscript_data,omitzero"`
	BackupID            int                                  `json:"backup_id,omitzero"`
	Image               string                               `json:"image,omitzero"`
	BackupsEnabled      bool                                 `json:"backups_enabled,omitzero"`
	PrivateIP           bool                                 `json:"private_ip,omitzero"`
	NetworkHelper       *bool                                `json:"network_helper,omitzero"`
	Tags                []string                             `json:"tags,omitzero"`
	Metadata            *InstanceMetadataOptions             `json:"metadata,omitzero"`
	FirewallID          int                                  `json:"firewall_id,omitzero"`
	InterfaceGeneration InterfaceGeneration                  `json:"interface_generation,omitzero"`
	DiskEncryption      InstanceDiskEncryption               `json:"disk_encryption,omitzero"`
	PlacementGroup      *InstanceCreatePlacementGroupOptions `json:"placement_group,omitzero"`

	// Linode Interfaces to create the new instance with.
	// Conflicts with Interfaces.
	LinodeInterfaces []LinodeInterfaceCreateOptions `json:"-"`

	// Legacy (config) Interfaces to create the new instance with.
	// Conflicts with LinodeInterfaces.
	Interfaces []InstanceConfigInterfaceCreateOptions `json:"-"`

	// Creation fields that need to be set explicitly false, "", or 0 use pointers
	SwapSize *int  `json:"swap_size,omitzero"`
	Booted   *bool `json:"booted,omitzero"`

	IPv4 []string `json:"ipv4,omitzero"`

	MaintenancePolicy *string `json:"maintenance_policy,omitzero"`

	Kernel   *string `json:"kernel,omitzero"`
	BootSize *int    `json:"boot_size,omitzero"`
}

InstanceCreateOptions require only Region and Type

func (InstanceCreateOptions) MarshalJSON

func (i InstanceCreateOptions) MarshalJSON() ([]byte, error)

MarshalJSON contains logic necessary to populate the `interfaces` field of InstanceCreateOptions depending on whether Interfaces or LinodeInterfaces is specified.

func (*InstanceCreateOptions) UnmarshalJSON

func (i *InstanceCreateOptions) UnmarshalJSON(b []byte) error

UnmarshalJSON contains logic necessary to populate the Interfaces field depending on the value of interface_generation.

type InstanceCreatePlacementGroupOptions

type InstanceCreatePlacementGroupOptions struct {
	ID            int   `json:"id"`
	CompliantOnly *bool `json:"compliant_only,omitzero"`
}

InstanceCreatePlacementGroupOptions represents the placement group to create this Linode under.

type InstanceDisk

type InstanceDisk struct {
	ID             int                    `json:"id"`
	Label          string                 `json:"label"`
	Status         DiskStatus             `json:"status"`
	Size           int                    `json:"size"`
	Filesystem     DiskFilesystem         `json:"filesystem"`
	Created        *time.Time             `json:"-"`
	Updated        *time.Time             `json:"-"`
	DiskEncryption InstanceDiskEncryption `json:"disk_encryption"`
}

InstanceDisk represents an Instance Disk object

func (*InstanceDisk) UnmarshalJSON

func (i *InstanceDisk) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type InstanceDiskCreateOptions

type InstanceDiskCreateOptions struct {
	Label string `json:"label"`
	Size  int    `json:"size"`

	// Image is optional, but requires at least one of RootPass, AuthorizedUsers, or AuthorizedKeys if provided
	Image    string `json:"image,omitzero"`
	RootPass string `json:"root_pass,omitzero"`

	Filesystem      string            `json:"filesystem,omitzero"`
	AuthorizedKeys  []string          `json:"authorized_keys,omitzero"`
	AuthorizedUsers []string          `json:"authorized_users,omitzero"`
	StackscriptID   int               `json:"stackscript_id,omitzero"`
	StackscriptData map[string]string `json:"stackscript_data,omitzero"`
}

InstanceDiskCreateOptions are InstanceDisk settings that can be used at creation

type InstanceDiskEncryption

type InstanceDiskEncryption string
const (
	InstanceDiskEncryptionEnabled  InstanceDiskEncryption = "enabled"
	InstanceDiskEncryptionDisabled InstanceDiskEncryption = "disabled"
)

type InstanceDiskPasswordResetOptions

type InstanceDiskPasswordResetOptions struct {
	Password string `json:"password"`
}

InstanceDiskPasswordResetOptions are InstanceDisk settings that can be used in password resets

type InstanceDiskResizeOptions

type InstanceDiskResizeOptions struct {
	Size int `json:"size"`
}

InstanceDiskResizeOptions are InstanceDisk settings that can be used in resizes

type InstanceDiskUpdateOptions

type InstanceDiskUpdateOptions struct {
	Label string `json:"label"`
}

InstanceDiskUpdateOptions are InstanceDisk settings that can be used in updates

type InstanceFirewallUpdateOptions

type InstanceFirewallUpdateOptions struct {
	FirewallIDs []int `json:"firewall_ids"`
}

type InstanceIP

type InstanceIP struct {
	Address     string             `json:"address"`
	Gateway     string             `json:"gateway"`
	SubnetMask  string             `json:"subnet_mask"`
	Prefix      int                `json:"prefix"`
	Type        InstanceIPType     `json:"type"`
	Public      bool               `json:"public"`
	RDNS        string             `json:"rdns"`
	LinodeID    int                `json:"linode_id"`
	InterfaceID *int               `json:"interface_id"`
	Region      string             `json:"region"`
	VPCNAT1To1  *InstanceIPNAT1To1 `json:"vpc_nat_1_1"`
	Reserved    bool               `json:"reserved"`
}

InstanceIP represents an Instance IP with additional DNS and networking details

func (InstanceIP) GetUpdateOptions

func (i InstanceIP) GetUpdateOptions() IPAddressUpdateOptions

GetUpdateOptions converts a IPAddress to IPAddressUpdateOptions for use in UpdateIPAddress.

type InstanceIPAddOptions

type InstanceIPAddOptions struct {
	Type   string `json:"type"`
	Public bool   `json:"public"`
}

type InstanceIPAddressResponse

type InstanceIPAddressResponse struct {
	IPv4 *InstanceIPv4Response `json:"ipv4"`
	IPv6 *InstanceIPv6Response `json:"ipv6"`
}

InstanceIPAddressResponse contains the IPv4 and IPv6 details for an Instance

type InstanceIPAddressUpdateOptions

type InstanceIPAddressUpdateOptions struct {
	RDNS **string `json:"rdns,omitzero"`
}

type InstanceIPNAT1To1

type InstanceIPNAT1To1 struct {
	Address  string `json:"address"`
	SubnetID int    `json:"subnet_id"`
	VPCID    int    `json:"vpc_id"`
}

InstanceIPNAT1To1 contains information about the NAT 1:1 mapping of a public IP address to a VPC subnet.

type InstanceIPType

type InstanceIPType string

InstanceIPType constants start with IPType and include Linode Instance IP Types

const (
	IPTypeIPv4      InstanceIPType = "ipv4"
	IPTypeIPv6      InstanceIPType = "ipv6"
	IPTypeIPv6Pool  InstanceIPType = "ipv6/pool"
	IPTypeIPv6Range InstanceIPType = "ipv6/range"
)

InstanceIPType constants represent the IP types an Instance IP may be

type InstanceIPv4Response

type InstanceIPv4Response struct {
	Public   []InstanceIP `json:"public"`
	Private  []InstanceIP `json:"private"`
	Shared   []InstanceIP `json:"shared"`
	Reserved []InstanceIP `json:"reserved"`
	VPC      []VPCIP      `json:"vpc"`
}

InstanceIPv4Response contains the details of all IPv4 addresses associated with an Instance

type InstanceIPv6Response

type InstanceIPv6Response struct {
	LinkLocal *InstanceIP `json:"link_local"`
	SLAAC     *InstanceIP `json:"slaac"`
	Global    []IPv6Range `json:"global"`
	// NOTE: IPv6 VPCs may not currently be available to all users.
	VPC []VPCIP `json:"vpc"`
}

InstanceIPv6Response contains the IPv6 addresses and ranges for an Instance

type InstanceMetadataOptions

type InstanceMetadataOptions struct {
	// UserData expects a Base64-encoded string
	UserData string `json:"user_data,omitzero"`
}

InstanceMetadataOptions specifies various Instance creation fields that relate to the Linode Metadata service.

type InstanceMigrateOptions

type InstanceMigrateOptions struct {
	Type    InstanceMigrationType `json:"type,omitzero"`
	Region  string                `json:"region,omitzero"`
	Upgrade *bool                 `json:"upgrade,omitzero"`

	PlacementGroup *InstanceCreatePlacementGroupOptions `json:"placement_group,omitzero"`
}

InstanceMigrateOptions is an options struct used when migrating an instance

type InstanceMigrationType

type InstanceMigrationType string
const (
	WarmMigration InstanceMigrationType = "warm"
	ColdMigration InstanceMigrationType = "cold"
)

type InstancePasswordResetOptions

type InstancePasswordResetOptions struct {
	RootPass string `json:"root_pass"`
}

InstancePasswordResetOptions specifies the new password for the Linode

type InstancePlacementGroup

type InstancePlacementGroup struct {
	ID                   int                  `json:"id"`
	Label                string               `json:"label"`
	PlacementGroupType   PlacementGroupType   `json:"placement_group_type"`
	PlacementGroupPolicy PlacementGroupPolicy `json:"placement_group_policy"`
	MigratingTo          *int                 `json:"migrating_to"` // read-only
}

InstancePlacementGroup represents information about the placement group this Linode is a part of.

type InstanceRebootOptions

type InstanceRebootOptions struct {
	ConfigID *int `json:"config_id,omitzero"`
}

type InstanceRebuildOptions

type InstanceRebuildOptions struct {
	Image           string                   `json:"image,omitzero"`
	RootPass        string                   `json:"root_pass,omitzero"`
	AuthorizedKeys  []string                 `json:"authorized_keys,omitzero"`
	AuthorizedUsers []string                 `json:"authorized_users,omitzero"`
	StackScriptID   int                      `json:"stackscript_id,omitzero"`
	StackScriptData map[string]string        `json:"stackscript_data,omitzero"`
	Booted          *bool                    `json:"booted,omitzero"`
	Metadata        *InstanceMetadataOptions `json:"metadata,omitzero"`
	Type            string                   `json:"type,omitzero"`
	DiskEncryption  InstanceDiskEncryption   `json:"disk_encryption,omitzero"`
}

InstanceRebuildOptions is a struct representing the options to send to the rebuild linode endpoint

type InstanceRescueOptions

type InstanceRescueOptions struct {
	Devices InstanceConfigDeviceMap `json:"devices"`
}

InstanceRescueOptions fields are those accepted by RescueInstance

type InstanceReserveIPOptions

type InstanceReserveIPOptions struct {
	Type    string `json:"type"`
	Public  bool   `json:"public"`
	Address string `json:"address"`
}

type InstanceResizeOptions

type InstanceResizeOptions struct {
	Type          string                `json:"type"`
	MigrationType InstanceMigrationType `json:"migration_type,omitzero"`

	// When enabled, an instance resize will also resize a data disk if the instance has no more than one data disk and one swap disk
	AllowAutoDiskResize *bool `json:"allow_auto_disk_resize,omitzero"`
}

InstanceResizeOptions is an options struct used when resizing an instance

type InstanceSnapshot

type InstanceSnapshot struct {
	ID        int                    `json:"id"`
	Label     string                 `json:"label"`
	Status    InstanceSnapshotStatus `json:"status"`
	Type      string                 `json:"type"`
	Created   *time.Time             `json:"-"`
	Updated   *time.Time             `json:"-"`
	Finished  *time.Time             `json:"-"`
	Configs   []string               `json:"configs"`
	Disks     []InstanceSnapshotDisk `json:"disks"`
	Available bool                   `json:"available"`
}

InstanceSnapshot represents a linode backup snapshot

func (*InstanceSnapshot) UnmarshalJSON

func (i *InstanceSnapshot) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type InstanceSnapshotCreateOptions

type InstanceSnapshotCreateOptions struct {
	Label string `json:"label"`
}

type InstanceSnapshotDisk

type InstanceSnapshotDisk struct {
	Label      string `json:"label"`
	Size       int    `json:"size"`
	Filesystem string `json:"filesystem"`
}

InstanceSnapshotDisk fields represent the source disk of a Snapshot

type InstanceSnapshotStatus

type InstanceSnapshotStatus string

InstanceSnapshotStatus constants start with Snapshot and include Linode API Instance Backup Snapshot status values

var (
	SnapshotPaused              InstanceSnapshotStatus = "paused"
	SnapshotPending             InstanceSnapshotStatus = "pending"
	SnapshotRunning             InstanceSnapshotStatus = "running"
	SnapshotNeedsPostProcessing InstanceSnapshotStatus = "needsPostProcessing"
	SnapshotSuccessful          InstanceSnapshotStatus = "successful"
	SnapshotFailed              InstanceSnapshotStatus = "failed"
	SnapshotUserAborted         InstanceSnapshotStatus = "userAborted"
)

InstanceSnapshotStatus constants reflect the current status of an Instance Snapshot

type InstanceSpec

type InstanceSpec struct {
	Disk               int `json:"disk"`
	Memory             int `json:"memory"`
	VCPUs              int `json:"vcpus"`
	Transfer           int `json:"transfer"`
	GPUs               int `json:"gpus"`
	AcceleratedDevices int `json:"accelerated_devices"`
}

InstanceSpec represents a linode spec

type InstanceStats

type InstanceStats struct {
	Title string            `json:"title"`
	Data  InstanceStatsData `json:"data"`
}

InstanceStats represents an instance stats object

type InstanceStatsData

type InstanceStatsData struct {
	CPU   [][]float64 `json:"cpu"`
	IO    StatsIO     `json:"io"`
	NetV4 StatsNet    `json:"netv4"`
	NetV6 StatsNet    `json:"netv6"`
}

InstanceStatsData represents an instance stats data object

type InstanceStatus

type InstanceStatus string

InstanceStatus constants start with Instance and include Linode API Instance Status values

const (
	InstanceBooting      InstanceStatus = "booting"
	InstanceRunning      InstanceStatus = "running"
	InstanceOffline      InstanceStatus = "offline"
	InstanceShuttingDown InstanceStatus = "shutting_down"
	InstanceRebooting    InstanceStatus = "rebooting"
	InstanceProvisioning InstanceStatus = "provisioning"
	InstanceDeleting     InstanceStatus = "deleting"
	InstanceMigrating    InstanceStatus = "migrating"
	InstanceRebuilding   InstanceStatus = "rebuilding"
	InstanceCloning      InstanceStatus = "cloning"
	InstanceRestoring    InstanceStatus = "restoring"
	InstanceResizing     InstanceStatus = "resizing"
)

InstanceStatus constants reflect the current status of an Instance

type InstanceTransfer

type InstanceTransfer struct {
	// Bytes of transfer this instance has consumed
	Used int `json:"used"`

	// GB of billable transfer this instance has consumed
	Billable int `json:"billable"`

	// GB of transfer this instance adds to the Transfer pool
	Quota int `json:"quota"`
}

InstanceTransfer pool stats for a Linode Instance during the current billing month

type InstanceUpdateOptions

type InstanceUpdateOptions struct {
	Label           string          `json:"label,omitzero"`
	Backups         *InstanceBackup `json:"backups,omitzero"`
	Alerts          *InstanceAlert  `json:"alerts,omitzero"`
	WatchdogEnabled *bool           `json:"watchdog_enabled,omitzero"`
	Tags            []string        `json:"tags,omitzero"`

	MaintenancePolicy *string `json:"maintenance_policy,omitzero"`
}

InstanceUpdateOptions is an options struct used when Updating an Instance

type InstanceUpgradeOptions

type InstanceUpgradeOptions struct {
	// Automatically resize disks when resizing a Linode.
	// When resizing down to a smaller plan your Linode's data must fit within the smaller disk size.
	AllowAutoDiskResize bool `json:"allow_auto_disk_resize"`
}

InstanceUpgradeOptions is a struct representing the options for upgrading a Linode

type InteractiveTimeout

type InteractiveTimeout struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type InterfaceDefaultRoute

type InterfaceDefaultRoute struct {
	IPv4 *bool `json:"ipv4,omitzero"`
	IPv6 *bool `json:"ipv6,omitzero"`
}

type InterfaceDefaultRouteCreateOptions

type InterfaceDefaultRouteCreateOptions struct {
	IPv4 *bool `json:"ipv4,omitzero"`
	IPv6 *bool `json:"ipv6,omitzero"`
}

type InterfaceDefaultRouteSetting

type InterfaceDefaultRouteSetting struct {
	IPv4InterfaceID          *int  `json:"ipv4_interface_id"`
	IPv4EligibleInterfaceIDs []int `json:"ipv4_eligible_interface_ids"`
	IPv6InterfaceID          *int  `json:"ipv6_interface_id"`
	IPv6EligibleInterfaceIDs []int `json:"ipv6_eligible_interface_ids"`
}

type InterfaceDefaultRouteSettingUpdateOptions

type InterfaceDefaultRouteSettingUpdateOptions struct {
	IPv4InterfaceID *int `json:"ipv4_interface_id,omitzero"`
	IPv6InterfaceID *int `json:"ipv6_interface_id,omitzero"`
}

type InterfaceDefaultRouteUpdateOptions

type InterfaceDefaultRouteUpdateOptions struct {
	IPv4 *bool `json:"ipv4,omitzero"`
	IPv6 *bool `json:"ipv6,omitzero"`
}

type InterfaceGeneration

type InterfaceGeneration string
const (
	GenerationLegacyConfig InterfaceGeneration = "legacy_config"
	GenerationLinode       InterfaceGeneration = "linode"
)

type InterfaceSettings

type InterfaceSettings struct {
	NetworkHelper bool                         `json:"network_helper"`
	DefaultRoute  InterfaceDefaultRouteSetting `json:"default_route"`
}

type InterfaceSettingsUpdateOptions

type InterfaceSettingsUpdateOptions struct {
	NetworkHelper *bool                                      `json:"network_helper,omitzero"`
	DefaultRoute  *InterfaceDefaultRouteSettingUpdateOptions `json:"default_route,omitzero"`
}

type InterfacesForNewLinodes

type InterfacesForNewLinodes string
const (
	LegacyConfigOnly                    InterfacesForNewLinodes = "legacy_config_only"
	LegacyConfigDefaultButLinodeAllowed InterfacesForNewLinodes = "legacy_config_default_but_linode_allowed"
	LinodeDefaultButLegacyConfigAllowed InterfacesForNewLinodes = "linode_default_but_legacy_config_allowed"
	LinodeOnly                          InterfacesForNewLinodes = "linode_only"
)

type InternalTmpMemStorageEngine

type InternalTmpMemStorageEngine struct {
	Description     string   `json:"description"`
	Enum            []string `json:"enum"`
	Example         string   `json:"example"`
	RequiresRestart bool     `json:"requires_restart"`
	Type            string   `json:"type"`
}

type Invoice

type Invoice struct {
	ID            int                 `json:"id"`
	Label         string              `json:"label"`
	Total         float32             `json:"total"`
	Date          *time.Time          `json:"-"`
	Tax           float32             `json:"tax"`
	Subtotal      float32             `json:"subtotal"`
	BillingSource string              `json:"billing_source"`
	TaxSummary    []InvoiceTaxSummary `json:"tax_summary"`
}

Invoice structs reflect an invoice for billable activity on the account.

func (*Invoice) UnmarshalJSON

func (i *Invoice) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type InvoiceItem

type InvoiceItem struct {
	Label     string     `json:"label"`
	Type      string     `json:"type"`
	UnitPrice string     `json:"unit_price"`
	Quantity  int        `json:"quantity"`
	Amount    float32    `json:"amount"`
	Tax       float32    `json:"tax"`
	Region    *string    `json:"region"`
	From      *time.Time `json:"-"`
	To        *time.Time `json:"-"`
	Total     float32    `json:"total"`
}

InvoiceItem structs reflect a single billable activity associate with an Invoice

func (*InvoiceItem) UnmarshalJSON

func (i *InvoiceItem) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type InvoiceTaxSummary

type InvoiceTaxSummary struct {
	Tax  float32 `json:"tax"`
	Name string  `json:"name"`
}

type JIT

type JIT struct {
	Description     string `json:"description"`
	Example         bool   `json:"example"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type LKECluster

type LKECluster struct {
	ID           int                    `json:"id"`
	Created      *time.Time             `json:"-"`
	Updated      *time.Time             `json:"-"`
	Label        string                 `json:"label"`
	Region       string                 `json:"region"`
	Status       LKEClusterStatus       `json:"status"`
	K8sVersion   string                 `json:"k8s_version"`
	Tags         []string               `json:"tags"`
	ControlPlane LKEClusterControlPlane `json:"control_plane"`

	// NOTE: Tier may not currently be available to all users and can only be used with v4beta.
	Tier string `json:"tier"`

	// NOTE: APLEnabled is currently in beta and may only function with API version v4beta.
	APLEnabled bool `json:"apl_enabled"`

	// NOTE: SubnetID, VpcID, and StackType may not currently be available to all users and can only be used with v4beta.
	SubnetID  int                 `json:"subnet_id"`
	VpcID     int                 `json:"vpc_id"`
	StackType LKEClusterStackType `json:"stack_type"`

	// NOTE: Locks can only be used with v4beta.
	Locks []LockType `json:"locks"`
}

LKECluster represents a LKECluster object

func (LKECluster) GetCreateOptions

func (i LKECluster) GetCreateOptions() (o LKEClusterCreateOptions)

GetCreateOptions converts a LKECluster to LKEClusterCreateOptions for use in CreateLKECluster

func (LKECluster) GetUpdateOptions

func (i LKECluster) GetUpdateOptions() (o LKEClusterUpdateOptions)

GetUpdateOptions converts a LKECluster to LKEClusterUpdateOptions for use in UpdateLKECluster

func (*LKECluster) UnmarshalJSON

func (i *LKECluster) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type LKEClusterAPIEndpoint

type LKEClusterAPIEndpoint struct {
	Endpoint string `json:"endpoint"`
}

LKEClusterAPIEndpoint fields are those returned by ListLKEClusterAPIEndpoints

type LKEClusterControlPlane

type LKEClusterControlPlane struct {
	HighAvailability bool `json:"high_availability"`

	// AuditLogsEnabled may not currently be available to all users and can only be used with v4beta.
	AuditLogsEnabled bool `json:"audit_logs_enabled,omitzero"`
}

LKEClusterControlPlane fields contained within the `control_plane` attribute of an LKE cluster.

type LKEClusterControlPlaneACL

type LKEClusterControlPlaneACL struct {
	Enabled    bool                                `json:"enabled"`
	Addresses  *LKEClusterControlPlaneACLAddresses `json:"addresses"`
	RevisionID string                              `json:"revision-id"`
}

LKEClusterControlPlaneACL describes the ACL configuration for an LKE cluster's control plane.

type LKEClusterControlPlaneACLAddresses

type LKEClusterControlPlaneACLAddresses struct {
	IPv4 []string `json:"ipv4"`
	IPv6 []string `json:"ipv6"`
}

LKEClusterControlPlaneACLAddresses describes the allowed IP ranges for an LKE cluster's control plane.

type LKEClusterControlPlaneACLAddressesOptions

type LKEClusterControlPlaneACLAddressesOptions struct {
	IPv4 []string `json:"ipv4,omitzero"`
	IPv6 []string `json:"ipv6,omitzero"`
}

LKEClusterControlPlaneACLAddressesOptions are the options used to specify the allowed IP ranges for an LKE cluster's control plane.

type LKEClusterControlPlaneACLOptions

type LKEClusterControlPlaneACLOptions struct {
	Enabled    *bool                                      `json:"enabled,omitzero"`
	Addresses  *LKEClusterControlPlaneACLAddressesOptions `json:"addresses,omitzero"`
	RevisionID string                                     `json:"revision-id,omitzero"`
}

LKEClusterControlPlaneACLOptions represents the options used when configuring an LKE cluster's control plane ACL policy.

type LKEClusterControlPlaneACLResponse

type LKEClusterControlPlaneACLResponse struct {
	ACL LKEClusterControlPlaneACL `json:"acl"`
}

LKEClusterControlPlaneACLResponse represents the response structure for the Client.GetLKEClusterControlPlaneACL(...) method.

type LKEClusterControlPlaneACLUpdateOptions

type LKEClusterControlPlaneACLUpdateOptions struct {
	ACL LKEClusterControlPlaneACLOptions `json:"acl"`
}

LKEClusterControlPlaneACLUpdateOptions represents the options available when updating the ACL configuration of an LKE cluster's control plane.

type LKEClusterControlPlaneOptions

type LKEClusterControlPlaneOptions struct {
	HighAvailability *bool                             `json:"high_availability,omitzero"`
	ACL              *LKEClusterControlPlaneACLOptions `json:"acl,omitzero"`

	// AuditLogsEnabled may not currently be available to all users and can only be used with v4beta.
	AuditLogsEnabled *bool `json:"audit_logs_enabled,omitzero"`
}

LKEClusterControlPlaneOptions represents the options used when configuring an LKE cluster's control plane.

type LKEClusterCreateOptions

type LKEClusterCreateOptions struct {
	NodePools    []LKENodePoolCreateOptions     `json:"node_pools"`
	Label        string                         `json:"label"`
	Region       string                         `json:"region"`
	K8sVersion   string                         `json:"k8s_version"`
	Tags         []string                       `json:"tags,omitzero"`
	ControlPlane *LKEClusterControlPlaneOptions `json:"control_plane,omitzero"`

	// NOTE: Tier may not currently be available to all users and can only be used with v4beta.
	Tier string `json:"tier,omitzero"`

	// NOTE: APLEnabled is currently in beta and may only function with API version v4beta.
	APLEnabled bool `json:"apl_enabled,omitzero"`

	// NOTE: SubnetID, VpcID, and StackType may not currently be available to all users and can only be used with v4beta.
	SubnetID  *int                 `json:"subnet_id,omitzero"`
	VpcID     *int                 `json:"vpc_id,omitzero"`
	StackType *LKEClusterStackType `json:"stack_type,omitzero"`
}

LKEClusterCreateOptions fields are those accepted by CreateLKECluster

type LKEClusterKubeconfig

type LKEClusterKubeconfig struct {
	KubeConfig string `json:"kubeconfig"` // Base64-encoded Kubeconfig file for this Cluster.
}

LKEClusterKubeconfig fields are those returned by GetLKEClusterKubeconfig

type LKEClusterPollOptions

type LKEClusterPollOptions struct {
	// Retry will cause the Poll to ignore interimittent errors
	Retry bool

	// TansportWrapper allows adding a transport middleware function that will
	// wrap the LKE Cluster client's underlying http.RoundTripper.
	TransportWrapper func(http.RoundTripper) http.RoundTripper
}

LKEClusterPollOptions configures polls against LKE Clusters.

type LKEClusterRegenerateOptions

type LKEClusterRegenerateOptions struct {
	KubeConfig   bool `json:"kubeconfig"`
	ServiceToken bool `json:"servicetoken"`
}

LKEClusterRegenerateOptions fields are those accepted by RegenerateLKECluster

type LKEClusterStackType

type LKEClusterStackType string
const (
	LKEClusterStackIPv4 LKEClusterStackType = "ipv4"
	LKEClusterDualStack LKEClusterStackType = "ipv4-ipv6"
)

type LKEClusterStatus

type LKEClusterStatus string

LKEClusterStatus represents the status of an LKECluster

const (
	LKEClusterReady    LKEClusterStatus = "ready"
	LKEClusterNotReady LKEClusterStatus = "not_ready"
)

LKEClusterStatus enums start with LKECluster

type LKEClusterUpdateOptions

type LKEClusterUpdateOptions struct {
	K8sVersion   string                         `json:"k8s_version,omitzero"`
	Label        string                         `json:"label,omitzero"`
	Tags         []string                       `json:"tags,omitzero"`
	ControlPlane *LKEClusterControlPlaneOptions `json:"control_plane,omitzero"`
}

LKEClusterUpdateOptions fields are those accepted by UpdateLKECluster

type LKELinodeStatus

type LKELinodeStatus string

LKELinodeStatus constants start with LKELinode and include Linode API LKENodePool Linode Status values

const (
	LKELinodeReady    LKELinodeStatus = "ready"
	LKELinodeNotReady LKELinodeStatus = "not_ready"
)

LKENodePoolStatus constants reflect the current status of an LKENodePool

type LKENodePool

type LKENodePool struct {
	ID      int                 `json:"id"`
	Count   int                 `json:"count"`
	Type    string              `json:"type"`
	Disks   []LKENodePoolDisk   `json:"disks"`
	Linodes []LKENodePoolLinode `json:"nodes"`
	Tags    []string            `json:"tags"`
	Labels  LKENodePoolLabels   `json:"labels"`
	Taints  []LKENodePoolTaint  `json:"taints"`
	Label   *string             `json:"label"`

	Autoscaler LKENodePoolAutoscaler `json:"autoscaler"`
	FirewallID *int                  `json:"firewall_id,omitzero"`

	DiskEncryption InstanceDiskEncryption `json:"disk_encryption,omitzero"`

	// K8sVersion and UpdateStrategy are only for LKE Enterprise to support node pool upgrades.
	// It may not currently be available to all users and is under v4beta.
	K8sVersion     *string                    `json:"k8s_version,omitzero"`
	UpdateStrategy *LKENodePoolUpdateStrategy `json:"update_strategy,omitzero"`

	// NOTE: Only cannot_delete applies to LKE node pools and can only be used with v4beta.
	Locks []LockType `json:"locks"`
}

LKENodePool represents a LKENodePool object

func (LKENodePool) GetCreateOptions

func (l LKENodePool) GetCreateOptions() (o LKENodePoolCreateOptions)

GetCreateOptions converts a LKENodePool to LKENodePoolCreateOptions for use in CreateLKENodePool

func (LKENodePool) GetUpdateOptions

func (l LKENodePool) GetUpdateOptions() (o LKENodePoolUpdateOptions)

GetUpdateOptions converts a LKENodePool to LKENodePoolUpdateOptions for use in UpdateLKENodePoolUpdate

type LKENodePoolAutoscaler

type LKENodePoolAutoscaler struct {
	Enabled bool `json:"enabled"`
	Min     int  `json:"min"`
	Max     int  `json:"max"`
}

type LKENodePoolCreateOptions

type LKENodePoolCreateOptions struct {
	Count  int                `json:"count"`
	Type   string             `json:"type"`
	Disks  []LKENodePoolDisk  `json:"disks"`
	Tags   []string           `json:"tags"`
	Labels LKENodePoolLabels  `json:"labels"`
	Taints []LKENodePoolTaint `json:"taints"`
	Label  *string            `json:"label,omitzero"`

	Autoscaler *LKENodePoolAutoscaler `json:"autoscaler,omitzero"`
	FirewallID *int                   `json:"firewall_id,omitzero"`

	// K8sVersion and UpdateStrategy only works for LKE Enterprise to support node pool upgrades.
	// It may not currently be available to all users and is under v4beta.
	K8sVersion     *string                    `json:"k8s_version,omitzero"`
	UpdateStrategy *LKENodePoolUpdateStrategy `json:"update_strategy,omitzero"`

	DiskEncryption *InstanceDiskEncryption `json:"disk_encryption,omitzero"`
}

LKENodePoolCreateOptions fields are those accepted by CreateLKENodePool

type LKENodePoolDisk

type LKENodePoolDisk struct {
	Size int    `json:"size"`
	Type string `json:"type"`
}

LKENodePoolDisk represents a Node disk in an LKENodePool object

type LKENodePoolLabels

type LKENodePoolLabels map[string]string

LKENodePoolLabels represents Kubernetes labels to add to an LKENodePool

type LKENodePoolLinode

type LKENodePoolLinode struct {
	ID         string          `json:"id"`
	InstanceID int             `json:"instance_id"`
	Status     LKELinodeStatus `json:"status"`
}

LKENodePoolLinode represents a LKENodePoolLinode object

type LKENodePoolTaint

type LKENodePoolTaint struct {
	Key    string                 `json:"key"`
	Value  string                 `json:"value,omitzero"`
	Effect LKENodePoolTaintEffect `json:"effect"`
}

LKENodePoolTaint represents a corev1.Taint to add to an LKENodePool

type LKENodePoolTaintEffect

type LKENodePoolTaintEffect string

LKENodePoolTaintEffect represents the effect value of a taint

const (
	LKENodePoolTaintEffectNoSchedule       LKENodePoolTaintEffect = "NoSchedule"
	LKENodePoolTaintEffectPreferNoSchedule LKENodePoolTaintEffect = "PreferNoSchedule"
	LKENodePoolTaintEffectNoExecute        LKENodePoolTaintEffect = "NoExecute"
)

type LKENodePoolUpdateOptions

type LKENodePoolUpdateOptions struct {
	Count  int                `json:"count,omitzero"`
	Tags   []string           `json:"tags,omitzero"`
	Labels *LKENodePoolLabels `json:"labels,omitzero"`
	Taints []LKENodePoolTaint `json:"taints,omitzero"`
	Label  *string            `json:"label,omitzero"`

	Autoscaler *LKENodePoolAutoscaler `json:"autoscaler,omitzero"`
	FirewallID *int                   `json:"firewall_id,omitzero"`

	// K8sVersion and UpdateStrategy only works for LKE Enterprise to support node pool upgrades.
	// It may not currently be available to all users and is under v4beta.
	K8sVersion     *string                    `json:"k8s_version,omitzero"`
	UpdateStrategy *LKENodePoolUpdateStrategy `json:"update_strategy,omitzero"`
}

LKENodePoolUpdateOptions fields are those accepted by UpdateLKENodePoolUpdate

type LKENodePoolUpdateStrategy

type LKENodePoolUpdateStrategy string

LKENodePoolUpdateStrategy constants start with LKENodePool and include LKE Node Pool upgrade strategy values

const (
	LKENodePoolRollingUpdate LKENodePoolUpdateStrategy = "rolling_update"
	LKENodePoolOnRecycle     LKENodePoolUpdateStrategy = "on_recycle"
)

LKENodePoolUpdateStrategy constants describe the available upgrade strategies for LKE Enterprise only

type LKETierVersion

type LKETierVersion struct {
	ID   string         `json:"id"`
	Tier LKEVersionTier `json:"tier"`
}

LKETierVersion fields are those returned by GetLKETierVersion NOTE: It may not currently be available to all users and can only be used with v4beta.

type LKEType

type LKEType struct {
	// contains filtered or unexported fields
}

LKEType represents a single valid LKE type. NOTE: This typically corresponds to the availability of a cluster's control plane.

type LKETypePrice

type LKETypePrice struct {
	// contains filtered or unexported fields
}

LKETypePrice represents the base hourly and monthly prices for an LKE type entry.

type LKETypeRegionPrice

type LKETypeRegionPrice struct {
	// contains filtered or unexported fields
}

LKETypeRegionPrice represents the regional hourly and monthly prices for an LKE type entry.

type LKEVersion

type LKEVersion struct {
	ID string `json:"id"`
}

LKEVersion fields are those returned by GetLKEVersion

type LKEVersionTier

type LKEVersionTier string

LKEVersionTier enums represents different LKE tiers

const (
	LKEVersionStandard   LKEVersionTier = "standard"
	LKEVersionEnterprise LKEVersionTier = "enterprise"
)

LKEVersionTier enums start with LKEVersion

type LastLogin

type LastLogin struct {
	LoginDatetime *time.Time `json:"-"`
	Status        string     `json:"status"`
}

LastLogin represents a LastLogin object

func (*LastLogin) UnmarshalJSON

func (ll *LastLogin) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type LinodeAddons

type LinodeAddons struct {
	Backups *LinodeBackupsAddon `json:"backups"`
}

LinodeAddons represent the linode addons object

type LinodeBackupsAddon

type LinodeBackupsAddon struct {
	Price        *LinodePrice        `json:"price"`
	RegionPrices []LinodeRegionPrice `json:"region_prices"`
}

LinodeBackupsAddon represents a linode backups addon object

type LinodeEntity

type LinodeEntity struct {
	ID    int    `json:"id"`
	Label string `json:"label"`
	Type  string `json:"type"`
}

LinodeEntity is anything in Linode with IAM Permissions

type LinodeIPAssignment

type LinodeIPAssignment struct {
	Address  string `json:"address"`
	LinodeID int    `json:"linode_id"`
}

LinodeIPAssignment stores an assignment between an IP address and a Linode instance.

type LinodeInterface

type LinodeInterface struct {
	ID           int                    `json:"id"`
	Version      int                    `json:"version"`
	MACAddress   string                 `json:"mac_address"`
	Created      *time.Time             `json:"-"`
	Updated      *time.Time             `json:"-"`
	DefaultRoute *InterfaceDefaultRoute `json:"default_route"`
	Public       *PublicInterface       `json:"public"`
	VPC          *VPCInterface          `json:"vpc"`
	VLAN         *VLANInterface         `json:"vlan"`
}

func (*LinodeInterface) UnmarshalJSON

func (i *LinodeInterface) UnmarshalJSON(b []byte) error

type LinodeInterfaceCreateOptions

type LinodeInterfaceCreateOptions struct {
	FirewallID   *int                                `json:"firewall_id,omitzero"`
	DefaultRoute *InterfaceDefaultRouteCreateOptions `json:"default_route,omitzero"`
	Public       *PublicInterfaceCreateOptions       `json:"public,omitzero"`
	VPC          *VPCInterfaceCreateOptions          `json:"vpc,omitzero"`
	VLAN         *VLANInterfaceCreateOptions         `json:"vlan,omitzero"`
}

type LinodeInterfaceUpdateOptions

type LinodeInterfaceUpdateOptions struct {
	DefaultRoute *InterfaceDefaultRouteUpdateOptions `json:"default_route,omitzero"`
	Public       *PublicInterfaceCreateOptions       `json:"public,omitzero"`
	VPC          *VPCInterfaceUpdateOptions          `json:"vpc,omitzero"`
}

type LinodeInterfacesUpgrade

type LinodeInterfacesUpgrade struct {
	ConfigID   int               `json:"config_id"`
	DryRun     bool              `json:"dry_run"`
	Interfaces []LinodeInterface `json:"interfaces"`
}

type LinodeInterfacesUpgradeOptions

type LinodeInterfacesUpgradeOptions struct {
	ConfigID *int  `json:"config_id,omitzero"`
	DryRun   *bool `json:"dry_run,omitzero"`
}

type LinodeKernel

type LinodeKernel struct {
	ID           string     `json:"id"`
	Label        string     `json:"label"`
	Version      string     `json:"version"`
	Architecture string     `json:"architecture"`
	Deprecated   bool       `json:"deprecated"`
	KVM          bool       `json:"kvm"`
	PVOPS        bool       `json:"pvops"`
	Built        *time.Time `json:"-"`
}

LinodeKernel represents a Linode Instance kernel object

func (*LinodeKernel) UnmarshalJSON

func (i *LinodeKernel) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type LinodePrice

type LinodePrice struct {
	Hourly  float32 `json:"hourly"`
	Monthly float32 `json:"monthly"`
}

LinodePrice represents a linode type price object

type LinodeRegionPrice

type LinodeRegionPrice struct {
	ID      string  `json:"id"`
	Hourly  float32 `json:"hourly"`
	Monthly float32 `json:"monthly"`
}

LinodeRegionPrice represents an individual type or addon price exception for a region.

type LinodeType

type LinodeType struct {
	ID                 string              `json:"id"`
	Disk               int                 `json:"disk"`
	Class              LinodeTypeClass     `json:"class"` // enum: nanode, standard, highmem, dedicated, gpu
	Price              *LinodePrice        `json:"price"`
	Label              string              `json:"label"`
	Addons             *LinodeAddons       `json:"addons"`
	RegionPrices       []LinodeRegionPrice `json:"region_prices"`
	NetworkOut         int                 `json:"network_out"`
	Memory             int                 `json:"memory"`
	Transfer           int                 `json:"transfer"`
	VCPUs              int                 `json:"vcpus"`
	GPUs               int                 `json:"gpus"`
	Successor          string              `json:"successor"`
	AcceleratedDevices int                 `json:"accelerated_devices"`
}

LinodeType represents a linode type object

type LinodeTypeClass

type LinodeTypeClass string

LinodeTypeClass constants start with Class and include Linode API Instance Type Classes

const (
	ClassNanode    LinodeTypeClass = "nanode"
	ClassStandard  LinodeTypeClass = "standard"
	ClassHighmem   LinodeTypeClass = "highmem"
	ClassDedicated LinodeTypeClass = "dedicated"
	ClassGPU       LinodeTypeClass = "gpu"
)

LinodeTypeClass constants are the Instance Type Classes that an Instance Type can be assigned

type LinodesAssignIPsOptions

type LinodesAssignIPsOptions struct {
	Region string `json:"region"`

	Assignments []LinodeIPAssignment `json:"assignments"`
}

LinodesAssignIPsOptions fields are those accepted by InstancesAssignIPs.

type LishAuthMethod

type LishAuthMethod string

LishAuthMethod constants start with AuthMethod and include Linode API Lish Authentication Methods

const (
	AuthMethodPasswordKeys LishAuthMethod = "password_keys"
	AuthMethodKeysOnly     LishAuthMethod = "keys_only"
	AuthMethodDisabled     LishAuthMethod = "disabled"
)

LishAuthMethod constants are the methods of authentication allowed when connecting via Lish

type ListIPAddressesQuery

type ListIPAddressesQuery struct {
	SkipIPv6RDNS bool `query:"skip_ipv6_rdns"`
}

ListIPAddressesQuery fields are those accepted as query params for the ListIPAddresses function.

type ListOptions

type ListOptions struct {
	*PageOptions
	PageSize int    `json:"page_size"`
	Filter   string `json:"filter"`

	// QueryParams allows for specifying custom query parameters on list endpoint
	// calls. QueryParams should be an instance of a struct containing fields with
	// the `query` tag.
	QueryParams any
}

ListOptions are the pagination and filtering (TODO) parameters for endpoints nolint

func NewListOptions

func NewListOptions(page int, filter string) *ListOptions

NewListOptions simplified construction of ListOptions using only the two writable properties, Page and Filter

func (ListOptions) Hash

func (l ListOptions) Hash() (string, error)

Hash returns the sha256 hash of the provided ListOptions. This is necessary for caching purposes.

type LoadConfigOptions

type LoadConfigOptions struct {
	Path            string
	Profile         string
	SkipLoadProfile bool
}

type Lock

type Lock struct {
	ID       int          `json:"id"`
	LockType LockType     `json:"lock_type"`
	Entity   LockedEntity `json:"entity"`
}

Lock represents a resource lock NOTE: Locks can only be used with v4beta.

type LockCreateOptions

type LockCreateOptions struct {
	EntityType EntityType `json:"entity_type"`
	EntityID   int        `json:"entity_id"`
	LockType   LockType   `json:"lock_type"`
}

LockCreateOptions fields are those accepted by CreateLock NOTE: Locks can only be used with v4beta.

type LockType

type LockType string

LockType represents the type of lock that can be applied to a resource NOTE: Locks can only be used with v4beta.

const (
	LockTypeCannotDelete                 LockType = "cannot_delete"
	LockTypeCannotDeleteWithSubresources LockType = "cannot_delete_with_subresources"
)

LockType enums

type LockedEntity

type LockedEntity struct {
	ID    int        `json:"id"`
	Type  EntityType `json:"type"`
	Label string     `json:"label"`
	URL   string     `json:"url"`
}

LockedEntity represents the entity that is locked NOTE: Locks can only be used with v4beta.

type Logger

type Logger interface {
	Errorf(format string, v ...any)
	Warnf(format string, v ...any)
	Debugf(format string, v ...any)
}

type Login

type Login struct {
	ID         int        `json:"id"`
	Datetime   *time.Time `json:"datetime"`
	IP         string     `json:"ip"`
	Restricted bool       `json:"restricted"`
	Username   string     `json:"username"`
	Status     string     `json:"status"`
}

func (*Login) UnmarshalJSON

func (i *Login) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type LongviewClient

type LongviewClient struct {
	ID          int        `json:"id"`
	APIKey      string     `json:"api_key"`
	Created     *time.Time `json:"-"`
	InstallCode string     `json:"install_code"`
	Label       string     `json:"label"`
	Updated     *time.Time `json:"-"`
	Apps        struct {
		Apache any `json:"apache"`
		MySQL  any `json:"mysql"`
		NginX  any `json:"nginx"`
	} `json:"apps"`
}

LongviewClient represents a LongviewClient object

func (*LongviewClient) UnmarshalJSON

func (i *LongviewClient) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type LongviewClientCreateOptions

type LongviewClientCreateOptions struct {
	Label string `json:"label"`
}

LongviewClientCreateOptions is an options struct used when Creating a Longview Client

type LongviewClientUpdateOptions

type LongviewClientUpdateOptions struct {
	Label string `json:"label"`
}

LongviewClientUpdateOptions is an options struct used when Updating a Longview Client

type LongviewPlan

type LongviewPlan struct {
	ID              string `json:"id"`
	Label           string `json:"label"`
	ClientsIncluded int    `json:"clients_included"`
	Price           struct {
		Hourly  float64 `json:"hourly"`
		Monthly float64 `json:"monthly"`
	} `json:"price"`
}

LongviewPlan represents a Longview Plan object

type LongviewPlanUpdateOptions

type LongviewPlanUpdateOptions struct {
	LongviewSubscription string `json:"longview_subscription"`
}

LongviewPlanUpdateOptions is an options struct used when Updating a Longview Plan

type LongviewSubscription

type LongviewSubscription struct {
	ID              string       `json:"id"`
	Label           string       `json:"label"`
	ClientsIncluded int          `json:"clients_included"`
	Price           *LinodePrice `json:"price"`
}

LongviewSubscription represents a LongviewSubscription object

type MaintenancePolicy

type MaintenancePolicy struct {
	Slug                  string `json:"slug"`
	Label                 string `json:"label"`
	Description           string `json:"description"`
	Type                  string `json:"type"`
	NotificationPeriodSec int    `json:"notification_period_sec"`
	IsDefault             bool   `json:"is_default"`
}

type MaxAllowedPacket

type MaxAllowedPacket struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type MaxFilesPerProcess

type MaxFilesPerProcess struct {
	Description     string `json:"description"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type MaxHeapTableSize

type MaxHeapTableSize struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type MaxLocksPerTransaction

type MaxLocksPerTransaction struct {
	Description     string `json:"description"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type MaxLogicalReplicationWorkers

type MaxLogicalReplicationWorkers struct {
	Description     string `json:"description"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type MaxParallelWorkers

type MaxParallelWorkers struct {
	Description     string `json:"description"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type MaxParallelWorkersPerGather

type MaxParallelWorkersPerGather struct {
	Description     string `json:"description"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type MaxPredLocksPerTransaction

type MaxPredLocksPerTransaction struct {
	Description     string `json:"description"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type MaxReplicationSlots

type MaxReplicationSlots struct {
	Description     string `json:"description"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type MaxSlotWALKeepSize

type MaxSlotWALKeepSize struct {
	Description     string `json:"description"`
	Maximum         int32  `json:"maximum"`
	Minimum         int32  `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type MaxStackDepth

type MaxStackDepth struct {
	Description     string `json:"description"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type MaxStandbyArchiveDelay

type MaxStandbyArchiveDelay struct {
	Description     string `json:"description"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type MaxStandbyStreamingDelay

type MaxStandbyStreamingDelay struct {
	Description     string `json:"description"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type MaxWALSenders

type MaxWALSenders struct {
	Description     string `json:"description"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type MaxWorkerProcesses

type MaxWorkerProcesses struct {
	Description     string `json:"description"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type MetricAbsoluteTimeDuration

type MetricAbsoluteTimeDuration struct {
	Start time.Time `json:"start"`
	End   time.Time `json:"end"`
}

MetricAbsoluteTimeDuration specifies an absolute time range for data queries

type MetricFilter

type MetricFilter struct {
	DimensionLabel string               `json:"dimension_label"`
	Operator       MetricFilterOperator `json:"operator"`
	Value          string               `json:"value"`
}

MetricFilter describes individual objects that define dimension filters for the query.

type MetricFilterOperator

type MetricFilterOperator string
const (
	MetricFilterOperatorEq         MetricFilterOperator = "eq"
	MetricFilterOperatorNeq        MetricFilterOperator = "neq"
	MetricFilterOperatorStartsWith MetricFilterOperator = "startswith"
	MetricFilterOperatorEndsWith   MetricFilterOperator = "endswith"
	MetricFilterOperatorIn         MetricFilterOperator = "in"
)

type MetricRelativeTimeDuration

type MetricRelativeTimeDuration struct {
	Unit  MetricTimeUnit `json:"unit"`
	Value int            `json:"value"`
}

MetricRelativeTimeDuration specifies a relative time duration for data queries

type MetricTimeGranularity

type MetricTimeGranularity struct {
	Unit  MetricTimeUnit `json:"unit"`
	Value int            `json:"value"`
}

MetricTimeGranularity allows for an optional time granularity setting for metric data.

type MetricTimeUnit

type MetricTimeUnit string
const (
	MetricTimeUnitSec  MetricTimeUnit = "sec"
	MetricTimeUnitMin  MetricTimeUnit = "min"
	MetricTimeUnitHr   MetricTimeUnit = "hr"
	MetricTimeUnitDays MetricTimeUnit = "days"
)

type MetricType

type MetricType string

MetricType is an enum object for MetricType

const (
	MetricTypeCounter   MetricType = "counter"
	MetricTypeHistogram MetricType = "histogram"
	MetricTypeGauge     MetricType = "gauge"
	MetricTypeSummary   MetricType = "summary"
)

type MetricUnit

type MetricUnit string

MetricUnit is an enum object for Unit

const (
	MetricUnitCount              MetricUnit = "count"
	MetricUnitPercent            MetricUnit = "percent"
	MetricUnitByte               MetricUnit = "byte"
	MetricUnitSecond             MetricUnit = "second"
	MetricUnitBitsPerSecond      MetricUnit = "bits_per_second"
	MetricUnitMillisecond        MetricUnit = "millisecond"
	MetricUnitKB                 MetricUnit = "KB"
	MetricUnitMB                 MetricUnit = "MB"
	MetricUnitGB                 MetricUnit = "GB"
	MetricUnitRate               MetricUnit = "rate"
	MetricUnitBytesPerSecond     MetricUnit = "bytes_per_second"
	MetricUnitPercentile         MetricUnit = "percentile"
	MetricUnitRatio              MetricUnit = "ratio"
	MetricUnitOpsPerSecond       MetricUnit = "ops_per_second"
	MetricUnitIops               MetricUnit = "iops"
	MetricUnitKiloBytesPerSecond MetricUnit = "kilo_bytes_per_second"
	MetricUnitSessionsPerSecond  MetricUnit = "sessions_per_second"
	MetricUnitPacketsPerSecond   MetricUnit = "packets_per_second"
	MetricUnitKiloBitsPerSecond  MetricUnit = "kilo_bits_per_second"
)

type MonitorClient

type MonitorClient struct {
	// contains filtered or unexported fields
}

MonitorClient is a wrapper around the http client

func NewMonitorClient

func NewMonitorClient(hc *http.Client) (mClient MonitorClient)

NewMonitorClient is the entry point for user to create a new MonitorClient It utilizes default values and looks for environment variables to initialize a MonitorClient.

func (*MonitorClient) FetchEntityMetrics

func (mc *MonitorClient) FetchEntityMetrics(ctx context.Context, serviceType string, opts *EntityMetricsFetchOptions) (*EntityMetrics, error)

FetchEntityMetrics returns metrics information for the individual entities within a specific service type

func (*MonitorClient) SetAPIVersion

func (mc *MonitorClient) SetAPIVersion(apiVersion string) *MonitorClient

SetAPIVersion is the helper function to set api version

func (*MonitorClient) SetBaseURL

func (mc *MonitorClient) SetBaseURL(baseURL string) *MonitorClient

SetBaseURL is the helper function to set base url

func (*MonitorClient) SetDebug

func (mc *MonitorClient) SetDebug(debug bool) *MonitorClient

SetDebug sets the debug on the client

func (*MonitorClient) SetHeader

func (mc *MonitorClient) SetHeader(name, value string)

SetHeader sets a custom header to be used in all API requests made with the current client. NOTE: Some headers may be overridden by the individual request functions.

func (*MonitorClient) SetLogger

func (mc *MonitorClient) SetLogger(logger Logger) *MonitorClient

SetLogger allows the user to override the output logger for debug logs.

func (*MonitorClient) SetRootCertificate

func (mc *MonitorClient) SetRootCertificate(certPath string) error

SetRootCertificate adds a root certificate to the underlying TLS client config.

func (*MonitorClient) SetToken

func (mc *MonitorClient) SetToken(token string) *MonitorClient

SetToken sets the API token for all requests from this client

func (*MonitorClient) SetUserAgent

func (mc *MonitorClient) SetUserAgent(ua string) *MonitorClient

SetUserAgent sets a custom user-agent for HTTP requests

type MonitorDashboard

type MonitorDashboard struct {
	ID          int               `json:"id"`
	Type        DashboardType     `json:"type"`
	ServiceType ServiceType       `json:"service_type"`
	Label       string            `json:"label"`
	Created     *time.Time        `json:"-"`
	Updated     *time.Time        `json:"-"`
	Widgets     []DashboardWidget `json:"widgets"`
}

MonitorDashboard represents an ACLP Dashboard object

func (*MonitorDashboard) UnmarshalJSON

func (i *MonitorDashboard) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type MonitorDimension

type MonitorDimension struct {
	DimensionLabel string   `json:"dimension_label"`
	Label          string   `json:"label"`
	Values         []string `json:"values"`
}

MonitorDimension represents an ACLP MonitorDimension object

type MonitorMetricsDefinition

type MonitorMetricsDefinition struct {
	AvailableAggregateFunctions []AggregateFunction `json:"available_aggregate_functions"`
	Dimensions                  []MonitorDimension  `json:"dimensions"`
	IsAlertable                 bool                `json:"is_alertable"`
	Label                       string              `json:"label"`
	Metric                      string              `json:"metric"`
	MetricType                  MetricType          `json:"metric_type"`
	ScrapeInterval              string              `json:"scrape_interval"`
	Unit                        MetricUnit          `json:"unit"`
}

MonitorMetricsDefinition represents an ACLP MetricsDefinition object

type MonitorService

type MonitorService struct {
	Label       string               `json:"label"`
	ServiceType string               `json:"service_type"`
	Alert       *MonitorServiceAlert `json:"alert"`
}

MonitorService represents a MonitorService object

type MonitorServiceAlert

type MonitorServiceAlert struct {
	PollingIntervalSeconds  []int    `json:"polling_interval_seconds"`
	EvaluationPeriodSeconds []int    `json:"evaluation_period_seconds"`
	Scope                   []string `json:"scope"`
}

MonitorServiceAlert represents the alert configuration for a monitor service

type MonitorServiceToken

type MonitorServiceToken struct {
	Token string `json:"token"`
}

MonitorServiceToken represents a MonitorServiceToken object

type MonitorTokenCreateOptions

type MonitorTokenCreateOptions struct {
	// EntityIDs are expected to be type "any" as different service_types have different variable type for their entity_ids. For example, Linode has "int" entity_ids whereas object storage has "string" as entity_ids.
	EntityIDs []any `json:"entity_ids"`
}

MonitorTokenCreateOptions contains create token options.

type MonthlyInstanceTransferStats

type MonthlyInstanceTransferStats struct {
	// The amount of inbound public network traffic received by this Linode, in bytes, for a specific year/month.
	BytesIn uint64 `json:"bytes_in"`

	// The amount of outbound public network traffic sent by this Linode, in bytes, for a specific year/month.
	BytesOut uint64 `json:"bytes_out"`

	// The total amount of public network traffic sent and received by this Linode, in bytes, for a specific year/month.
	BytesTotal uint64 `json:"bytes_total"`
}

MonthlyInstanceTransferStats pool stats for a Linode Instance network transfer statistics for a specific month

type MySQLCreateOptions

type MySQLCreateOptions struct {
	Label       string   `json:"label"`
	Region      string   `json:"region"`
	Type        string   `json:"type"`
	Engine      string   `json:"engine"`
	AllowList   []string `json:"allow_list,omitzero"`
	ClusterSize int      `json:"cluster_size,omitzero"`

	Fork           *DatabaseFork              `json:"fork,omitzero"`
	EngineConfig   *MySQLDatabaseEngineConfig `json:"engine_config,omitzero"`
	PrivateNetwork *DatabasePrivateNetwork    `json:"private_network,omitzero"`
}

MySQLCreateOptions fields are used when creating a new MySQL Database

type MySQLDatabase

type MySQLDatabase struct {
	ID          int              `json:"id"`
	Status      DatabaseStatus   `json:"status"`
	Label       string           `json:"label"`
	Hosts       DatabaseHost     `json:"hosts"`
	Region      string           `json:"region"`
	Type        string           `json:"type"`
	Engine      string           `json:"engine"`
	Version     string           `json:"version"`
	ClusterSize int              `json:"cluster_size"`
	Platform    DatabasePlatform `json:"platform"`

	// Members has dynamic keys so it is a map
	Members map[string]DatabaseMemberType `json:"members"`

	SSLConnection     bool                      `json:"ssl_connection"`
	Encrypted         bool                      `json:"encrypted"`
	AllowList         []string                  `json:"allow_list"`
	Created           *time.Time                `json:"-"`
	Updated           *time.Time                `json:"-"`
	Updates           DatabaseMaintenanceWindow `json:"updates"`
	Fork              *DatabaseFork             `json:"fork"`
	OldestRestoreTime *time.Time                `json:"-"`
	UsedDiskSizeGB    int                       `json:"used_disk_size_gb"`
	TotalDiskSizeGB   int                       `json:"total_disk_size_gb"`
	Port              int                       `json:"port"`

	EngineConfig   MySQLDatabaseEngineConfig `json:"engine_config"`
	PrivateNetwork *DatabasePrivateNetwork   `json:"private_network,omitzero"`
}

A MySQLDatabase is an instance of Linode MySQL Managed Databases

func (*MySQLDatabase) UnmarshalJSON

func (d *MySQLDatabase) UnmarshalJSON(b []byte) error

type MySQLDatabaseConfigInfo

type MySQLDatabaseConfigInfo struct {
	MySQL                 MySQLDatabaseConfigInfoMySQL                 `json:"mysql"`
	BinlogRetentionPeriod MySQLDatabaseConfigInfoBinlogRetentionPeriod `json:"binlog_retention_period"`
}

type MySQLDatabaseConfigInfoBinlogRetentionPeriod

type MySQLDatabaseConfigInfoBinlogRetentionPeriod struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type MySQLDatabaseConfigInfoMySQL

type MySQLDatabaseConfigInfoMySQL struct {
	ConnectTimeout               ConnectTimeout               `json:"connect_timeout"`
	DefaultTimeZone              DefaultTimeZone              `json:"default_time_zone"`
	GroupConcatMaxLen            GroupConcatMaxLen            `json:"group_concat_max_len"`
	InformationSchemaStatsExpiry InformationSchemaStatsExpiry `json:"information_schema_stats_expiry"`
	InnoDBChangeBufferMaxSize    InnoDBChangeBufferMaxSize    `json:"innodb_change_buffer_max_size"`
	InnoDBFlushNeighbors         InnoDBFlushNeighbors         `json:"innodb_flush_neighbors"`
	InnoDBFTMinTokenSize         InnoDBFTMinTokenSize         `json:"innodb_ft_min_token_size"`
	InnoDBFTServerStopwordTable  InnoDBFTServerStopwordTable  `json:"innodb_ft_server_stopword_table"`
	InnoDBLockWaitTimeout        InnoDBLockWaitTimeout        `json:"innodb_lock_wait_timeout"`
	InnoDBLogBufferSize          InnoDBLogBufferSize          `json:"innodb_log_buffer_size"`
	InnoDBOnlineAlterLogMaxSize  InnoDBOnlineAlterLogMaxSize  `json:"innodb_online_alter_log_max_size"`
	InnoDBReadIOThreads          InnoDBReadIOThreads          `json:"innodb_read_io_threads"`
	InnoDBRollbackOnTimeout      InnoDBRollbackOnTimeout      `json:"innodb_rollback_on_timeout"`
	InnoDBThreadConcurrency      InnoDBThreadConcurrency      `json:"innodb_thread_concurrency"`
	InnoDBWriteIOThreads         InnoDBWriteIOThreads         `json:"innodb_write_io_threads"`
	InteractiveTimeout           InteractiveTimeout           `json:"interactive_timeout"`
	InternalTmpMemStorageEngine  InternalTmpMemStorageEngine  `json:"internal_tmp_mem_storage_engine"`
	MaxAllowedPacket             MaxAllowedPacket             `json:"max_allowed_packet"`
	MaxHeapTableSize             MaxHeapTableSize             `json:"max_heap_table_size"`
	NetBufferLength              NetBufferLength              `json:"net_buffer_length"`
	NetReadTimeout               NetReadTimeout               `json:"net_read_timeout"`
	NetWriteTimeout              NetWriteTimeout              `json:"net_write_timeout"`
	SortBufferSize               SortBufferSize               `json:"sort_buffer_size"`
	SQLMode                      SQLMode                      `json:"sql_mode"`
	SQLRequirePrimaryKey         SQLRequirePrimaryKey         `json:"sql_require_primary_key"`
	TmpTableSize                 TmpTableSize                 `json:"tmp_table_size"`
	WaitTimeout                  WaitTimeout                  `json:"wait_timeout"`
}

type MySQLDatabaseCredential

type MySQLDatabaseCredential struct {
	Username string `json:"username"`
	Password string `json:"password"`
}

MySQLDatabaseCredential is the Root Credentials to access the Linode Managed Database

type MySQLDatabaseEngineConfig

type MySQLDatabaseEngineConfig struct {
	MySQL                 *MySQLDatabaseEngineConfigMySQL `json:"mysql,omitzero"`
	BinlogRetentionPeriod *int                            `json:"binlog_retention_period,omitzero"`
}

type MySQLDatabaseEngineConfigMySQL

type MySQLDatabaseEngineConfigMySQL struct {
	ConnectTimeout               *int     `json:"connect_timeout,omitzero"`
	DefaultTimeZone              *string  `json:"default_time_zone,omitzero"`
	GroupConcatMaxLen            *float64 `json:"group_concat_max_len,omitzero"`
	InformationSchemaStatsExpiry *int     `json:"information_schema_stats_expiry,omitzero"`
	InnoDBChangeBufferMaxSize    *int     `json:"innodb_change_buffer_max_size,omitzero"`
	InnoDBFlushNeighbors         *int     `json:"innodb_flush_neighbors,omitzero"`
	InnoDBFTMinTokenSize         *int     `json:"innodb_ft_min_token_size,omitzero"`
	InnoDBFTServerStopwordTable  **string `json:"innodb_ft_server_stopword_table,omitzero"`
	InnoDBLockWaitTimeout        *int     `json:"innodb_lock_wait_timeout,omitzero"`
	InnoDBLogBufferSize          *int     `json:"innodb_log_buffer_size,omitzero"`
	InnoDBOnlineAlterLogMaxSize  *int     `json:"innodb_online_alter_log_max_size,omitzero"`
	InnoDBReadIOThreads          *int     `json:"innodb_read_io_threads,omitzero"`
	InnoDBRollbackOnTimeout      *bool    `json:"innodb_rollback_on_timeout,omitzero"`
	InnoDBThreadConcurrency      *int     `json:"innodb_thread_concurrency,omitzero"`
	InnoDBWriteIOThreads         *int     `json:"innodb_write_io_threads,omitzero"`
	InteractiveTimeout           *int     `json:"interactive_timeout,omitzero"`
	InternalTmpMemStorageEngine  *string  `json:"internal_tmp_mem_storage_engine,omitzero"`
	MaxAllowedPacket             *int     `json:"max_allowed_packet,omitzero"`
	MaxHeapTableSize             *int     `json:"max_heap_table_size,omitzero"`
	NetBufferLength              *int     `json:"net_buffer_length,omitzero"`
	NetReadTimeout               *int     `json:"net_read_timeout,omitzero"`
	NetWriteTimeout              *int     `json:"net_write_timeout,omitzero"`
	SortBufferSize               *int     `json:"sort_buffer_size,omitzero"`
	SQLMode                      *string  `json:"sql_mode,omitzero"`
	SQLRequirePrimaryKey         *bool    `json:"sql_require_primary_key,omitzero"`
	TmpTableSize                 *int     `json:"tmp_table_size,omitzero"`
	WaitTimeout                  *int     `json:"wait_timeout,omitzero"`
}

type MySQLDatabaseMaintenanceWindow

type MySQLDatabaseMaintenanceWindow = DatabaseMaintenanceWindow

type MySQLDatabaseSSL

type MySQLDatabaseSSL struct {
	CACertificate []byte `json:"ca_certificate"`
}

MySQLDatabaseSSL is the SSL Certificate to access the Linode Managed MySQL Database

type MySQLDatabaseTarget

type MySQLDatabaseTarget string
const (
	MySQLDatabaseTargetPrimary   MySQLDatabaseTarget = "primary"
	MySQLDatabaseTargetSecondary MySQLDatabaseTarget = "secondary"
)

type MySQLUpdateOptions

type MySQLUpdateOptions struct {
	Label          string                     `json:"label,omitzero"`
	AllowList      []string                   `json:"allow_list,omitzero"`
	Updates        *DatabaseMaintenanceWindow `json:"updates,omitzero"`
	Type           string                     `json:"type,omitzero"`
	ClusterSize    int                        `json:"cluster_size,omitzero"`
	Version        string                     `json:"version,omitzero"`
	EngineConfig   *MySQLDatabaseEngineConfig `json:"engine_config,omitzero"`
	PrivateNetwork **DatabasePrivateNetwork   `json:"private_network,omitzero"`
}

MySQLUpdateOptions fields are used when altering the existing MySQL Database

type NetBufferLength

type NetBufferLength struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type NetReadTimeout

type NetReadTimeout struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type NetWriteTimeout

type NetWriteTimeout struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type NetworkAddresses

type NetworkAddresses struct {
	IPv4 []string `json:"ipv4,omitzero"`
	IPv6 []string `json:"ipv6,omitzero"`
}

NetworkAddresses are arrays of ipv4 and v6 addresses

type NetworkProtocol

type NetworkProtocol string

NetworkProtocol enum type

const (
	TCP     NetworkProtocol = "TCP"
	UDP     NetworkProtocol = "UDP"
	ICMP    NetworkProtocol = "ICMP"
	IPENCAP NetworkProtocol = "IPENCAP"
)

NetworkProtocol enum values

type NetworkTransferPrice

type NetworkTransferPrice struct {
	// contains filtered or unexported fields
}

NetworkTransferPrice represents a single valid network transfer price.

type NetworkTransferTypePrice

type NetworkTransferTypePrice struct {
	// contains filtered or unexported fields
}

NetworkTransferTypePrice represents the base hourly and monthly prices for a network transfer price entry.

type NetworkTransferTypeRegionPrice

type NetworkTransferTypeRegionPrice struct {
	// contains filtered or unexported fields
}

NetworkTransferTypeRegionPrice represents the regional hourly and monthly prices for a network transfer price entry.

type NodeBalancer

type NodeBalancer struct {
	// This NodeBalancer's unique ID.
	ID int `json:"id"`
	// This NodeBalancer's label. These must be unique on your Account.
	Label *string `json:"label"`
	// The Region where this NodeBalancer is located. NodeBalancers only support backends in the same Region.
	Region string `json:"region"`
	// This NodeBalancer's hostname, ending with .nodebalancer.linode.com
	Hostname *string `json:"hostname"`
	// This NodeBalancer's public IPv4 address.
	IPv4 *string `json:"ipv4"`
	// This NodeBalancer's public IPv6 address.
	IPv6 *string `json:"ipv6"`
	// Throttle connections per second (0-20). Set to 0 (zero) to disable throttling.
	ClientConnThrottle int `json:"client_conn_throttle"`

	// ClientUDPSessThrottle throttles UDP sessions per second. Set to 0 (zero) to disable throttling.
	// NOTE: ClientUDPSessThrottle may not currently be available to all users.
	ClientUDPSessThrottle int `json:"client_udp_sess_throttle"`

	// Information about the amount of transfer this NodeBalancer has had so far this month.
	Transfer NodeBalancerTransfer `json:"transfer"`
	// This NodeBalancer's plan Type
	Type NodeBalancerPlanType `json:"type"`

	// An array of tags applied to this object. Tags are for organizational purposes only.
	Tags []string `json:"tags"`

	// This NodeBalancer's related LKE cluster, if any. The value is null if this NodeBalancer is not related to an LKE cluster.
	LKECluster *NodeBalancerLKECluster `json:"lke_cluster"`

	// An array of locks applied to this NodeBalancer for deletion protection.
	// Locks prevent the NodeBalancer or its subresources from being deleted.
	// NOTE: Locks can only be used with v4beta.
	Locks []LockType `json:"locks"`

	Created *time.Time `json:"-"`
	Updated *time.Time `json:"-"`
}

NodeBalancer represents a NodeBalancer object

func (NodeBalancer) GetCreateOptions

func (i NodeBalancer) GetCreateOptions() NodeBalancerCreateOptions

GetCreateOptions converts a NodeBalancer to NodeBalancerCreateOptions for use in CreateNodeBalancer

func (NodeBalancer) GetUpdateOptions

func (i NodeBalancer) GetUpdateOptions() NodeBalancerUpdateOptions

GetUpdateOptions converts a NodeBalancer to NodeBalancerUpdateOptions for use in UpdateNodeBalancer

func (*NodeBalancer) UnmarshalJSON

func (i *NodeBalancer) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type NodeBalancerConfig

type NodeBalancerConfig struct {
	ID            int                 `json:"id"`
	Port          int                 `json:"port"`
	Protocol      ConfigProtocol      `json:"protocol"`
	ProxyProtocol ConfigProxyProtocol `json:"proxy_protocol"`
	Algorithm     ConfigAlgorithm     `json:"algorithm"`
	Stickiness    ConfigStickiness    `json:"stickiness"`
	Check         ConfigCheck         `json:"check"`
	CheckInterval int                 `json:"check_interval"`
	CheckAttempts int                 `json:"check_attempts"`
	CheckPath     string              `json:"check_path"`
	CheckBody     string              `json:"check_body"`
	CheckPassive  bool                `json:"check_passive"`
	CheckTimeout  int                 `json:"check_timeout"`

	// NOTE: UDPCheckPort may not currently be available to all users.
	UDPCheckPort int `json:"udp_check_port"`

	// NOTE: UDPSessionTimeout may not currently be available to all users.
	UDPSessionTimeout int `json:"udp_session_timeout"`

	CipherSuite    ConfigCipher            `json:"cipher_suite"`
	NodeBalancerID int                     `json:"nodebalancer_id"`
	SSLCommonName  string                  `json:"ssl_commonname"`
	SSLFingerprint string                  `json:"ssl_fingerprint"`
	SSLCert        string                  `json:"ssl_cert"`
	SSLKey         string                  `json:"ssl_key"`
	NodesStatus    *NodeBalancerNodeStatus `json:"nodes_status"`
}

NodeBalancerConfig objects allow a NodeBalancer to accept traffic on a new port

func (NodeBalancerConfig) GetCreateOptions

GetCreateOptions converts a NodeBalancerConfig to NodeBalancerConfigCreateOptions for use in CreateNodeBalancerConfig

func (NodeBalancerConfig) GetRebuildOptions

GetRebuildOptions converts a NodeBalancerConfig to NodeBalancerConfigRebuildOptions for use in RebuildNodeBalancerConfig

func (NodeBalancerConfig) GetUpdateOptions

GetUpdateOptions converts a NodeBalancerConfig to NodeBalancerConfigUpdateOptions for use in UpdateNodeBalancerConfig

type NodeBalancerConfigCreateOptions

type NodeBalancerConfigCreateOptions struct {
	Port          int                 `json:"port"`
	Protocol      ConfigProtocol      `json:"protocol,omitzero"`
	ProxyProtocol ConfigProxyProtocol `json:"proxy_protocol,omitzero"`
	Algorithm     ConfigAlgorithm     `json:"algorithm,omitzero"`
	Stickiness    ConfigStickiness    `json:"stickiness,omitzero"`
	Check         ConfigCheck         `json:"check,omitzero"`
	CheckInterval int                 `json:"check_interval,omitzero"`
	CheckAttempts int                 `json:"check_attempts,omitzero"`
	CheckPath     string              `json:"check_path,omitzero"`
	CheckBody     string              `json:"check_body,omitzero"`
	CheckPassive  *bool               `json:"check_passive,omitzero"`
	CheckTimeout  int                 `json:"check_timeout,omitzero"`

	// NOTE: UDPCheckPort may not currently be available to all users.
	UDPCheckPort *int `json:"udp_check_port,omitzero"`

	CipherSuite ConfigCipher                    `json:"cipher_suite,omitzero"`
	SSLCert     string                          `json:"ssl_cert,omitzero"`
	SSLKey      string                          `json:"ssl_key,omitzero"`
	Nodes       []NodeBalancerNodeCreateOptions `json:"nodes,omitzero"`
}

NodeBalancerConfigCreateOptions are permitted by CreateNodeBalancerConfig

type NodeBalancerConfigRebuildNodeOptions

type NodeBalancerConfigRebuildNodeOptions struct {
	NodeBalancerNodeCreateOptions

	ID int `json:"id,omitzero"`
}

NodeBalancerConfigRebuildNodeOptions represents a node defined when rebuilding a NodeBalancer config.

type NodeBalancerConfigRebuildOptions

type NodeBalancerConfigRebuildOptions struct {
	Port          int                 `json:"port"`
	Protocol      ConfigProtocol      `json:"protocol,omitzero"`
	ProxyProtocol ConfigProxyProtocol `json:"proxy_protocol,omitzero"`
	Algorithm     ConfigAlgorithm     `json:"algorithm,omitzero"`
	Stickiness    ConfigStickiness    `json:"stickiness,omitzero"`
	Check         ConfigCheck         `json:"check,omitzero"`
	CheckInterval int                 `json:"check_interval,omitzero"`
	CheckAttempts int                 `json:"check_attempts,omitzero"`
	CheckPath     string              `json:"check_path,omitzero"`
	CheckBody     string              `json:"check_body,omitzero"`
	CheckPassive  *bool               `json:"check_passive,omitzero"`
	CheckTimeout  int                 `json:"check_timeout,omitzero"`

	// NOTE: UDPCheckPort may not currently be available to all users.
	UDPCheckPort *int `json:"udp_check_port,omitzero"`

	CipherSuite ConfigCipher                           `json:"cipher_suite,omitzero"`
	SSLCert     string                                 `json:"ssl_cert,omitzero"`
	SSLKey      string                                 `json:"ssl_key,omitzero"`
	Nodes       []NodeBalancerConfigRebuildNodeOptions `json:"nodes"`
}

NodeBalancerConfigRebuildOptions used by RebuildNodeBalancerConfig

type NodeBalancerConfigUpdateOptions

type NodeBalancerConfigUpdateOptions NodeBalancerConfigCreateOptions

NodeBalancerConfigUpdateOptions are permitted by UpdateNodeBalancerConfig

type NodeBalancerCreateOptions

type NodeBalancerCreateOptions struct {
	Label              *string `json:"label,omitzero"`
	Region             string  `json:"region,omitzero"`
	ClientConnThrottle *int    `json:"client_conn_throttle,omitzero"`

	// NOTE: ClientUDPSessThrottle may not currently be available to all users.
	ClientUDPSessThrottle *int `json:"client_udp_sess_throttle,omitzero"`

	Configs    []NodeBalancerConfigCreateOptions `json:"configs,omitzero"`
	Tags       []string                          `json:"tags"`
	FirewallID int                               `json:"firewall_id,omitzero"`
	Type       NodeBalancerPlanType              `json:"type,omitzero"`
	VPCs       []NodeBalancerVPCOptions          `json:"vpcs,omitzero"`
	IPv4       *string                           `json:"ipv4,omitzero"`
}

NodeBalancerCreateOptions are the options permitted for CreateNodeBalancer

type NodeBalancerLKECluster

type NodeBalancerLKECluster struct {
	// The ID of the related LKE cluster.
	ID int `json:"id"`
	// The label of the related LKE cluster.
	Label string `json:"label"`
	// The type for LKE clusters.
	Type string `json:"type"`
	// The URL where you can access the related LKE cluster.
	URL string `json:"url"`
}

type NodeBalancerNode

type NodeBalancerNode struct {
	ID             int      `json:"id"`
	Address        string   `json:"address"`
	Label          string   `json:"label"`
	Status         string   `json:"status"`
	Weight         int      `json:"weight"`
	Mode           NodeMode `json:"mode"`
	ConfigID       int      `json:"config_id"`
	NodeBalancerID int      `json:"nodebalancer_id"`
	VPCConfigID    int      `json:"vpc_config_id"`
}

NodeBalancerNode objects represent a backend that can accept traffic for a NodeBalancer Config

func (NodeBalancerNode) GetCreateOptions

func (i NodeBalancerNode) GetCreateOptions() NodeBalancerNodeCreateOptions

GetCreateOptions converts a NodeBalancerNode to NodeBalancerNodeCreateOptions for use in CreateNodeBalancerNode

func (NodeBalancerNode) GetUpdateOptions

func (i NodeBalancerNode) GetUpdateOptions() NodeBalancerNodeUpdateOptions

GetUpdateOptions converts a NodeBalancerNode to NodeBalancerNodeUpdateOptions for use in UpdateNodeBalancerNode

type NodeBalancerNodeCreateOptions

type NodeBalancerNodeCreateOptions struct {
	Address  string   `json:"address"`
	Label    string   `json:"label"`
	Weight   int      `json:"weight,omitzero"`
	Mode     NodeMode `json:"mode,omitzero"`
	SubnetID int      `json:"subnet_id,omitzero"`
}

NodeBalancerNodeCreateOptions fields are those accepted by CreateNodeBalancerNode

type NodeBalancerNodeStatus

type NodeBalancerNodeStatus struct {
	Up   int `json:"up"`
	Down int `json:"down"`
}

NodeBalancerNodeStatus represents the total number of nodes whose status is Up or Down

type NodeBalancerNodeUpdateOptions

type NodeBalancerNodeUpdateOptions struct {
	Address  string   `json:"address,omitzero"`
	Label    string   `json:"label,omitzero"`
	Weight   int      `json:"weight,omitzero"`
	Mode     NodeMode `json:"mode,omitzero"`
	SubnetID int      `json:"subnet_id,omitzero"`
}

NodeBalancerNodeUpdateOptions fields are those accepted by UpdateNodeBalancerNode

type NodeBalancerPlanType

type NodeBalancerPlanType string

NodeBalancerPlanType constants start with NBType and include Linode API NodeBalancer's plan types

const (
	NBTypePremium     NodeBalancerPlanType = "premium"
	NBTypePremium40GB NodeBalancerPlanType = "premium_40gb"
	NBTypeCommon      NodeBalancerPlanType = "common"
)

NodeBalancerPlanType constants reflect the plan type used by a NodeBalancer Config

type NodeBalancerStats

type NodeBalancerStats struct {
	Title string                `json:"title"`
	Data  NodeBalancerStatsData `json:"data"`
}

NodeBalancerStats represents a nodebalancer stats object

type NodeBalancerStatsData

type NodeBalancerStatsData struct {
	Connections [][]float64  `json:"connections"`
	Traffic     StatsTraffic `json:"traffic"`
}

NodeBalancerStatsData represents a nodebalancer stats data object

type NodeBalancerTransfer

type NodeBalancerTransfer struct {
	// The total transfer, in MB, used by this NodeBalancer this month.
	Total *float64 `json:"total"`
	// The total inbound transfer, in MB, used for this NodeBalancer this month.
	Out *float64 `json:"out"`
	// The total outbound transfer, in MB, used for this NodeBalancer this month.
	In *float64 `json:"in"`
}

NodeBalancerTransfer contains information about the amount of transfer a NodeBalancer has had in the current month

type NodeBalancerType

type NodeBalancerType struct {
	// contains filtered or unexported fields
}

NodeBalancerType represents a single valid NodeBalancer type.

type NodeBalancerTypePrice

type NodeBalancerTypePrice struct {
	// contains filtered or unexported fields
}

NodeBalancerTypePrice represents the base hourly and monthly prices for a NodeBalancer type entry.

type NodeBalancerTypeRegionPrice

type NodeBalancerTypeRegionPrice struct {
	// contains filtered or unexported fields
}

NodeBalancerTypeRegionPrice represents the regional hourly and monthly prices for a NodeBalancer type entry.

type NodeBalancerUpdateOptions

type NodeBalancerUpdateOptions struct {
	Label              *string `json:"label,omitzero"`
	ClientConnThrottle *int    `json:"client_conn_throttle,omitzero"`

	// NOTE: ClientUDPSessThrottle may not currently be available to all users.
	ClientUDPSessThrottle *int `json:"client_udp_sess_throttle,omitzero"`

	Tags []string `json:"tags,omitzero"`
}

NodeBalancerUpdateOptions are the options permitted for UpdateNodeBalancer

type NodeBalancerVPCConfig

type NodeBalancerVPCConfig struct {
	ID             int    `json:"id"`
	IPv4Range      string `json:"ipv4_range"`
	IPv6Range      string `json:"ipv6_range,omitzero"`
	NodeBalancerID int    `json:"nodebalancer_id"`
	SubnetID       int    `json:"subnet_id"`
	VPCID          int    `json:"vpc_id"`
}

NodeBalancerVPCConfig objects represent a VPC config for a NodeBalancer s NOTE: NodeBalancer VPC support may not currently be available to all users.

type NodeBalancerVPCOptions

type NodeBalancerVPCOptions struct {
	IPv4Range           string `json:"ipv4_range,omitzero"`
	IPv6Range           string `json:"ipv6_range,omitzero"`
	SubnetID            int    `json:"subnet_id"`
	IPv4RangeAutoAssign bool   `json:"ipv4_range_auto_assign,omitzero"`
}

type NodeMode

type NodeMode string

NodeMode is the mode a NodeBalancer should use when sending traffic to a NodeBalancer Node

var (
	// ModeAccept is the NodeMode indicating a NodeBalancer Node is accepting traffic
	ModeAccept NodeMode = "accept"

	// ModeReject is the NodeMode indicating a NodeBalancer Node is not receiving traffic
	ModeReject NodeMode = "reject"

	// ModeDrain is the NodeMode indicating a NodeBalancer Node is not receiving new traffic, but may continue receiving traffic from pinned connections
	ModeDrain NodeMode = "drain"

	// ModeBackup is the NodeMode indicating a NodeBalancer Node will only receive traffic if all "accept" Nodes are down
	ModeBackup NodeMode = "backup"
)

type Notification

type Notification struct {
	Label    string               `json:"label"`
	Body     *string              `json:"body"`
	Message  string               `json:"message"`
	Type     NotificationType     `json:"type"`
	Severity NotificationSeverity `json:"severity"`
	Entity   *NotificationEntity  `json:"entity"`
	Until    *time.Time           `json:"-"`
	When     *time.Time           `json:"-"`
}

Notification represents a notification on an Account

func (*Notification) UnmarshalJSON

func (i *Notification) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type NotificationEntity

type NotificationEntity struct {
	ID    int    `json:"id"`
	Label string `json:"label"`
	Type  string `json:"type"`
	URL   string `json:"url"`
}

NotificationEntity adds detailed information about the Notification. This could refer to the ticket that triggered the notification, for example.

type NotificationSeverity

type NotificationSeverity string

NotificationSeverity constants start with Notification and include all known Linode API Notification Severities.

const (
	NotificationMinor    NotificationSeverity = "minor"
	NotificationMajor    NotificationSeverity = "major"
	NotificationCritical NotificationSeverity = "critical"
)

NotificationSeverity constants represent the actions that cause a Notification. New severities may be added in the future.

type NotificationType

type NotificationType string

NotificationType constants start with Notification and include all known Linode API Notification Types.

const (
	NotificationMigrationScheduled   NotificationType = "migration_scheduled"
	NotificationMigrationImminent    NotificationType = "migration_imminent"
	NotificationMigrationPending     NotificationType = "migration_pending"
	NotificationRebootScheduled      NotificationType = "reboot_scheduled"
	NotificationOutage               NotificationType = "outage"
	NotificationPaymentDue           NotificationType = "payment_due"
	NotificationTicketImportant      NotificationType = "ticket_important"
	NotificationTicketAbuse          NotificationType = "ticket_abuse"
	NotificationNotice               NotificationType = "notice"
	NotificationMaintenance          NotificationType = "maintenance"
	NotificationMaintenanceScheduled NotificationType = "maintenance_scheduled"
)

NotificationType constants represent the actions that cause a Notification. New types may be added in the future.

type OAuthClient

type OAuthClient struct {
	// The unique ID of this OAuth Client.
	ID string `json:"id"`

	// The location a successful log in from https://login.linode.com should be redirected to for this client. The receiver of this redirect should be ready to accept an OAuth exchange code and finish the OAuth exchange.
	RedirectURI string `json:"redirect_uri"`

	// The name of this application. This will be presented to users when they are asked to grant it access to their Account.
	Label string `json:"label"`

	// Current status of the OAuth Client, Enum: "active" "disabled" "suspended"
	Status OAuthClientStatus `json:"status"`

	// The OAuth Client secret, used in the OAuth exchange. This is returned as <REDACTED> except when an OAuth Client is created or its secret is reset. This is a secret, and should not be shared or disclosed publicly.
	Secret string `json:"secret"`

	// If this OAuth Client is public or private.
	Public bool `json:"public"`

	// The URL where this client's thumbnail may be viewed, or nil if this client does not have a thumbnail set.
	ThumbnailURL *string `json:"thumbnail_url"`
}

OAuthClient represents a OAuthClient object

func (OAuthClient) GetCreateOptions

func (i OAuthClient) GetCreateOptions() (o OAuthClientCreateOptions)

GetCreateOptions converts a OAuthClient to OAuthClientCreateOptions for use in CreateOAuthClient

func (OAuthClient) GetUpdateOptions

func (i OAuthClient) GetUpdateOptions() (o OAuthClientUpdateOptions)

GetUpdateOptions converts a OAuthClient to OAuthClientUpdateOptions for use in UpdateOAuthClient

type OAuthClientCreateOptions

type OAuthClientCreateOptions struct {
	// The location a successful log in from https://login.linode.com should be redirected to for this client. The receiver of this redirect should be ready to accept an OAuth exchange code and finish the OAuth exchange.
	RedirectURI string `json:"redirect_uri"`

	// The name of this application. This will be presented to users when they are asked to grant it access to their Account.
	Label string `json:"label"`

	// If this OAuth Client is public or private.
	Public bool `json:"public"`
}

OAuthClientCreateOptions fields are those accepted by CreateOAuthClient

type OAuthClientStatus

type OAuthClientStatus string

OAuthClientStatus constants start with OAuthClient and include Linode API Instance Status values

const (
	OAuthClientActive    OAuthClientStatus = "active"
	OAuthClientDisabled  OAuthClientStatus = "disabled"
	OAuthClientSuspended OAuthClientStatus = "suspended"
)

OAuthClientStatus constants reflect the current status of an OAuth Client

type OAuthClientUpdateOptions

type OAuthClientUpdateOptions struct {
	// The location a successful log in from https://login.linode.com should be redirected to for this client. The receiver of this redirect should be ready to accept an OAuth exchange code and finish the OAuth exchange.
	RedirectURI string `json:"redirect_uri"`

	// The name of this application. This will be presented to users when they are asked to grant it access to their Account.
	Label string `json:"label"`

	// If this OAuth Client is public or private.
	Public bool `json:"public"`
}

OAuthClientUpdateOptions fields are those accepted by UpdateOAuthClient

type ObjectStorageACL

type ObjectStorageACL string

ObjectStorageACL options start with ACL and include all known ACL types

const (
	ACLPrivate           ObjectStorageACL = "private"
	ACLPublicRead        ObjectStorageACL = "public-read"
	ACLAuthenticatedRead ObjectStorageACL = "authenticated-read"
	ACLPublicReadWrite   ObjectStorageACL = "public-read-write"
)

ObjectStorageACL options represent the access control level of a bucket.

type ObjectStorageBucket

type ObjectStorageBucket struct {
	Label string `json:"label"`

	Region string `json:"region"`

	S3Endpoint   string                    `json:"s3_endpoint"`
	EndpointType ObjectStorageEndpointType `json:"endpoint_type"`
	Created      *time.Time                `json:"-"`
	Hostname     string                    `json:"hostname"`
	Objects      int                       `json:"objects"`
	Size         int                       `json:"size"`
}

ObjectStorageBucket represents a ObjectStorage object

func (*ObjectStorageBucket) UnmarshalJSON

func (i *ObjectStorageBucket) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type ObjectStorageBucketAccess

type ObjectStorageBucketAccess struct {
	ACL         ObjectStorageACL `json:"acl"`
	ACLXML      string           `json:"acl_xml"`
	CorsEnabled *bool            `json:"cors_enabled"`
	CorsXML     *string          `json:"cors_xml"`
}

type ObjectStorageBucketCert

type ObjectStorageBucketCert struct {
	SSL *bool `json:"ssl"`
}

type ObjectStorageBucketCertUploadOptions

type ObjectStorageBucketCertUploadOptions struct {
	Certificate string `json:"certificate"`
	PrivateKey  string `json:"private_key"`
}

type ObjectStorageBucketContent

type ObjectStorageBucketContent struct {
	Data        []ObjectStorageBucketContentData `json:"data"`
	IsTruncated bool                             `json:"is_truncated"`
	NextMarker  *string                          `json:"next_marker"`
}

ObjectStorageBucketContent holds the content of an ObjectStorageBucket

type ObjectStorageBucketContentData

type ObjectStorageBucketContentData struct {
	Etag         string     `json:"etag"`
	LastModified *time.Time `json:"last_modified"`
	Name         string     `json:"name"`
	Owner        string     `json:"owner"`
	Size         int        `json:"size"`
}

ObjectStorageBucketContentData holds the data of the content of an ObjectStorageBucket

type ObjectStorageBucketCreateOptions

type ObjectStorageBucketCreateOptions struct {
	Region string `json:"region,omitzero"`

	Label        string                    `json:"label"`
	S3Endpoint   string                    `json:"s3_endpoint,omitzero"`
	EndpointType ObjectStorageEndpointType `json:"endpoint_type,omitzero"`

	ACL         ObjectStorageACL `json:"acl,omitzero"`
	CorsEnabled *bool            `json:"cors_enabled,omitzero"`
}

ObjectStorageBucketCreateOptions fields are those accepted by CreateObjectStorageBucket

type ObjectStorageBucketListContentsParams

type ObjectStorageBucketListContentsParams struct {
	Marker    *string
	Delimiter *string
	Prefix    *string
	PageSize  *int
}

ObjectStorageBucketListContentsParams fields are the query parameters for ListObjectStorageBucketContents

type ObjectStorageBucketModifyAccessOptions

type ObjectStorageBucketModifyAccessOptions struct {
	ACL         ObjectStorageACL `json:"acl,omitzero"`
	CorsEnabled *bool            `json:"cors_enabled,omitzero"`
}

ObjectStorageBucketModifyAccessOptions fields are those accepted by ModifyObjectStorageBucketAccess

type ObjectStorageBucketUpdateAccessOptions

type ObjectStorageBucketUpdateAccessOptions struct {
	ACL         ObjectStorageACL `json:"acl,omitzero"`
	CorsEnabled *bool            `json:"cors_enabled,omitzero"`
}

ObjectStorageBucketUpdateAccessOptions fields are those accepted by UpdateObjectStorageBucketAccess

type ObjectStorageEndpoint

type ObjectStorageEndpoint struct {
	Region       string                    `json:"region"`
	S3Endpoint   *string                   `json:"s3_endpoint"`
	EndpointType ObjectStorageEndpointType `json:"endpoint_type"`
}

ObjectStorageEndpoint represents a linode object storage endpoint object

type ObjectStorageEndpointType

type ObjectStorageEndpointType string

ObjectStorageEndpointType constants start with Notification and include all known Linode API Notification Types.

const (
	ObjectStorageEndpointE0 ObjectStorageEndpointType = "E0"
	ObjectStorageEndpointE1 ObjectStorageEndpointType = "E1"
	ObjectStorageEndpointE2 ObjectStorageEndpointType = "E2"
	ObjectStorageEndpointE3 ObjectStorageEndpointType = "E3"
)

NotificationType constants represent the actions that cause a Notification. New types may be added in the future.

type ObjectStorageGlobalQuota

type ObjectStorageGlobalQuota struct {
	QuotaID        string `json:"quota_id"`
	QuotaName      string `json:"quota_name"`
	QuotaType      string `json:"quota_type"`
	Description    string `json:"description"`
	QuotaLimit     int    `json:"quota_limit"`
	ResourceMetric string `json:"resource_metric"`
	HasUsage       bool   `json:"has_usage"`
}

ObjectStorageGlobalQuota represents global/account-level Object Storage quota information.

type ObjectStorageGlobalQuotaUsage

type ObjectStorageGlobalQuotaUsage struct {
	QuotaLimit int  `json:"quota_limit"`
	Usage      *int `json:"usage"`
}

ObjectStorageGlobalQuotaUsage is the usage data for a specific global/account-level Object Storage quota.

type ObjectStorageKey

type ObjectStorageKey struct {
	ID           int                             `json:"id"`
	Label        string                          `json:"label"`
	AccessKey    string                          `json:"access_key"`
	SecretKey    string                          `json:"secret_key"`
	Limited      bool                            `json:"limited"`
	BucketAccess *[]ObjectStorageKeyBucketAccess `json:"bucket_access"`
	Regions      []ObjectStorageKeyRegion        `json:"regions"`
}

ObjectStorageKey represents a linode object storage key object

type ObjectStorageKeyBucketAccess

type ObjectStorageKeyBucketAccess struct {
	Region string `json:"region,omitzero"`

	BucketName  string `json:"bucket_name"`
	Permissions string `json:"permissions"`
}

ObjectStorageKeyBucketAccess represents a linode limited object storage key's bucket access

type ObjectStorageKeyBucketAccessCreateOptions

type ObjectStorageKeyBucketAccessCreateOptions struct {
	Region string `json:"region,omitzero"`

	BucketName  string `json:"bucket_name"`
	Permissions string `json:"permissions"`
}

type ObjectStorageKeyCreateOptions

type ObjectStorageKeyCreateOptions struct {
	Label        string                                      `json:"label"`
	BucketAccess []ObjectStorageKeyBucketAccessCreateOptions `json:"bucket_access,omitzero"`
	Regions      []string                                    `json:"regions,omitzero"`
}

ObjectStorageKeyCreateOptions fields are those accepted by CreateObjectStorageKey

type ObjectStorageKeyRegion

type ObjectStorageKeyRegion struct {
	ID           string                    `json:"id"`
	S3Endpoint   string                    `json:"s3_endpoint"`
	EndpointType ObjectStorageEndpointType `json:"endpoint_type"`
}

type ObjectStorageKeyUpdateOptions

type ObjectStorageKeyUpdateOptions struct {
	Label   string   `json:"label,omitzero"`
	Regions []string `json:"regions,omitzero"`
}

ObjectStorageKeyUpdateOptions fields are those accepted by UpdateObjectStorageKey

type ObjectStorageObjectACLConfig

type ObjectStorageObjectACLConfig struct {
	ACL    *string `json:"acl"`
	ACLXML *string `json:"acl_xml"`
}

type ObjectStorageObjectACLConfigUpdateOptions

type ObjectStorageObjectACLConfigUpdateOptions struct {
	Name string `json:"name"`
	ACL  string `json:"acl"`
}

type ObjectStorageObjectURL

type ObjectStorageObjectURL struct {
	URL    string `json:"url"`
	Exists bool   `json:"exists"`
}

type ObjectStorageObjectURLCreateOptions

type ObjectStorageObjectURLCreateOptions struct {
	Name               string `json:"name"`
	Method             string `json:"method"`
	ContentType        string `json:"content_type,omitzero"`
	ContentDisposition string `json:"content_disposition,omitzero"`
	ExpiresIn          *int   `json:"expires_in,omitzero"`
}

type ObjectStorageQuota

type ObjectStorageQuota struct {
	QuotaID        string `json:"quota_id"`
	QuotaName      string `json:"quota_name"`
	EndpointType   string `json:"endpoint_type"`
	S3Endpoint     string `json:"s3_endpoint"`
	Description    string `json:"description"`
	QuotaLimit     int    `json:"quota_limit"`
	ResourceMetric string `json:"resource_metric"`
	QuotaType      string `json:"quota_type"`
	HasUsage       bool   `json:"has_usage"`
}

ObjectStorageQuota represents a Object Storage related quota information on your account.

type ObjectStorageQuotaUsage

type ObjectStorageQuotaUsage struct {
	QuotaLimit int  `json:"quota_limit"`
	Usage      *int `json:"usage"`
}

ObjectStorageQuotaUsage is the usage data for a specific Object Storage related quota on your account.

type ObjectStorageTransfer

type ObjectStorageTransfer struct {
	AmmountUsed int `json:"used"`
}

ObjectStorageTransfer is an object matching the response of object-storage/transfer

type PGLookoutMaxFailoverReplicationTimeLag

type PGLookoutMaxFailoverReplicationTimeLag struct {
	Description     string `json:"description"`
	Maximum         int64  `json:"maximum"`
	Minimum         int64  `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type PGPartmanBGWInterval

type PGPartmanBGWInterval struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type PGPartmanBGWRole

type PGPartmanBGWRole struct {
	Description     string `json:"description"`
	Example         string `json:"example"`
	MaxLength       int    `json:"maxLength"`
	Pattern         string `json:"pattern"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type PGStatMonitorPGSMEnableQueryPlan

type PGStatMonitorPGSMEnableQueryPlan struct {
	Description     string `json:"description"`
	Example         bool   `json:"example"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type PGStatMonitorPGSMMaxBuckets

type PGStatMonitorPGSMMaxBuckets struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type PGStatStatementsTrack

type PGStatStatementsTrack struct {
	Description     string   `json:"description"`
	Enum            []string `json:"enum"`
	RequiresRestart bool     `json:"requires_restart"`
	Type            string   `json:"type"`
}

type PageOptions

type PageOptions struct {
	Page    int `json:"page"`
	Pages   int `json:"pages"`
	Results int `json:"results"`
}

PageOptions are the pagination parameters for List endpoints

type PagedResponse

type PagedResponse interface {
	// contains filtered or unexported methods
}

type PaginatedResponse

type PaginatedResponse[T any] struct {
	Page    int `json:"page"`
	Pages   int `json:"pages"`
	Results int `json:"results"`
	Data    []T `json:"data"`
}

PaginatedResponse represents a single response from a paginated endpoint.

type PasswordEncryption

type PasswordEncryption struct {
	Description     string   `json:"description"`
	Enum            []string `json:"enum"`
	Example         string   `json:"example"`
	RequiresRestart bool     `json:"requires_restart"`
	Type            string   `json:"type"`
}

type Payment

type Payment struct {
	// The unique ID of the Payment
	ID int `json:"id"`

	// The amount, in US dollars, of the Payment.
	USD json.Number `json:"usd"`

	// When the Payment was made.
	Date *time.Time `json:"-"`
}

Payment represents a Payment object

func (Payment) GetCreateOptions

func (i Payment) GetCreateOptions() (o PaymentCreateOptions)

GetCreateOptions converts a Payment to PaymentCreateOptions for use in CreatePayment

func (*Payment) UnmarshalJSON

func (i *Payment) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type PaymentCreateOptions

type PaymentCreateOptions struct {
	// CVV (Card Verification Value) of the credit card to be used for the Payment
	CVV string `json:"cvv,omitzero"`

	// The amount, in US dollars, of the Payment
	USD json.Number `json:"usd"`
}

PaymentCreateOptions fields are those accepted by CreatePayment

type PaymentMethod

type PaymentMethod struct {
	// The unique ID of the Payment Method.
	ID int `json:"id"`

	// When the Payment Method was created.
	Created *time.Time `json:"created"`

	// Whether this Payment Method is the default method for automatically processing service charges.
	IsDefault bool `json:"is_default"`

	// The type of Payment Method.
	Type string `json:"type"`

	// The detailed data for the Payment Method, which can be of varying types.
	Data any `json:"data"`
}

PaymentMethod represents a PaymentMethod object

func (*PaymentMethod) UnmarshalJSON

func (i *PaymentMethod) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type PaymentMethodCreateOptions

type PaymentMethodCreateOptions struct {
	// Whether this Payment Method is the default method for automatically processing service charges.
	IsDefault bool `json:"is_default"`

	// The type of Payment Method. Alternative payment methods including Google Pay and PayPal can be added using the Cloud Manager.
	Type string `json:"type"`

	// An object representing the credit card information you have on file with Linode to make Payments against your Account.
	Data *PaymentMethodCreateOptionsData `json:"data"`
}

PaymentMethodCreateOptions fields are those accepted by CreatePaymentMethod

type PaymentMethodCreateOptionsData

type PaymentMethodCreateOptionsData struct {
	// Your credit card number. No spaces or hyphens (-) allowed.
	CardNumber string `json:"card_number"`

	// CVV (Card Verification Value) of the credit card, typically found on the back of the card.
	CVV string `json:"cvv"`

	// A value from 1-12 representing the expiration month of your credit card.
	ExpiryMonth int `json:"expiry_month"`

	// A four-digit integer representing the expiration year of your credit card.
	ExpiryYear int `json:"expiry_year"`
}

type PaymentMethodDataCreditCard

type PaymentMethodDataCreditCard struct {
	// The type of credit card.
	CardType string `json:"card_type"`

	// The expiration month and year of the credit card.
	Expiry string `json:"expiry"`

	// The last four digits of the credit card number.
	LastFour string `json:"last_four"`
}

PaymentMethodDataCreditCard represents a PaymentMethodDataCreditCard object

type PaymentMethodDataGooglePay

type PaymentMethodDataGooglePay struct {
	// The type of credit card.
	CardType string `json:"card_type"`

	// The expiration month and year of the credit card.
	Expiry string `json:"expiry"`

	// The last four digits of the credit card number.
	LastFour string `json:"last_four"`
}

PaymentMethodDataGooglePay represents a PaymentMethodDataGooglePay object

type PaymentMethodDataPaypal

type PaymentMethodDataPaypal struct {
	// The email address associated with your PayPal account.
	Email string `json:"email"`

	// PayPal Merchant ID associated with your PayPal account.
	PaypalID string `json:"paypal_id"`
}

PaymentMethodDataPaypal represents a PaymentMethodDataPaypal object

type PlacementGroup

type PlacementGroup struct {
	ID                   int                       `json:"id"`
	Label                string                    `json:"label"`
	Region               string                    `json:"region"`
	PlacementGroupType   PlacementGroupType        `json:"placement_group_type"`
	PlacementGroupPolicy PlacementGroupPolicy      `json:"placement_group_policy"`
	IsCompliant          bool                      `json:"is_compliant"`
	Members              []PlacementGroupMember    `json:"members"`
	Migrations           *PlacementGroupMigrations `json:"migrations"`
}

PlacementGroup represents a Linode placement group.

type PlacementGroupAssignOptions

type PlacementGroupAssignOptions struct {
	Linodes       []int `json:"linodes"`
	CompliantOnly *bool `json:"compliant_only,omitzero"`
}

PlacementGroupAssignOptions represents options used when assigning Linodes to a placement group.

type PlacementGroupCreateOptions

type PlacementGroupCreateOptions struct {
	Label                string               `json:"label"`
	Region               string               `json:"region"`
	PlacementGroupType   PlacementGroupType   `json:"placement_group_type"`
	PlacementGroupPolicy PlacementGroupPolicy `json:"placement_group_policy"`
}

PlacementGroupCreateOptions represents the options to use when creating a placement group.

type PlacementGroupMember

type PlacementGroupMember struct {
	LinodeID    int  `json:"linode_id"`
	IsCompliant bool `json:"is_compliant"`
}

PlacementGroupMember represents a single Linode assigned to a placement group.

type PlacementGroupMigrationInstance

type PlacementGroupMigrationInstance struct {
	LinodeID int `json:"linode_id"`
}

PlacementGroupMigrationInstance represents the unique identifier for a compute instance being migrated to/from the placement group.

type PlacementGroupMigrations

type PlacementGroupMigrations struct {
	Inbound  []PlacementGroupMigrationInstance `json:"inbound"`
	Outbound []PlacementGroupMigrationInstance `json:"outbound"`
}

PlacementGroupMigrations represent the instances that are being migrated to or from the placement group.

type PlacementGroupPolicy

type PlacementGroupPolicy string

PlacementGroupPolicy is an enum for the policy that determines whether a Linode can be assigned to a Placement Group.

const (
	PlacementGroupPolicyStrict   PlacementGroupPolicy = "strict"
	PlacementGroupPolicyFlexible PlacementGroupPolicy = "flexible"
)

type PlacementGroupType

type PlacementGroupType string

PlacementGroupType is an enum that determines the affinity policy for Linodes in a placement group.

const (
	PlacementGroupTypeAntiAffinityLocal PlacementGroupType = "anti_affinity:local"
)

type PlacementGroupUnAssignOptions

type PlacementGroupUnAssignOptions struct {
	Linodes []int `json:"linodes"`
}

PlacementGroupUnAssignOptions represents options used when unassigning Linodes from a placement group.

type PlacementGroupUpdateOptions

type PlacementGroupUpdateOptions struct {
	Label string `json:"label,omitzero"`
}

PlacementGroupUpdateOptions represents the options to use when updating a placement group.

type PostgresCommitType

type PostgresCommitType string
const (
	PostgresCommitTrue        PostgresCommitType = "true"
	PostgresCommitFalse       PostgresCommitType = "false"
	PostgresCommitLocal       PostgresCommitType = "local"
	PostgresCommitRemoteWrite PostgresCommitType = "remote_write"
	PostgresCommitRemoteApply PostgresCommitType = "remote_apply"
)

type PostgresCreateOptions

type PostgresCreateOptions struct {
	Label       string   `json:"label"`
	Region      string   `json:"region"`
	Type        string   `json:"type"`
	Engine      string   `json:"engine"`
	AllowList   []string `json:"allow_list,omitzero"`
	ClusterSize int      `json:"cluster_size,omitzero"`

	Fork *DatabaseFork `json:"fork,omitzero"`

	EngineConfig   *PostgresDatabaseEngineConfig `json:"engine_config,omitzero"`
	PrivateNetwork *DatabasePrivateNetwork       `json:"private_network,omitzero"`
}

PostgresCreateOptions fields are used when creating a new Postgres Database

type PostgresDatabase

type PostgresDatabase struct {
	ID        int            `json:"id"`
	Status    DatabaseStatus `json:"status"`
	Label     string         `json:"label"`
	Region    string         `json:"region"`
	Type      string         `json:"type"`
	Engine    string         `json:"engine"`
	Version   string         `json:"version"`
	AllowList []string       `json:"allow_list"`
	Port      int            `json:"port"`

	ClusterSize int              `json:"cluster_size"`
	Platform    DatabasePlatform `json:"platform"`

	// Members has dynamic keys so it is a map
	Members map[string]DatabaseMemberType `json:"members"`

	SSLConnection     bool                         `json:"ssl_connection"`
	Encrypted         bool                         `json:"encrypted"`
	Hosts             DatabaseHost                 `json:"hosts"`
	Updates           DatabaseMaintenanceWindow    `json:"updates"`
	Created           *time.Time                   `json:"-"`
	Updated           *time.Time                   `json:"-"`
	Fork              *DatabaseFork                `json:"fork"`
	OldestRestoreTime *time.Time                   `json:"-"`
	UsedDiskSizeGB    int                          `json:"used_disk_size_gb"`
	TotalDiskSizeGB   int                          `json:"total_disk_size_gb"`
	EngineConfig      PostgresDatabaseEngineConfig `json:"engine_config"`
	PrivateNetwork    *DatabasePrivateNetwork      `json:"private_network,omitzero"`
}

A PostgresDatabase is an instance of Linode Postgres Managed Databases

func (*PostgresDatabase) UnmarshalJSON

func (d *PostgresDatabase) UnmarshalJSON(b []byte) error

type PostgresDatabaseConfigInfo

type PostgresDatabaseConfigInfo struct {
	PG                      PostgresDatabaseConfigInfoPG                      `json:"pg"`
	PGStatMonitorEnable     PostgresDatabaseConfigInfoPGStatMonitorEnable     `json:"pg_stat_monitor_enable"`
	PGLookout               PostgresDatabaseConfigInfoPGLookout               `json:"pglookout"`
	SharedBuffersPercentage PostgresDatabaseConfigInfoSharedBuffersPercentage `json:"shared_buffers_percentage"`
	WorkMem                 PostgresDatabaseConfigInfoWorkMem                 `json:"work_mem"`
}

type PostgresDatabaseConfigInfoPG

type PostgresDatabaseConfigInfoPG struct {
	AutovacuumAnalyzeScaleFactor     AutovacuumAnalyzeScaleFactor     `json:"autovacuum_analyze_scale_factor"`
	AutovacuumAnalyzeThreshold       AutovacuumAnalyzeThreshold       `json:"autovacuum_analyze_threshold"`
	AutovacuumMaxWorkers             AutovacuumMaxWorkers             `json:"autovacuum_max_workers"`
	AutovacuumNaptime                AutovacuumNaptime                `json:"autovacuum_naptime"`
	AutovacuumVacuumCostDelay        AutovacuumVacuumCostDelay        `json:"autovacuum_vacuum_cost_delay"`
	AutovacuumVacuumCostLimit        AutovacuumVacuumCostLimit        `json:"autovacuum_vacuum_cost_limit"`
	AutovacuumVacuumScaleFactor      AutovacuumVacuumScaleFactor      `json:"autovacuum_vacuum_scale_factor"`
	AutovacuumVacuumThreshold        AutovacuumVacuumThreshold        `json:"autovacuum_vacuum_threshold"`
	BGWriterDelay                    BGWriterDelay                    `json:"bgwriter_delay"`
	BGWriterFlushAfter               BGWriterFlushAfter               `json:"bgwriter_flush_after"`
	BGWriterLRUMaxPages              BGWriterLRUMaxPages              `json:"bgwriter_lru_maxpages"`
	BGWriterLRUMultiplier            BGWriterLRUMultiplier            `json:"bgwriter_lru_multiplier"`
	DeadlockTimeout                  DeadlockTimeout                  `json:"deadlock_timeout"`
	DefaultToastCompression          DefaultToastCompression          `json:"default_toast_compression"`
	IdleInTransactionSessionTimeout  IdleInTransactionSessionTimeout  `json:"idle_in_transaction_session_timeout"`
	JIT                              JIT                              `json:"jit"`
	MaxFilesPerProcess               MaxFilesPerProcess               `json:"max_files_per_process"`
	MaxLocksPerTransaction           MaxLocksPerTransaction           `json:"max_locks_per_transaction"`
	MaxLogicalReplicationWorkers     MaxLogicalReplicationWorkers     `json:"max_logical_replication_workers"`
	MaxParallelWorkers               MaxParallelWorkers               `json:"max_parallel_workers"`
	MaxParallelWorkersPerGather      MaxParallelWorkersPerGather      `json:"max_parallel_workers_per_gather"`
	MaxPredLocksPerTransaction       MaxPredLocksPerTransaction       `json:"max_pred_locks_per_transaction"`
	MaxReplicationSlots              MaxReplicationSlots              `json:"max_replication_slots"`
	MaxSlotWALKeepSize               MaxSlotWALKeepSize               `json:"max_slot_wal_keep_size"`
	MaxStackDepth                    MaxStackDepth                    `json:"max_stack_depth"`
	MaxStandbyArchiveDelay           MaxStandbyArchiveDelay           `json:"max_standby_archive_delay"`
	MaxStandbyStreamingDelay         MaxStandbyStreamingDelay         `json:"max_standby_streaming_delay"`
	MaxWALSenders                    MaxWALSenders                    `json:"max_wal_senders"`
	MaxWorkerProcesses               MaxWorkerProcesses               `json:"max_worker_processes"`
	PasswordEncryption               PasswordEncryption               `json:"password_encryption"`
	PGPartmanBGWInterval             PGPartmanBGWInterval             `json:"pg_partman_bgw.interval"`
	PGPartmanBGWRole                 PGPartmanBGWRole                 `json:"pg_partman_bgw.role"`
	PGStatMonitorPGSMEnableQueryPlan PGStatMonitorPGSMEnableQueryPlan `json:"pg_stat_monitor.pgsm_enable_query_plan"`
	PGStatMonitorPGSMMaxBuckets      PGStatMonitorPGSMMaxBuckets      `json:"pg_stat_monitor.pgsm_max_buckets"`
	PGStatStatementsTrack            PGStatStatementsTrack            `json:"pg_stat_statements.track"`
	TempFileLimit                    TempFileLimit                    `json:"temp_file_limit"`
	Timezone                         Timezone                         `json:"timezone"`
	TrackActivityQuerySize           TrackActivityQuerySize           `json:"track_activity_query_size"`
	TrackCommitTimestamp             TrackCommitTimestamp             `json:"track_commit_timestamp"`
	TrackFunctions                   TrackFunctions                   `json:"track_functions"`
	TrackIOTiming                    TrackIOTiming                    `json:"track_io_timing"`
	WALSenderTimeout                 WALSenderTimeout                 `json:"wal_sender_timeout"`
	WALWriterDelay                   WALWriterDelay                   `json:"wal_writer_delay"`
}

type PostgresDatabaseConfigInfoPGLookout

type PostgresDatabaseConfigInfoPGLookout struct {
	PGLookoutMaxFailoverReplicationTimeLag PGLookoutMaxFailoverReplicationTimeLag `json:"max_failover_replication_time_lag"`
}

type PostgresDatabaseConfigInfoPGStatMonitorEnable

type PostgresDatabaseConfigInfoPGStatMonitorEnable struct {
	Description     string `json:"description"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type PostgresDatabaseConfigInfoSharedBuffersPercentage

type PostgresDatabaseConfigInfoSharedBuffersPercentage struct {
	Description     string  `json:"description"`
	Example         float64 `json:"example"`
	Maximum         float64 `json:"maximum"`
	Minimum         float64 `json:"minimum"`
	RequiresRestart bool    `json:"requires_restart"`
	Type            string  `json:"type"`
}

type PostgresDatabaseConfigInfoWorkMem

type PostgresDatabaseConfigInfoWorkMem struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type PostgresDatabaseCredential

type PostgresDatabaseCredential struct {
	Username string `json:"username"`
	Password string `json:"password"`
}

PostgresDatabaseCredential is the Root Credentials to access the Linode Managed Database

type PostgresDatabaseEngineConfig

type PostgresDatabaseEngineConfig struct {
	PG                      *PostgresDatabaseEngineConfigPG        `json:"pg,omitzero"`
	PGStatMonitorEnable     *bool                                  `json:"pg_stat_monitor_enable,omitzero"`
	PGLookout               *PostgresDatabaseEngineConfigPGLookout `json:"pglookout,omitzero"`
	SharedBuffersPercentage *float64                               `json:"shared_buffers_percentage,omitzero"`
	WorkMem                 *int                                   `json:"work_mem,omitzero"`
}

type PostgresDatabaseEngineConfigPG

type PostgresDatabaseEngineConfigPG struct {
	AutovacuumAnalyzeScaleFactor     *float64 `json:"autovacuum_analyze_scale_factor,omitzero"`
	AutovacuumAnalyzeThreshold       *int32   `json:"autovacuum_analyze_threshold,omitzero"`
	AutovacuumMaxWorkers             *int     `json:"autovacuum_max_workers,omitzero"`
	AutovacuumNaptime                *int     `json:"autovacuum_naptime,omitzero"`
	AutovacuumVacuumCostDelay        *int     `json:"autovacuum_vacuum_cost_delay,omitzero"`
	AutovacuumVacuumCostLimit        *int     `json:"autovacuum_vacuum_cost_limit,omitzero"`
	AutovacuumVacuumScaleFactor      *float64 `json:"autovacuum_vacuum_scale_factor,omitzero"`
	AutovacuumVacuumThreshold        *int32   `json:"autovacuum_vacuum_threshold,omitzero"`
	BGWriterDelay                    *int     `json:"bgwriter_delay,omitzero"`
	BGWriterFlushAfter               *int     `json:"bgwriter_flush_after,omitzero"`
	BGWriterLRUMaxPages              *int     `json:"bgwriter_lru_maxpages,omitzero"`
	BGWriterLRUMultiplier            *float64 `json:"bgwriter_lru_multiplier,omitzero"`
	DeadlockTimeout                  *int     `json:"deadlock_timeout,omitzero"`
	DefaultToastCompression          *string  `json:"default_toast_compression,omitzero"`
	IdleInTransactionSessionTimeout  *int     `json:"idle_in_transaction_session_timeout,omitzero"`
	JIT                              *bool    `json:"jit,omitzero"`
	MaxFilesPerProcess               *int     `json:"max_files_per_process,omitzero"`
	MaxLocksPerTransaction           *int     `json:"max_locks_per_transaction,omitzero"`
	MaxLogicalReplicationWorkers     *int     `json:"max_logical_replication_workers,omitzero"`
	MaxParallelWorkers               *int     `json:"max_parallel_workers,omitzero"`
	MaxParallelWorkersPerGather      *int     `json:"max_parallel_workers_per_gather,omitzero"`
	MaxPredLocksPerTransaction       *int     `json:"max_pred_locks_per_transaction,omitzero"`
	MaxReplicationSlots              *int     `json:"max_replication_slots,omitzero"`
	MaxSlotWALKeepSize               *int32   `json:"max_slot_wal_keep_size,omitzero"`
	MaxStackDepth                    *int     `json:"max_stack_depth,omitzero"`
	MaxStandbyArchiveDelay           *int     `json:"max_standby_archive_delay,omitzero"`
	MaxStandbyStreamingDelay         *int     `json:"max_standby_streaming_delay,omitzero"`
	MaxWALSenders                    *int     `json:"max_wal_senders,omitzero"`
	MaxWorkerProcesses               *int     `json:"max_worker_processes,omitzero"`
	PasswordEncryption               *string  `json:"password_encryption,omitzero"`
	PGPartmanBGWInterval             *int     `json:"pg_partman_bgw.interval,omitzero"`
	PGPartmanBGWRole                 *string  `json:"pg_partman_bgw.role,omitzero"`
	PGStatMonitorPGSMEnableQueryPlan *bool    `json:"pg_stat_monitor.pgsm_enable_query_plan,omitzero"`
	PGStatMonitorPGSMMaxBuckets      *int     `json:"pg_stat_monitor.pgsm_max_buckets,omitzero"`
	PGStatStatementsTrack            *string  `json:"pg_stat_statements.track,omitzero"`
	TempFileLimit                    *int32   `json:"temp_file_limit,omitzero"`
	Timezone                         *string  `json:"timezone,omitzero"`
	TrackActivityQuerySize           *int     `json:"track_activity_query_size,omitzero"`
	TrackCommitTimestamp             *string  `json:"track_commit_timestamp,omitzero"`
	TrackFunctions                   *string  `json:"track_functions,omitzero"`
	TrackIOTiming                    *string  `json:"track_io_timing,omitzero"`
	WALSenderTimeout                 *int     `json:"wal_sender_timeout,omitzero"`
	WALWriterDelay                   *int     `json:"wal_writer_delay,omitzero"`
}

type PostgresDatabaseEngineConfigPGLookout

type PostgresDatabaseEngineConfigPGLookout struct {
	MaxFailoverReplicationTimeLag *int64 `json:"max_failover_replication_time_lag,omitzero"`
}

type PostgresDatabaseSSL

type PostgresDatabaseSSL struct {
	CACertificate []byte `json:"ca_certificate"`
}

PostgresDatabaseSSL is the SSL Certificate to access the Linode Managed Postgres Database

type PostgresDatabaseTarget

type PostgresDatabaseTarget string
const (
	PostgresDatabaseTargetPrimary   PostgresDatabaseTarget = "primary"
	PostgresDatabaseTargetSecondary PostgresDatabaseTarget = "secondary"
)

type PostgresReplicationType

type PostgresReplicationType string
const (
	PostgresReplicationNone      PostgresReplicationType = "none"
	PostgresReplicationAsynch    PostgresReplicationType = "asynch"
	PostgresReplicationSemiSynch PostgresReplicationType = "semi_synch"
)

type PostgresUpdateOptions

type PostgresUpdateOptions struct {
	Label          string                        `json:"label,omitzero"`
	AllowList      []string                      `json:"allow_list,omitzero"`
	Updates        *DatabaseMaintenanceWindow    `json:"updates,omitzero"`
	Type           string                        `json:"type,omitzero"`
	ClusterSize    int                           `json:"cluster_size,omitzero"`
	Version        string                        `json:"version,omitzero"`
	EngineConfig   *PostgresDatabaseEngineConfig `json:"engine_config,omitzero"`
	PrivateNetwork *DatabasePrivateNetwork       `json:"private_network,omitzero"`
}

PostgresUpdateOptions fields are used when altering the existing Postgres Database

type PrefixList

type PrefixList struct {
	ID                 int       `json:"id"`
	Name               string    `json:"name"`
	Description        string    `json:"description"`
	Visibility         string    `json:"visibility"`
	SourcePrefixListID *int      `json:"source_prefixlist_id"`
	IPv4               *[]string `json:"ipv4"`
	IPv6               *[]string `json:"ipv6"`
	Version            int       `json:"version"`

	Created *time.Time `json:"-"`
	Updated *time.Time `json:"-"`
	Deleted *time.Time `json:"-"`
}

PrefixList represents a network prefix list returned by the API.

func (*PrefixList) UnmarshalJSON

func (p *PrefixList) UnmarshalJSON(data []byte) error

UnmarshalJSON implements custom timestamp parsing for PrefixList values.

type ProducerImageShareGroup

type ProducerImageShareGroup struct {
	ID           int        `json:"id"`
	UUID         string     `json:"uuid"`
	Label        string     `json:"label"`
	Description  string     `json:"description"`
	IsSuspended  bool       `json:"is_suspended"`
	ImagesCount  int        `json:"images_count"`
	MembersCount int        `json:"members_count"`
	Created      *time.Time `json:"-"`
	Updated      *time.Time `json:"-"`
	Expiry       *time.Time `json:"-"`
}

ProducerImageShareGroup represents an ImageShareGroup owned by the producer.

func (*ProducerImageShareGroup) UnmarshalJSON

func (isg *ProducerImageShareGroup) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type Profile

type Profile struct {
	UID                 int              `json:"uid"`
	Username            string           `json:"username"`
	Email               string           `json:"email"`
	Timezone            string           `json:"timezone"`
	EmailNotifications  bool             `json:"email_notifications"`
	IPWhitelistEnabled  bool             `json:"ip_whitelist_enabled"`
	TwoFactorAuth       bool             `json:"two_factor_auth"`
	Restricted          bool             `json:"restricted"`
	LishAuthMethod      LishAuthMethod   `json:"lish_auth_method"`
	Referrals           ProfileReferrals `json:"referrals"`
	AuthorizedKeys      []string         `json:"authorized_keys"`
	AuthenticationType  string           `json:"authentication_type"`
	VerifiedPhoneNumber string           `json:"verified_phone_number,omitzero"`
}

Profile represents a Profile object

func (Profile) GetUpdateOptions

func (i Profile) GetUpdateOptions() (o ProfileUpdateOptions)

GetUpdateOptions converts a Profile to ProfileUpdateOptions for use in UpdateProfile

type ProfileApp

type ProfileApp struct {
	// When this app was authorized.
	Created *time.Time `json:"-"`

	// When the app's access to your account expires.
	Expiry *time.Time `json:"-"`

	// This authorization's ID, used for revoking access.
	ID int `json:"id"`

	// The name of the application you've authorized.
	Label string `json:"label"`

	// The OAuth scopes this app was authorized with.
	Scopes string `json:"scopes"`

	// The URL at which this app's thumbnail may be accessed.
	ThumbnailURL string `json:"thumbnail_url"`

	// The website where you can get more information about this app.
	Website string `json:"website"`
}

ProfileApp represents a ProfileApp object

func (*ProfileApp) UnmarshalJSON

func (pa *ProfileApp) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type ProfileDevice

type ProfileDevice struct {
	// When this Remember Me session was started.
	Created *time.Time `json:"-"`

	// When this TrustedDevice session expires. Sessions typically last 30 days.
	Expiry *time.Time `json:"-"`

	// The unique ID for this TrustedDevice.
	ID int `json:"id"`

	// he last time this TrustedDevice was successfully used to authenticate to login.linode.com
	LastAuthenticated *time.Time `json:"-"`

	// The last IP Address to successfully authenticate with this TrustedDevice.
	LastRemoteAddr string `json:"last_remote_addr"`

	// The User Agent of the browser that created this TrustedDevice session.
	UserAgent string `json:"user_agent"`
}

ProfileDevice represents a ProfileDevice object

func (*ProfileDevice) UnmarshalJSON

func (pd *ProfileDevice) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type ProfileLogin

type ProfileLogin struct {
	Datetime   *time.Time `json:"datetime"`
	ID         int        `json:"id"`
	IP         string     `json:"ip"`
	Restricted bool       `json:"restricted"`
	Status     string     `json:"status"`
	Username   string     `json:"username"`
}

ProfileLogin represents a Profile object

func (*ProfileLogin) UnmarshalJSON

func (i *ProfileLogin) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type ProfilePreferences

type ProfilePreferences map[string]any

ProfilePreferences represents the user's preferences. The user preferences endpoints allow consumers of the API to store arbitrary JSON data, such as a user's font size preference or preferred display name.

func (*ProfilePreferences) UnmarshalJSON

func (p *ProfilePreferences) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type ProfileReferrals

type ProfileReferrals struct {
	Total     int     `json:"total"`
	Completed int     `json:"completed"`
	Pending   int     `json:"pending"`
	Credit    float64 `json:"credit"`
	Code      string  `json:"code"`
	URL       string  `json:"url"`
}

ProfileReferrals represent a User's status in the Referral Program

type ProfileUpdateOptions

type ProfileUpdateOptions struct {
	Email              string         `json:"email,omitzero"`
	Timezone           string         `json:"timezone,omitzero"`
	EmailNotifications *bool          `json:"email_notifications,omitzero"`
	IPWhitelistEnabled *bool          `json:"ip_whitelist_enabled,omitzero"`
	LishAuthMethod     LishAuthMethod `json:"lish_auth_method,omitzero"`
	AuthorizedKeys     []string       `json:"authorized_keys,omitzero"`
	TwoFactorAuth      *bool          `json:"two_factor_auth,omitzero"`
	Restricted         *bool          `json:"restricted,omitzero"`
}

ProfileUpdateOptions fields are those accepted by UpdateProfile

type PromoCodeCreateOptions

type PromoCodeCreateOptions struct {
	// The Promo Code.
	PromoCode string `json:"promo_code"`
}

PromoCodeCreateOptions fields are those accepted by AddPromoCode

type Promotion

type Promotion struct {
	// The amount available to spend per month.
	CreditMonthlyCap string `json:"credit_monthly_cap"`

	// The total amount of credit left for this promotion.
	CreditRemaining string `json:"credit_remaining"`

	// A detailed description of this promotion.
	Description string `json:"description"`

	// When this promotion's credits expire.
	ExpirationDate *time.Time `json:"-"`

	// The location of an image for this promotion.
	ImageURL string `json:"image_url"`

	// The service to which this promotion applies.
	ServiceType string `json:"service_type"`

	// Short details of this promotion.
	Summary string `json:"summary"`

	// The amount of credit left for this month for this promotion.
	ThisMonthCreditRemaining string `json:"this_month_credit_remaining"`
}

Promotion represents a Promotion object

func (*Promotion) UnmarshalJSON

func (i *Promotion) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type PublicInterface

type PublicInterface struct {
	IPv4 *PublicInterfaceIPv4 `json:"ipv4"`
	IPv6 *PublicInterfaceIPv6 `json:"ipv6"`
}

type PublicInterfaceCreateOptions

type PublicInterfaceCreateOptions struct {
	IPv4 *PublicInterfaceIPv4CreateOptions `json:"ipv4,omitzero"`
	IPv6 *PublicInterfaceIPv6CreateOptions `json:"ipv6,omitzero"`
}

type PublicInterfaceIPv4

type PublicInterfaceIPv4 struct {
	Addresses []PublicInterfaceIPv4Address `json:"addresses"`
	Shared    []PublicInterfaceIPv4Shared  `json:"shared"`
}

type PublicInterfaceIPv4Address

type PublicInterfaceIPv4Address struct {
	Address string `json:"address"`
	Primary bool   `json:"primary"`
}

type PublicInterfaceIPv4AddressCreateOptions

type PublicInterfaceIPv4AddressCreateOptions struct {
	Address *string `json:"address,omitzero"`
	Primary *bool   `json:"primary,omitzero"`
}

type PublicInterfaceIPv4CreateOptions

type PublicInterfaceIPv4CreateOptions struct {
	Addresses []PublicInterfaceIPv4AddressCreateOptions `json:"addresses,omitzero"`
}

type PublicInterfaceIPv4Shared

type PublicInterfaceIPv4Shared struct {
	Address  string `json:"address"`
	LinodeID int    `json:"linode_id"`
}

type PublicInterfaceIPv6

type PublicInterfaceIPv6 struct {
	Ranges []PublicInterfaceIPv6Range `json:"ranges"`
	Shared []PublicInterfaceIPv6Range `json:"shared"`
	SLAAC  []PublicInterfaceIPv6SLAAC `json:"slaac"`
}

type PublicInterfaceIPv6CreateOptions

type PublicInterfaceIPv6CreateOptions struct {
	Ranges []PublicInterfaceIPv6RangeCreateOptions `json:"ranges,omitzero"`
}

type PublicInterfaceIPv6Range

type PublicInterfaceIPv6Range struct {
	Range       string  `json:"range"`
	RouteTarget *string `json:"route_target"`
}

type PublicInterfaceIPv6RangeCreateOptions

type PublicInterfaceIPv6RangeCreateOptions struct {
	Range string `json:"range"`
}

type PublicInterfaceIPv6SLAAC

type PublicInterfaceIPv6SLAAC struct {
	Prefix  int    `json:"prefix"`
	Address string `json:"address"`
}

type Region

type Region struct {
	ID      string `json:"id"`
	Country string `json:"country"`

	// A List of enums from the above constants
	Capabilities []string `json:"capabilities"`

	Monitors RegionMonitors `json:"monitors"`

	Status   string `json:"status"`
	Label    string `json:"label"`
	SiteType string `json:"site_type"`

	Resolvers            RegionResolvers             `json:"resolvers"`
	PlacementGroupLimits *RegionPlacementGroupLimits `json:"placement_group_limits"`
}

Region represents a linode region object

type RegionAvailability

type RegionAvailability struct {
	Region    string `json:"region"`
	Plan      string `json:"plan"`
	Available bool   `json:"available"`
}

RegionAvailability represents a linode region object.

type RegionCapability

type RegionCapability string

RegionCapability constants start with Capability and include all known Linode region capabilities.

const (
	CapabilityACLP                             RegionCapability = "Akamai Cloud Pulse"
	CapabilityACLPStreams                      RegionCapability = "Akamai Cloud Pulse Streams"
	CapabilityAkamaiRAMProtection              RegionCapability = "Akamai RAM Protection"
	CapabilityACLB                             RegionCapability = "Akamai Cloud Load Balancer"
	CapabilityBackups                          RegionCapability = "Backups"
	CapabilityBlockStorage                     RegionCapability = "Block Storage"
	CapabilityBlockStorageEncryption           RegionCapability = "Block Storage Encryption"
	CapabilityBlockStorageMigrations           RegionCapability = "Block Storage Migrations"
	CapabilityBlockStoragePerformanceB1        RegionCapability = "Block Storage Performance B1"
	CapabilityBlockStoragePerformanceB1Default RegionCapability = "Block Storage Performance B1 Default"
	CapabilityCloudFirewall                    RegionCapability = "Cloud Firewall"
	CapabilityCloudFirewallRuleSet             RegionCapability = "Cloud Firewall Rule Set"
	CapabilityCloudNAT                         RegionCapability = "Cloud NAT"
	CapabilityDBAAS                            RegionCapability = "Managed Databases"
	CapabilityDBAASBeta                        RegionCapability = "Managed Databases Beta"
	CapabilityDiskEncryption                   RegionCapability = "Disk Encryption"
	CapabilityDistributedPlans                 RegionCapability = "Distributed Plans"
	CapabilityEdgePlans                        RegionCapability = "Edge Plans"
	CapabilityGPU                              RegionCapability = "GPU Linodes"
	CapabilityKubernetesEnterprise             RegionCapability = "Kubernetes Enterprise"
	CapabilityKubernetesEnterpriseBYOVPC       RegionCapability = "Kubernetes Enterprise BYO VPC"
	CapabilityKubernetesEnterpriseDualStack    RegionCapability = "Kubernetes Enterprise Dual Stack"
	CapabilityLADiskEncryption                 RegionCapability = "LA Disk Encryption"
	CapabilityLinodeInterfaces                 RegionCapability = "Linode Interfaces"
	CapabilityLinodes                          RegionCapability = "Linodes"
	CapabilityLKE                              RegionCapability = "Kubernetes"
	CapabilityLKEControlPlaneACL               RegionCapability = "LKE Network Access Control List (IP ACL)"
	CapabilityLkeHaControlPlanes               RegionCapability = "LKE HA Control Planes"
	CapabilityMachineImages                    RegionCapability = "Machine Images"
	CapabilityMaintenancePolicy                RegionCapability = "Maintenance Policy"
	CapabilityMetadata                         RegionCapability = "Metadata"
	CapabilityNLB                              RegionCapability = "Network LoadBalancer"
	CapabilityNodeBalancers                    RegionCapability = "NodeBalancers"
	CapabilityObjectStorage                    RegionCapability = "Object Storage"
	CapabilityObjectStorageAccessKeyRegions    RegionCapability = "Object Storage Access Key Regions"
	CapabilityObjectStorageEndpointTypes       RegionCapability = "Object Storage Endpoint Types"
	CapabilityPlacementGroup                   RegionCapability = "Placement Group"
	CapabilityPremiumPlans                     RegionCapability = "Premium Plans"
	CapabilityQuadraT1UVPU                     RegionCapability = "NETINT Quadra T1U"
	CapabilitySMTPEnabled                      RegionCapability = "SMTP Enabled"
	CapabilityStackScripts                     RegionCapability = "StackScripts"
	CapabilitySupportTicketSeverity            RegionCapability = "Support Ticket Severity"
	CapabilityVlans                            RegionCapability = "Vlans"
	CapabilityVPCs                             RegionCapability = "VPCs"
	CapabilityVPCDualStack                     RegionCapability = "VPC Dual Stack"
	CapabilityVPCIPv6LargePrefixes             RegionCapability = "VPC IPv6 Large Prefixes"
	CapabilityVPCIPv6Stack                     RegionCapability = "VPC IPv6 Stack"
	CapabilityVPCsExtra                        RegionCapability = "VPCs Extra"
)

This is an enumeration of Capabilities Linode offers that can be referenced through the user-facing parts of the application.

type RegionMonitors

type RegionMonitors struct {
	Alerts  []string `json:"alerts"`
	Metrics []string `json:"metrics"`
}

RegionMonitors contains the monitoring configuration for a region

type RegionPlacementGroupLimits

type RegionPlacementGroupLimits struct {
	MaximumPGsPerCustomer int `json:"maximum_pgs_per_customer"`
	MaximumLinodesPerPG   int `json:"maximum_linodes_per_pg"`
}

RegionPlacementGroupLimits contains information about the placement group limits for the current user in the current region.

type RegionResolvers

type RegionResolvers struct {
	IPv4 string `json:"ipv4"`
	IPv6 string `json:"ipv6"`
}

RegionResolvers contains the DNS resolvers of a region

type RegionVPCAvailability

type RegionVPCAvailability struct {
	Region                     string `json:"region"`
	Available                  bool   `json:"available"`
	AvailableIPV6PrefixLengths []int  `json:"available_ipv6_prefix_lengths"`
}

RegionVPCAvailability represents a linode region vpc availability object.

type Request

type Request = http.Request

type RequestLog

type RequestLog struct {
	Request string
	Host    string
	Headers http.Header
	Body    string
}

type ReserveIPOptions

type ReserveIPOptions struct {
	Region string `json:"region"`
}

ReserveIPOptions represents the options for reserving an IP address NOTE: Reserved IP feature may not currently be available to all users.

type Response

type Response = http.Response

type ResponseLog

type ResponseLog struct {
	Status       string
	Proto        string
	ReceivedAt   string
	TimeDuration string
	Headers      http.Header
	Body         string
}

type RestoreInstanceOptions

type RestoreInstanceOptions struct {
	LinodeID  int  `json:"linode_id"`
	Overwrite bool `json:"overwrite"`
}

RestoreInstanceOptions fields are those accepted by InstanceRestore

type RetryAfter

type RetryAfter func(*http.Response) (time.Duration, error)

RetryAfter is a type alias for a function that determines the duration to wait before retrying based on the response.

type RetryConditional

type RetryConditional func(*http.Response, error) bool

RetryConditional is a type alias for a function that determines if a request should be retried based on the response and error.

type Role

type Role struct {
	Name        string   `json:"name"`
	Description string   `json:"description"`
	Permissions []string `json:"permissions"`
}

Role is the IAM Role and its Permissions

type Rule

type Rule struct {
	AggregateFunction string            `json:"aggregate_function"`
	DimensionFilters  []DimensionFilter `json:"dimension_filters"`
	Label             string            `json:"label"`
	Metric            string            `json:"metric"`
	Operator          string            `json:"operator"`
	Threshold         float64           `json:"threshold"`
	Unit              string            `json:"unit"`
}

Rule represents a single rule for an alert.

type RuleCriteria

type RuleCriteria struct {
	Rules []Rule `json:"rules,omitzero"`
}

RuleCriteria represents the rule criteria for an alert.

type RuleCriteriaOptions

type RuleCriteriaOptions struct {
	Rules []RuleOptions `json:"rules,omitzero"`
}

RuleCriteriaOptions represents the rule criteria options for an alert.

type RuleOptions

type RuleOptions struct {
	AggregateFunction string                   `json:"aggregate_function,omitzero"`
	DimensionFilters  []DimensionFilterOptions `json:"dimension_filters,omitzero"`
	Metric            string                   `json:"metric,omitzero"`
	Operator          string                   `json:"operator,omitzero"`
	Threshold         float64                  `json:"threshold,omitzero"`
}

RuleOptions represents a single rule option for an alert.

type SQLMode

type SQLMode struct {
	Description     string `json:"description"`
	Example         string `json:"example"`
	MaxLength       int    `json:"maxLength"`
	Pattern         string `json:"pattern"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type SQLRequirePrimaryKey

type SQLRequirePrimaryKey struct {
	Description     string `json:"description"`
	Example         bool   `json:"example"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type SSHKey

type SSHKey struct {
	ID      int        `json:"id"`
	Label   string     `json:"label"`
	SSHKey  string     `json:"ssh_key"`
	Created *time.Time `json:"-"`
}

SSHKey represents a SSHKey object

func (SSHKey) GetCreateOptions

func (i SSHKey) GetCreateOptions() (o SSHKeyCreateOptions)

GetCreateOptions converts a SSHKey to SSHKeyCreateOptions for use in CreateSSHKey

func (SSHKey) GetUpdateOptions

func (i SSHKey) GetUpdateOptions() (o SSHKeyUpdateOptions)

GetUpdateOptions converts a SSHKey to SSHKeyCreateOptions for use in UpdateSSHKey

func (*SSHKey) UnmarshalJSON

func (i *SSHKey) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type SSHKeyCreateOptions

type SSHKeyCreateOptions struct {
	Label  string `json:"label"`
	SSHKey string `json:"ssh_key"`
}

SSHKeyCreateOptions fields are those accepted by CreateSSHKey

type SSHKeyUpdateOptions

type SSHKeyUpdateOptions struct {
	Label string `json:"label"`
}

SSHKeyUpdateOptions fields are those accepted by UpdateSSHKey

type SecurityQuestion

type SecurityQuestion struct {
	ID       int    `json:"id"`
	Question string `json:"question"`
	Response string `json:"response"`
}

type SecurityQuestionsAnswerOptions

type SecurityQuestionsAnswerOptions struct {
	SecurityQuestions []SecurityQuestionsAnswerQuestion `json:"security_questions"`
}

type SecurityQuestionsAnswerQuestion

type SecurityQuestionsAnswerQuestion struct {
	QuestionID int    `json:"question_id"`
	Response   string `json:"response"`
}

type SecurityQuestionsListResponse

type SecurityQuestionsListResponse struct {
	SecurityQuestions []SecurityQuestion `json:"security_questions"`
}

type SendPhoneNumberVerificationCodeOptions

type SendPhoneNumberVerificationCodeOptions struct {
	ISOCode     string `json:"iso_code"`
	PhoneNumber string `json:"phone_number"`
}

SendPhoneNumberVerificationCodeOptions fields are those accepted by SendPhoneNumberVerificationCode

type ServiceType

type ServiceType string

ServiceType is an enum object for serviceType

const (
	ServiceTypeLinode          ServiceType = "linode"
	ServiceTypeLKE             ServiceType = "lke"
	ServiceTypeDBaaS           ServiceType = "dbaas"
	ServiceTypeACLB            ServiceType = "aclb"
	ServiceTypeNodeBalancer    ServiceType = "nodebalancer"
	ServiceTypeObjectStorage   ServiceType = "object_storage"
	ServiceTypeVPC             ServiceType = "vpc"
	ServiceTypeFirewallService ServiceType = "firewall"
	ServiceTypeNetLoadBalancer ServiceType = "netloadbalancer"
)

type Severity

type Severity int

Severity represents the severity level of an alert. 0 = Severe, 1 = Medium, 2 = Low, 3 = Info

const (
	SeveritySevere Severity = 0
	SeverityMedium Severity = 1
	SeverityLow    Severity = 2
	SeverityInfo   Severity = 3
)

type SortBufferSize

type SortBufferSize struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type SortedObjects

type SortedObjects struct {
	Instances     []Instance
	LKEClusters   []LKECluster
	Domains       []Domain
	Volumes       []Volume
	NodeBalancers []NodeBalancer
}

SortedObjects currently only includes Instances

type Stackscript

type Stackscript struct {
	ID                int               `json:"id"`
	Username          string            `json:"username"`
	Label             string            `json:"label"`
	Description       string            `json:"description"`
	Ordinal           int               `json:"ordinal"`
	LogoURL           string            `json:"logo_url"`
	Images            []string          `json:"images"`
	DeploymentsTotal  int               `json:"deployments_total"`
	DeploymentsActive int               `json:"deployments_active"`
	IsPublic          bool              `json:"is_public"`
	Mine              bool              `json:"mine"`
	Created           *time.Time        `json:"-"`
	Updated           *time.Time        `json:"-"`
	RevNote           string            `json:"rev_note"`
	Script            string            `json:"script"`
	UserDefinedFields *[]StackscriptUDF `json:"user_defined_fields"`
	UserGravatarID    string            `json:"user_gravatar_id"`
}

Stackscript represents a Linode StackScript

func (Stackscript) GetCreateOptions

func (i Stackscript) GetCreateOptions() StackscriptCreateOptions

GetCreateOptions converts a Stackscript to StackscriptCreateOptions for use in CreateStackscript

func (Stackscript) GetUpdateOptions

func (i Stackscript) GetUpdateOptions() StackscriptUpdateOptions

GetUpdateOptions converts a Stackscript to StackscriptUpdateOptions for use in UpdateStackscript

func (*Stackscript) UnmarshalJSON

func (i *Stackscript) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type StackscriptCreateOptions

type StackscriptCreateOptions struct {
	Label       string   `json:"label"`
	Description string   `json:"description"`
	Images      []string `json:"images"`
	IsPublic    bool     `json:"is_public"`
	RevNote     string   `json:"rev_note"`
	Script      string   `json:"script"`
}

StackscriptCreateOptions fields are those accepted by CreateStackscript

type StackscriptUDF

type StackscriptUDF struct {
	// A human-readable label for the field that will serve as the input prompt for entering the value during deployment.
	Label string `json:"label"`

	// The name of the field.
	Name string `json:"name"`

	// An example value for the field.
	Example string `json:"example"`

	// A list of acceptable single values for the field.
	OneOf string `json:"oneOf,omitzero"`

	// A list of acceptable values for the field in any quantity, combination or order.
	ManyOf string `json:"manyOf,omitzero"`

	// The default value. If not specified, this value will be used.
	Default string `json:"default,omitzero"`
}

StackscriptUDF define a single variable that is accepted by a Stackscript

type StackscriptUpdateOptions

type StackscriptUpdateOptions StackscriptCreateOptions

StackscriptUpdateOptions fields are those accepted by UpdateStackscript

type StatsIO

type StatsIO struct {
	IO   [][]float64 `json:"io"`
	Swap [][]float64 `json:"swap"`
}

StatsIO represents an IO stats object

type StatsNet

type StatsNet struct {
	In         [][]float64 `json:"in"`
	Out        [][]float64 `json:"out"`
	PrivateIn  [][]float64 `json:"private_in"`
	PrivateOut [][]float64 `json:"private_out"`
}

StatsNet represents a network stats object

type StatsTraffic

type StatsTraffic struct {
	In  [][]float64 `json:"in"`
	Out [][]float64 `json:"out"`
}

StatsTraffic represents a Traffic stats object

type Tag

type Tag struct {
	Label string `json:"label"`
}

Tag represents a Tag object

func (Tag) GetCreateOptions

func (i Tag) GetCreateOptions() (o TagCreateOptions)

GetCreateOptions converts a Tag to TagCreateOptions for use in CreateTag

type TagCreateOptions

type TagCreateOptions struct {
	Label   string `json:"label"`
	Linodes []int  `json:"linodes,omitzero"`
	// @TODO is this implemented?
	LKEClusters   []int `json:"lke_clusters,omitzero"`
	Domains       []int `json:"domains,omitzero"`
	Volumes       []int `json:"volumes,omitzero"`
	NodeBalancers []int `json:"nodebalancers,omitzero"`
}

TagCreateOptions fields are those accepted by CreateTag

type TaggedObject

type TaggedObject struct {
	Type    string          `json:"type"`
	RawData json.RawMessage `json:"data"`
	Data    any             `json:"-"`
}

TaggedObject represents a Tagged Object object

type TaggedObjectList

type TaggedObjectList []TaggedObject

TaggedObjectList are a list of TaggedObjects, as returning by ListTaggedObjects

func (TaggedObjectList) SortedObjects

func (t TaggedObjectList) SortedObjects() (SortedObjects, error)

SortedObjects converts a list of TaggedObjects into a Sorted Objects struct, for easier access

type TempFileLimit

type TempFileLimit struct {
	Description     string `json:"description"`
	Example         int32  `json:"example"`
	Maximum         int32  `json:"maximum"`
	Minimum         int32  `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type Ticket

type Ticket struct {
	ID          int           `json:"id"`
	Attachments []string      `json:"attachments"`
	Closed      *time.Time    `json:"-"`
	Description string        `json:"description"`
	Entity      *TicketEntity `json:"entity"`
	GravatarID  string        `json:"gravatar_id"`
	Opened      *time.Time    `json:"-"`
	OpenedBy    string        `json:"opened_by"`
	Status      TicketStatus  `json:"status"`
	Summary     string        `json:"summary"`
	Updated     *time.Time    `json:"-"`
	UpdatedBy   string        `json:"updated_by"`
	Closeable   bool          `json:"closeable"`
}

Ticket represents a support ticket object

type TicketEntity

type TicketEntity struct {
	ID    int    `json:"id"`
	Label string `json:"label"`
	Type  string `json:"type"`
	URL   string `json:"url"`
}

TicketEntity refers a ticket to a specific entity

type TicketStatus

type TicketStatus string

TicketStatus constants start with Ticket and include Linode API Ticket Status values

const (
	TicketNew    TicketStatus = "new"
	TicketClosed TicketStatus = "closed"
	TicketOpen   TicketStatus = "open"
)

TicketStatus constants reflect the current status of a Ticket

type Timezone

type Timezone struct {
	Description     string `json:"description"`
	Example         string `json:"example"`
	MaxLength       int    `json:"maxLength"`
	Pattern         string `json:"pattern"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type TmpTableSize

type TmpTableSize struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type Token

type Token struct {
	// This token's unique ID, which can be used to revoke it.
	ID int `json:"id"`

	// The scopes this token was created with. These define what parts of the Account the token can be used to access. Many command-line tools, such as the Linode CLI, require tokens with access to *. Tokens with more restrictive scopes are generally more secure.
	// Valid values are "*" or a comma separated list of scopes https://techdocs.akamai.com/linode-api/reference/get-started#oauth-reference
	Scopes string `json:"scopes"`

	// This token's label. This is for display purposes only, but can be used to more easily track what you're using each token for. (1-100 Characters)
	Label string `json:"label"`

	// The token used to access the API. When the token is created, the full token is returned here. Otherwise, only the first 16 characters are returned.
	Token string `json:"token"`

	// The date and time this token was created.
	Created *time.Time `json:"-"`

	// When this token will expire. Personal Access Tokens cannot be renewed, so after this time the token will be completely unusable and a new token will need to be generated. Tokens may be created with "null" as their expiry and will never expire unless revoked.
	Expiry *time.Time `json:"-"`
}

Token represents a Token object

func (Token) GetCreateOptions

func (i Token) GetCreateOptions() (o TokenCreateOptions)

GetCreateOptions converts a Token to TokenCreateOptions for use in CreateToken

func (Token) GetUpdateOptions

func (i Token) GetUpdateOptions() (o TokenUpdateOptions)

GetUpdateOptions converts a Token to TokenUpdateOptions for use in UpdateToken

func (*Token) UnmarshalJSON

func (i *Token) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type TokenCreateOptions

type TokenCreateOptions struct {
	// The scopes this token was created with. These define what parts of the Account the token can be used to access. Many command-line tools, such as the Linode CLI, require tokens with access to *. Tokens with more restrictive scopes are generally more secure.
	Scopes string `json:"scopes"`

	// This token's label. This is for display purposes only, but can be used to more easily track what you're using each token for. (1-100 Characters)
	Label string `json:"label"`

	// When this token will expire. Personal Access Tokens cannot be renewed, so after this time the token will be completely unusable and a new token will need to be generated. Tokens may be created with "null" as their expiry and will never expire unless revoked.
	Expiry *time.Time `json:"expiry"`
}

TokenCreateOptions fields are those accepted by CreateToken

type TokenUpdateOptions

type TokenUpdateOptions struct {
	// This token's label. This is for display purposes only, but can be used to more easily track what you're using each token for. (1-100 Characters)
	Label string `json:"label"`
}

TokenUpdateOptions fields are those accepted by UpdateToken

type TrackActivityQuerySize

type TrackActivityQuerySize struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type TrackCommitTimestamp

type TrackCommitTimestamp struct {
	Description     string   `json:"description"`
	Enum            []string `json:"enum"`
	Example         string   `json:"example"`
	RequiresRestart bool     `json:"requires_restart"`
	Type            string   `json:"type"`
}

type TrackFunctions

type TrackFunctions struct {
	Description     string   `json:"description"`
	Enum            []string `json:"enum"`
	RequiresRestart bool     `json:"requires_restart"`
	Type            string   `json:"type"`
}

type TrackIOTiming

type TrackIOTiming struct {
	Description     string   `json:"description"`
	Enum            []string `json:"enum"`
	Example         string   `json:"example"`
	RequiresRestart bool     `json:"requires_restart"`
	Type            string   `json:"type"`
}

type TriggerConditions

type TriggerConditions struct {
	CriteriaCondition       string `json:"criteria_condition,omitzero"`
	EvaluationPeriodSeconds int    `json:"evaluation_period_seconds,omitzero"`
	PollingIntervalSeconds  int    `json:"polling_interval_seconds,omitzero"`
	TriggerOccurrences      int    `json:"trigger_occurrences,omitzero"`
}

TriggerConditions represents the trigger conditions for an alert.

type TwoFactorSecret

type TwoFactorSecret struct {
	Expiry *time.Time `json:"expiry"`
	Secret string     `json:"secret"`
}

TwoFactorSecret contains fields returned by CreateTwoFactorSecret

func (*TwoFactorSecret) UnmarshalJSON

func (s *TwoFactorSecret) UnmarshalJSON(b []byte) error

type User

type User struct {
	Username            string     `json:"username"`
	Email               string     `json:"email"`
	LastLogin           *LastLogin `json:"last_login"`
	UserType            UserType   `json:"user_type"`
	Restricted          bool       `json:"restricted"`
	TFAEnabled          bool       `json:"tfa_enabled"`
	SSHKeys             []string   `json:"ssh_keys"`
	PasswordCreated     *time.Time `json:"-"`
	VerifiedPhoneNumber *string    `json:"verified_phone_number"`
}

User represents a User object

func (User) GetCreateOptions

func (i User) GetCreateOptions() (o UserCreateOptions)

GetCreateOptions converts a User to UserCreateOptions for use in CreateUser

func (User) GetUpdateOptions

func (i User) GetUpdateOptions() (o UserUpdateOptions)

GetUpdateOptions converts a User to UserUpdateOptions for use in UpdateUser

func (*User) UnmarshalJSON

func (i *User) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type UserAccess

type UserAccess struct {
	ID    int      `json:"id"`
	Type  string   `json:"type"`
	Roles []string `json:"roles"`
}

UserAccess is the breakdown of entities Roles

type UserCreateOptions

type UserCreateOptions struct {
	Username   string `json:"username"`
	Email      string `json:"email"`
	Restricted bool   `json:"restricted"`
}

UserCreateOptions fields are those accepted by CreateUser

type UserGrants

type UserGrants struct {
	Database       []GrantedEntity `json:"database"`
	Domain         []GrantedEntity `json:"domain"`
	Firewall       []GrantedEntity `json:"firewall"`
	Image          []GrantedEntity `json:"image"`
	Linode         []GrantedEntity `json:"linode"`
	Longview       []GrantedEntity `json:"longview"`
	NodeBalancer   []GrantedEntity `json:"nodebalancer"`
	PlacementGroup []GrantedEntity `json:"placement_group"`
	StackScript    []GrantedEntity `json:"stackscript"`
	Volume         []GrantedEntity `json:"volume"`
	VPC            []GrantedEntity `json:"vpc"`

	Global GlobalUserGrants `json:"global"`
}

type UserGrantsUpdateOptions

type UserGrantsUpdateOptions struct {
	Database       []GrantedEntity   `json:"database,omitzero"`
	Domain         []EntityUserGrant `json:"domain,omitzero"`
	Firewall       []EntityUserGrant `json:"firewall,omitzero"`
	Image          []EntityUserGrant `json:"image,omitzero"`
	Linode         []EntityUserGrant `json:"linode,omitzero"`
	Longview       []EntityUserGrant `json:"longview,omitzero"`
	NodeBalancer   []EntityUserGrant `json:"nodebalancer,omitzero"`
	PlacementGroup []EntityUserGrant `json:"placement_group,omitzero"`
	StackScript    []EntityUserGrant `json:"stackscript,omitzero"`
	Volume         []EntityUserGrant `json:"volume,omitzero"`
	VPC            []EntityUserGrant `json:"vpc,omitzero"`

	Global GlobalUserGrants `json:"global"`
}

type UserRolePermissions

type UserRolePermissions struct {
	AccountAccess []string     `json:"account_access"`
	EntityAccess  []UserAccess `json:"entity_access"`
}

UserRolePermissions are the account and entity permissions for the User

func (*UserRolePermissions) GetUpdateOptions

GetUpdateOptions converts UserRolePermissions for use in UpdateUserRolePermissions

type UserRolePermissionsUpdateOptions

type UserRolePermissionsUpdateOptions struct {
	AccountAccess []string     `json:"account_access"`
	EntityAccess  []UserAccess `json:"entity_access"`
}

UserRolePermissionsUpdateOptions are fields accepted by UpdateUserRolePermissions

type UserType

type UserType string
const (
	UserTypeProxy   UserType = "proxy"
	UserTypeParent  UserType = "parent"
	UserTypeChild   UserType = "child"
	UserTypeDefault UserType = "default"
)

type UserUpdateOptions

type UserUpdateOptions struct {
	Username   string `json:"username,omitzero"`
	Restricted *bool  `json:"restricted,omitzero"`
	Email      string `json:"email,omitzero"`
}

UserUpdateOptions fields are those accepted by UpdateUser

type VLAN

type VLAN struct {
	Label   string     `json:"label"`
	Linodes []int      `json:"linodes"`
	Region  string     `json:"region"`
	Created *time.Time `json:"-"`
}

func (*VLAN) UnmarshalJSON

func (v *VLAN) UnmarshalJSON(b []byte) error

UnmarshalJSON for VLAN responses

type VLANInterface

type VLANInterface struct {
	VLANLabel   string  `json:"vlan_label"`
	IPAMAddress *string `json:"ipam_address,omitzero"`
}

type VLANInterfaceCreateOptions

type VLANInterfaceCreateOptions struct {
	VLANLabel   string  `json:"vlan_label"`
	IPAMAddress *string `json:"ipam_address,omitzero"`
}

type VPC

type VPC struct {
	ID          int    `json:"id"`
	Label       string `json:"label"`
	Description string `json:"description"`
	Region      string `json:"region"`

	// NOTE: IPv6 VPCs may not currently be available to all users.
	IPv6 []VPCIPv6Range `json:"ipv6"`

	Subnets []VPCSubnet `json:"subnets"`
	Created *time.Time  `json:"-"`
	Updated *time.Time  `json:"-"`
}

func (VPC) GetCreateOptions

func (v VPC) GetCreateOptions() VPCCreateOptions

func (VPC) GetUpdateOptions

func (v VPC) GetUpdateOptions() VPCUpdateOptions

func (*VPC) UnmarshalJSON

func (v *VPC) UnmarshalJSON(b []byte) error

type VPCCreateOptions

type VPCCreateOptions struct {
	Label       string `json:"label"`
	Description string `json:"description,omitzero"`
	Region      string `json:"region"`

	// NOTE: IPv6 VPCs may not currently be available to all users.
	IPv6 []VPCCreateOptionsIPv6 `json:"ipv6,omitzero"`

	Subnets []VPCSubnetCreateOptions `json:"subnets,omitzero"`
}

type VPCCreateOptionsIPv6

type VPCCreateOptionsIPv6 struct {
	Range           *string `json:"range,omitzero"`
	AllocationClass *string `json:"allocation_class,omitzero"`
}

VPCCreateOptionsIPv6 represents a single IPv6 range assigned to a VPC which is specified during a VPC's creation. NOTE: IPv6 VPCs may not currently be available to all users.

type VPCIP

type VPCIP struct {
	Address      *string `json:"address"`
	AddressRange *string `json:"address_range"`
	Gateway      string  `json:"gateway"`
	SubnetMask   string  `json:"subnet_mask"`
	Prefix       int     `json:"prefix"`
	LinodeID     int     `json:"linode_id"`
	Region       string  `json:"region"`
	Active       bool    `json:"active"`
	NAT1To1      *string `json:"nat_1_1"`
	VPCID        int     `json:"vpc_id"`
	SubnetID     int     `json:"subnet_id"`
	InterfaceID  int     `json:"interface_id"`
	// NOTE: NodeBalancerID and DatabaseID may not currently be available to all users.
	NodeBalancerID *int `json:"nodebalancer_id"`
	DatabaseID     *int `json:"database_id"`
	// NOTE: IPv6 VPCs may not currently be available to all users.
	IPv6Range     *string            `json:"ipv6_range"`
	IPv6IsPublic  *bool              `json:"ipv6_is_public"`
	IPv6Addresses []VPCIPIPv6Address `json:"ipv6_addresses"`

	// The type of this field will be made a pointer in the next major release of linodego.
	ConfigID int `json:"config_id"`
}

VPCIP represents a private IP address in a VPC subnet with additional networking details

type VPCIPIPv6Address

type VPCIPIPv6Address struct {
	SLAACAddress string `json:"slaac_address"`
}

VPCIPIPv6Address represents a single IPv6 address under a VPCIP. NOTE: IPv6 VPCs may not currently be available to all users.

type VPCIPv4

type VPCIPv4 struct {
	VPC     string  `json:"vpc,omitzero"`
	NAT1To1 *string `json:"nat_1_1,omitzero"`
}

type VPCIPv4CreateOptions

type VPCIPv4CreateOptions struct {
	VPC     string  `json:"vpc,omitzero"`
	NAT1To1 *string `json:"nat_1_1,omitzero"`
}

type VPCIPv4UpdateOptions

type VPCIPv4UpdateOptions struct {
	VPC     string  `json:"vpc,omitzero"`
	NAT1To1 *string `json:"nat_1_1,omitzero"`
}

type VPCIPv6Range

type VPCIPv6Range struct {
	Range string `json:"range"`
}

VPCIPv6Range represents a single IPv6 range assigned to a VPC. NOTE: IPv6 VPCs may not currently be available to all users.

type VPCInterface

type VPCInterface struct {
	VPCID    int              `json:"vpc_id"`
	SubnetID int              `json:"subnet_id"`
	IPv4     VPCInterfaceIPv4 `json:"ipv4"`

	// NOTE: IPv6 VPC interfaces may not currently be available to all users.
	IPv6 VPCInterfaceIPv6 `json:"ipv6"`
}

type VPCInterfaceCreateOptions

type VPCInterfaceCreateOptions struct {
	SubnetID int                            `json:"subnet_id"`
	IPv4     *VPCInterfaceIPv4CreateOptions `json:"ipv4,omitzero"`
	IPv6     *VPCInterfaceIPv6CreateOptions `json:"ipv6,omitzero"`
}

type VPCInterfaceIPv4

type VPCInterfaceIPv4 struct {
	Addresses []VPCInterfaceIPv4Address `json:"addresses"`
	Ranges    []VPCInterfaceIPv4Range   `json:"ranges"`
}

type VPCInterfaceIPv4Address

type VPCInterfaceIPv4Address struct {
	Address        string  `json:"address"`
	Primary        bool    `json:"primary"`
	NAT1To1Address *string `json:"nat_1_1_address"`
}

type VPCInterfaceIPv4AddressCreateOptions

type VPCInterfaceIPv4AddressCreateOptions struct {
	Address        *string `json:"address,omitzero"`
	Primary        *bool   `json:"primary,omitzero"`
	NAT1To1Address *string `json:"nat_1_1_address,omitzero"`
}

type VPCInterfaceIPv4CreateOptions

type VPCInterfaceIPv4CreateOptions struct {
	Addresses []VPCInterfaceIPv4AddressCreateOptions `json:"addresses,omitzero"`
	Ranges    []VPCInterfaceIPv4RangeCreateOptions   `json:"ranges,omitzero"`
}

type VPCInterfaceIPv4Range

type VPCInterfaceIPv4Range struct {
	Range string `json:"range"`
}

type VPCInterfaceIPv4RangeCreateOptions

type VPCInterfaceIPv4RangeCreateOptions struct {
	Range string `json:"range"`
}

type VPCInterfaceIPv6

type VPCInterfaceIPv6 struct {
	SLAAC    []VPCInterfaceIPv6SLAAC `json:"slaac"`
	Ranges   []VPCInterfaceIPv6Range `json:"ranges"`
	IsPublic *bool                   `json:"is_public"`
}

VPCInterfaceIPv6 contains the IPv6 configuration for a VPC. NOTE: IPv6 VPC interfaces may not currently be available to all users.

type VPCInterfaceIPv6CreateOptions

type VPCInterfaceIPv6CreateOptions struct {
	SLAAC    []VPCInterfaceIPv6SLAACCreateOptions `json:"slaac,omitzero"`
	Ranges   []VPCInterfaceIPv6RangeCreateOptions `json:"ranges,omitzero"`
	IsPublic *bool                                `json:"is_public"`
}

VPCInterfaceIPv6CreateOptions specifies IPv6 configuration parameters for VPC creation. NOTE: IPv6 interfaces may not currently be available to all users.

type VPCInterfaceIPv6Range

type VPCInterfaceIPv6Range struct {
	Range string `json:"range"`
}

VPCInterfaceIPv6Range contains the information for a single IPv6 range under a VPC. NOTE: IPv6 VPC interfaces may not currently be available to all users.

type VPCInterfaceIPv6RangeCreateOptions

type VPCInterfaceIPv6RangeCreateOptions struct {
	Range string `json:"range"`
}

VPCInterfaceIPv6RangeCreateOptions defines the IPv6 range configuration parameters for VPC creation. NOTE: IPv6 interfaces may not currently be available to all users.

type VPCInterfaceIPv6SLAAC

type VPCInterfaceIPv6SLAAC struct {
	Range   string `json:"range"`
	Address string `json:"address"`
}

VPCInterfaceIPv6SLAAC contains the information for a single IPv6 SLAAC under a VPC. NOTE: IPv6 VPC interfaces may not currently be available to all users.

type VPCInterfaceIPv6SLAACCreateOptions

type VPCInterfaceIPv6SLAACCreateOptions struct {
	Range string `json:"range"`
}

VPCInterfaceIPv6SLAACCreateOptions defines the IPv6 SLAAC configuration parameters for VPC creation. NOTE: IPv6 interfaces may not currently be available to all users.

type VPCInterfaceUpdateOptions

type VPCInterfaceUpdateOptions struct {
	IPv4 *VPCInterfaceIPv4CreateOptions `json:"ipv4,omitzero"`
	IPv6 *VPCInterfaceIPv6CreateOptions `json:"ipv6,omitzero"`
}

type VPCSubnet

type VPCSubnet struct {
	ID    int    `json:"id"`
	Label string `json:"label"`
	IPv4  string `json:"ipv4"`

	// NOTE: IPv6 VPCs may not currently be available to all users.
	IPv6 []VPCIPv6Range `json:"ipv6"`

	Linodes       []VPCSubnetLinode        `json:"linodes"`
	Databases     []VPCSubnetDatabase      `json:"databases"`
	Nodebalancers []VPCSubnetNodebalancers `json:"nodebalancers"`

	Created *time.Time `json:"-"`
	Updated *time.Time `json:"-"`
}

func (VPCSubnet) GetCreateOptions

func (v VPCSubnet) GetCreateOptions() VPCSubnetCreateOptions

func (VPCSubnet) GetUpdateOptions

func (v VPCSubnet) GetUpdateOptions() VPCSubnetUpdateOptions

func (*VPCSubnet) UnmarshalJSON

func (v *VPCSubnet) UnmarshalJSON(b []byte) error

type VPCSubnetCreateOptions

type VPCSubnetCreateOptions struct {
	Label string `json:"label"`
	IPv4  string `json:"ipv4"`

	// NOTE: IPv6 VPCs may not currently be available to all users.
	IPv6 []VPCSubnetCreateOptionsIPv6 `json:"ipv6,omitzero"`
}

type VPCSubnetCreateOptionsIPv6

type VPCSubnetCreateOptionsIPv6 struct {
	Range *string `json:"range,omitzero"`
}

VPCSubnetCreateOptionsIPv6 represents a single IPv6 range assigned to a VPC which is specified during a VPC subnet's creation. NOTE: IPv6 VPCs may not currently be available to all users.

type VPCSubnetDatabase

type VPCSubnetDatabase struct {
	ID         int      `json:"id"`
	IPv4Range  *string  `json:"ipv4_range"`
	IPv6Ranges []string `json:"ipv6_ranges"`
}

VPCSubnetDatabase represents a Linode currently assigned to a VPC subnet.

type VPCSubnetLinode

type VPCSubnetLinode struct {
	ID         int                        `json:"id"`
	Interfaces []VPCSubnetLinodeInterface `json:"interfaces"`
}

VPCSubnetLinode represents a Linode currently assigned to a VPC subnet.

type VPCSubnetLinodeInterface

type VPCSubnetLinodeInterface struct {
	ID       int  `json:"id"`
	Active   bool `json:"active"`
	ConfigID *int `json:"config_id"`
}

VPCSubnetLinodeInterface represents an interface on a Linode that is currently assigned to this VPC subnet.

type VPCSubnetNodebalancers

type VPCSubnetNodebalancers struct {
	ID         int                            `json:"id"`
	Ipv4Range  string                         `json:"ipv4_range"`
	Ipv6Ranges []VPCSubnetNodebalancersRanges `json:"ipv6_ranges"`
}

VPCSubnetNodebalancers represents a node balancer currently assigned to a VPC subnet.

type VPCSubnetNodebalancersRanges

type VPCSubnetNodebalancersRanges struct {
	Range string `json:"range"`
}

VPCSubnetNodebalancersRanges represents a single range assigned to a node balancer.

type VPCSubnetUpdateOptions

type VPCSubnetUpdateOptions struct {
	Label string `json:"label"`
}

type VPCUpdateOptions

type VPCUpdateOptions struct {
	Label       string `json:"label,omitzero"`
	Description string `json:"description,omitzero"`
}

type VerifyPhoneNumberOptions

type VerifyPhoneNumberOptions struct {
	OTPCode string `json:"otp_code"`
}

VerifyPhoneNumberOptions fields are those accepted by VerifyPhoneNumber

type Volume

type Volume struct {
	ID             int          `json:"id"`
	Label          string       `json:"label"`
	Status         VolumeStatus `json:"status"`
	Region         string       `json:"region"`
	Size           int          `json:"size"`
	LinodeID       *int         `json:"linode_id"`
	FilesystemPath string       `json:"filesystem_path"`
	Tags           []string     `json:"tags"`
	HardwareType   string       `json:"hardware_type"`
	LinodeLabel    string       `json:"linode_label"`
	IOReady        bool         `json:"io_ready"`
	Created        *time.Time   `json:"-"`
	Updated        *time.Time   `json:"-"`
	Encryption     string       `json:"encryption"`

	// NOTE: Locks can only be used with v4beta.
	Locks []LockType `json:"locks"`
}

Volume represents a linode volume object

func (Volume) GetCreateOptions

func (v Volume) GetCreateOptions() (createOpts VolumeCreateOptions)

GetCreateOptions converts a Volume to VolumeCreateOptions for use in CreateVolume

func (Volume) GetUpdateOptions

func (v Volume) GetUpdateOptions() (updateOpts VolumeUpdateOptions)

GetUpdateOptions converts a Volume to VolumeUpdateOptions for use in UpdateVolume

func (*Volume) UnmarshalJSON

func (v *Volume) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface

type VolumeAttachOptions

type VolumeAttachOptions struct {
	LinodeID           int   `json:"linode_id"`
	ConfigID           int   `json:"config_id,omitzero"`
	PersistAcrossBoots *bool `json:"persist_across_boots,omitzero"`
}

VolumeAttachOptions fields are those accepted by AttachVolume

type VolumeCloneOptions

type VolumeCloneOptions struct {
	Label string `json:"label"`
}

type VolumeCreateOptions

type VolumeCreateOptions struct {
	Label    string `json:"label,omitzero"`
	Region   string `json:"region,omitzero"`
	LinodeID int    `json:"linode_id,omitzero"`
	ConfigID int    `json:"config_id,omitzero"`
	// The Volume's size, in GiB. Minimum size is 10GiB, maximum size is 10240GiB. A "0" value will result in the default size.
	Size int `json:"size,omitzero"`
	// An array of tags applied to this object. Tags are for organizational purposes only.
	Tags               []string `json:"tags"`
	PersistAcrossBoots *bool    `json:"persist_across_boots,omitzero"`
	Encryption         string   `json:"encryption,omitzero"`
}

VolumeCreateOptions fields are those accepted by CreateVolume

type VolumeResizeOptions

type VolumeResizeOptions struct {
	Size int `json:"size"`
}

type VolumeStatus

type VolumeStatus string

VolumeStatus indicates the status of the Volume

const (
	// VolumeCreating indicates the Volume is being created and is not yet available for use
	VolumeCreating VolumeStatus = "creating"

	// VolumeActive indicates the Volume is online and available for use
	VolumeActive VolumeStatus = "active"

	// VolumeResizing indicates the Volume is in the process of upgrading its current capacity
	VolumeResizing VolumeStatus = "resizing"

	// VolumeContactSupport indicates there is a problem with the Volume. A support ticket must be opened to resolve the issue
	VolumeContactSupport VolumeStatus = "contact_support"
)

type VolumeType

type VolumeType struct {
	// contains filtered or unexported fields
}

VolumeType represents a single valid Volume type.

type VolumeTypePrice

type VolumeTypePrice struct {
	// contains filtered or unexported fields
}

VolumeTypePrice represents the base hourly and monthly prices for a volume type entry.

type VolumeTypeRegionPrice

type VolumeTypeRegionPrice struct {
	// contains filtered or unexported fields
}

VolumeTypeRegionPrice represents the regional hourly and monthly prices for a volume type entry.

type VolumeUpdateOptions

type VolumeUpdateOptions struct {
	Label string   `json:"label,omitzero"`
	Tags  []string `json:"tags,omitzero"`
}

VolumeUpdateOptions fields are those accepted by UpdateVolume

type WALSenderTimeout

type WALSenderTimeout struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type WALWriterDelay

type WALWriterDelay struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

type WaitTimeout

type WaitTimeout struct {
	Description     string `json:"description"`
	Example         int    `json:"example"`
	Maximum         int    `json:"maximum"`
	Minimum         int    `json:"minimum"`
	RequiresRestart bool   `json:"requires_restart"`
	Type            string `json:"type"`
}

Source Files

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL