## # Dynamically updated spec from the api.spec call # rubocop:disable all module LinodeAPI SPEC = {:type=>"group", :subs=> {:linode=> {:type=>:group, :subs=> {:list=> {:type=>:call, :desc=> "Returns a list of all Linodes user has access or delete to, including some properties", :throws=>[], :params=> {:linodeid=> {:desc=>"Limits the list to the specified LinodeID", :type=>:numeric, :required=>false}}}, :disk=> {:type=>:group, :subs=> {:delete=> {:type=>:call, :desc=>"", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:linodeid=>{:desc=>"", :type=>:numeric, :required=>true}, :diskid=>{:desc=>"", :type=>:numeric, :required=>true}}}, :update=> {:type=>:call, :desc=>"", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:label=> {:desc=>"The display label for this Disk", :type=>:string, :required=>false}, :isreadonly=> {:desc=>"Enable forced read-only for this Disk", :type=>:boolean, :required=>false}, :linodeid=>{:desc=>"", :type=>:numeric, :required=>false}, :diskid=>{:desc=>"", :type=>:numeric, :required=>true}}}, :create=> {:type=>:call, :desc=>"", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:label=> {:desc=>"The display label for this Disk", :type=>:string, :required=>true}, :size=> {:desc=>"The size in MB of this Disk.", :type=>:numeric, :required=>true}, :linodeid=>{:desc=>"", :type=>:numeric, :required=>true}, :type=> {:desc=> "The formatted type of this disk. Valid types are: ext3, swap, raw", :type=>:string, :required=>true}}}, :createfromstackscript=> {:type=>:call, :desc=>"", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:stackscriptudfresponses=> {:desc=> "JSON encoded name/value pairs, answering this StackScript's User Defined Fields", :type=>:string, :required=>"yes"}, :distributionid=> {:desc=> "Which Distribution to apply this StackScript to. Must be one from the script's DistributionIDList", :type=>:numeric, :required=>true}, :rootpass=> {:desc=>"The root user's password", :type=>:string, :required=>true}, :label=> {:desc=>"The label of this new disk image", :type=>:string, :required=>true}, :size=> {:desc=>"Size of this disk image in MB", :type=>:numeric, :required=>true}, :linodeid=>{:desc=>"", :type=>:numeric, :required=>true}, :stackscriptid=> {:desc=>"The StackScript to create this image from", :type=>:numeric, :required=>"yes"}}}, :list=> {:type=>:call, :desc=>"", :throws=>[], :params=> {:linodeid=>{:desc=>"", :type=>:numeric, :required=>true}, :diskid=>{:desc=>"", :type=>:numeric, :required=>false}}}, :createfromdistribution=> {:type=>:call, :desc=>"", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:rootsshkey=> {:desc=> "Optionally sets this string into /root/.ssh/authorized_keys upon distribution configuration.", :type=>:string, :required=>false}, :label=> {:desc=>"The label of this new disk image", :type=>:string, :required=>true}, :size=> {:desc=>"Size of this disk image in MB", :type=>:numeric, :required=>true}, :distributionid=> {:desc=> "The DistributionID to create this disk from. Found in avail.distributions()", :type=>:numeric, :required=>true}, :linodeid=>{:desc=>"", :type=>:numeric, :required=>true}, :rootpass=> {:desc=>"The root user's password", :type=>:string, :required=>true}}}, :duplicate=> {:type=>:call, :desc=>"Performs a bit-for-bit copy of a disk image.", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:linodeid=>{:desc=>"", :type=>:numeric, :required=>true}, :diskid=>{:desc=>"", :type=>:numeric, :required=>true}}}, :resize=> {:type=>:call, :desc=>"", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:size=> {:desc=>"The requested new size of this Disk in MB", :type=>:numeric, :required=>true}, :linodeid=>{:desc=>"", :type=>:numeric, :required=>true}, :diskid=>{:desc=>"", :type=>:numeric, :required=>true}}}}}, :webconsoletoken=> {:type=>:call, :desc=> "Generates a console token starting a web console LISH session for the requesting IP", :throws=>["NOTFOUND", "VALIDATION"], :params=>{:linodeid=>{:desc=>"", :type=>:numeric, :required=>true}}}, :create=> {:type=>:call, :desc=> "Creates a Linode and assigns you full privileges. There is a 75-linodes-per-hour limiter.", :throws=> ["NOACCESS", "CCFAILED", "VALIDATION", "LINODELIMITER", "ACCOUNTLIMIT"], :params=> {:planid=> {:desc=>"The desired PlanID available from avail.LinodePlans()", :type=>:numeric, :required=>true}, :paymentterm=> {:desc=> "Subscription term in months for non-metered customers. One of: 1, 12, or 24", :type=>:numeric, :required=>false}, :datacenterid=> {:desc=> "The DatacenterID from avail.datacenters() where you wish to place this new Linode", :type=>:numeric, :required=>true}}}, :update=> {:type=>:call, :desc=>"Updates a Linode's properties.", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:ms_ssh_user=>{:desc=>"", :type=>:string, :required=>false}, :alert_cpu_enabled=> {:desc=>"Enable the cpu usage email alert", :type=>:boolean, :required=>false}, :alert_bwin_enabled=> {:desc=>"Enable the incoming bandwidth email alert", :type=>:boolean, :required=>false}, :alert_cpu_threshold=> {:desc=>"CPU Alert threshold, percentage 0-800", :type=>:numeric, :required=>false}, :alert_bwquota_enabled=> {:desc=>"Enable the bw quote email alert", :type=>:boolean, :required=>false}, :backupwindow=>{:desc=>"", :type=>:numeric, :required=>false}, :alert_diskio_threshold=> {:desc=>"IO ops/sec", :type=>:numeric, :required=>false}, :backupweeklyday=>{:desc=>"", :type=>:numeric, :required=>false}, :label=> {:desc=>"This Linode's label", :type=>:string, :required=>false}, :watchdog=> {:desc=>"Enable the Lassie shutdown watchdog", :type=>:boolean, :required=>false}, :alert_diskio_enabled=> {:desc=>"Enable the disk IO email alert", :type=>:boolean, :required=>false}, :ms_ssh_port=>{:desc=>"", :type=>:numeric, :required=>false}, :lpm_displaygroup=> {:desc=> "Display group in the Linode list inside the Linode Manager", :type=>:string, :required=>false}, :ms_ssh_disabled=>{:desc=>"", :type=>:boolean, :required=>false}, :alert_bwquota_threshold=> {:desc=>"Percentage of monthly bw quota", :type=>:numeric, :required=>false}, :ms_ssh_ip=>{:desc=>"", :type=>:string, :required=>false}, :linodeid=>{:desc=>"", :type=>:numeric, :required=>true}, :alert_bwin_threshold=> {:desc=>"Mb/sec", :type=>:numeric, :required=>false}, :alert_bwout_threshold=> {:desc=>"Mb/sec", :type=>:numeric, :required=>false}, :alert_bwout_enabled=> {:desc=>"Enable the outgoing bandwidth email alert", :type=>:boolean, :required=>false}}}, :ip=> {:type=>:group, :subs=> {:list=> {:type=>:call, :desc=>"Lists a Linode's IP addresses.", :throws=>["NOTFOUND"], :params=> {:ipaddressid=> {:desc=>"If specified, limits the result to this IPAddressID", :type=>:numeric, :required=>false}, :linodeid=>{:desc=>"", :type=>:numeric, :required=>true}}}, :addprivate=> {:type=>:call, :desc=> "Assigns a Private IP to a Linode. Returns the IPAddressID that was added.", :throws=>["NOTFOUND"], :params=> {:linodeid=>{:desc=>"", :type=>:numeric, :required=>true}}}}}, :clone=> {:type=>:call, :desc=> "Creates a new Linode, assigns you full privileges, and then clones the specified LinodeID to the new Linode. There is a limit of 5 active clone operations per source Linode. It is recommended that the source Linode be powered down during the clone.", :throws=> ["NOACCESS", "NOTFOUND", "CCFAILED", "VALIDATION", "LINODELIMITER", "ACCOUNTLIMIT"], :params=> {:datacenterid=> {:desc=> "The DatacenterID from avail.datacenters() where you wish to place this new Linode", :type=>:numeric, :required=>true}, :paymentterm=> {:desc=> "Subscription term in months for non-metered customers. One of: 1, 12, or 24", :type=>:numeric, :required=>false}, :planid=> {:desc=>"The desired PlanID available from avail.LinodePlans()", :type=>:numeric, :required=>true}, :linodeid=> {:desc=>"The LinodeID that you want cloned", :type=>:numeric, :required=>true}}}, :delete=> {:type=>:call, :desc=> "Immediately removes a Linode from your account and issues a pro-rated credit back to your account, if applicable. To prevent accidental deletes, this requires the Linode has no Disk images. You must first delete its disk images.\"", :throws=>["NOTFOUND", "LINODENOTEMPTY"], :params=> {:linodeid=> {:desc=>"The LinodeID to delete", :type=>:numeric, :required=>true}, :skipchecks=> {:desc=> "Skips the safety checks and will always delete the Linode", :type=>:boolean, :required=>false}}}, :reboot=> {:type=>:call, :desc=>"Issues a shutdown, and then boot job for a given LinodeID.", :throws=>["NOTFOUND"], :params=> {:linodeid=>{:desc=>"", :type=>:numeric, :required=>true}, :configid=>{:desc=>"", :type=>:numeric, :required=>false}}}, :config=> {:type=>:group, :subs=> {:list=> {:type=>:call, :desc=>"Lists a Linode's Configuration Profiles.", :throws=>["NOTFOUND"], :params=> {:linodeid=>{:desc=>"", :type=>:numeric, :required=>true}, :configid=>{:desc=>"", :type=>:numeric, :required=>false}}}, :delete=> {:type=>:call, :desc=>"Deletes a Linode Configuration Profile.", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:linodeid=>{:desc=>"", :type=>:numeric, :required=>true}, :configid=>{:desc=>"", :type=>:numeric, :required=>true}}}, :update=> {:type=>:call, :desc=>"Updates a Linode Configuration Profile.", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:rootdevicecustom=> {:desc=>"A custom root device setting.", :type=>:string, :required=>false}, :comments=> {:desc=>"Comments you wish to save along with this profile", :type=>:string, :required=>false}, :devtmpfs_automount=> {:desc=> "Controls if pv_ops kernels should automount devtmpfs at boot. ", :type=>:boolean, :required=>false}, :helper_disableupdatedb=> {:desc=>"Enable the disableUpdateDB filesystem helper", :type=>:boolean, :required=>false}, :label=> {:desc=>"The Label for this profile", :type=>:string, :required=>false}, :configid=>{:desc=>"", :type=>:numeric, :required=>true}, :disklist=> {:desc=> "A comma delimited list of DiskIDs; position reflects device node. The 9th element for specifying the initrd.", :type=>:string, :required=>false}, :runlevel=> {:desc=>"One of 'default', 'single', 'binbash' ", :type=>:string, :required=>false}, :rootdevicero=> {:desc=> "Enables the 'ro' kernel flag. Modern distros want this. ", :type=>:boolean, :required=>false}, :rootdevicenum=> {:desc=> "Which device number (1-8) that contains the root partition. 0 to utilize RootDeviceCustom.", :type=>:numeric, :required=>false}, :helper_xen=> {:desc=> "Enable the Xen filesystem helper. Corrects fstab and inittab/upstart entries depending on the kernel you're booting. You want this.", :type=>:boolean, :required=>false}, :ramlimit=> {:desc=>"RAMLimit in MB. 0 for max.", :type=>:numeric, :required=>false}, :linodeid=>{:desc=>"", :type=>:numeric, :required=>false}, :kernelid=> {:desc=> "The KernelID for this profile. Found in avail.kernels()", :type=>:numeric, :required=>false}, :helper_depmod=> {:desc=> "Creates an empty modprobe file for the kernel you're booting. ", :type=>:boolean, :required=>false}}}, :create=> {:type=>:call, :desc=>"Creates a Linode Configuration Profile.", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:rootdevicecustom=> {:desc=>"A custom root device setting.", :type=>:string, :required=>false}, :comments=> {:desc=>"Comments you wish to save along with this profile", :type=>:string, :required=>false}, :devtmpfs_automount=> {:desc=> "Controls if pv_ops kernels should automount devtmpfs at boot. ", :type=>:boolean, :required=>false}, :helper_disableupdatedb=> {:desc=>"Enable the disableUpdateDB filesystem helper", :type=>:boolean, :required=>false}, :label=> {:desc=>"The Label for this profile", :type=>:string, :required=>true}, :disklist=> {:desc=> "A comma delimited list of DiskIDs; position reflects device node. The 9th element for specifying the initrd.", :type=>:string, :required=>false}, :runlevel=> {:desc=>"One of 'default', 'single', 'binbash' ", :type=>:string, :required=>false}, :rootdevicero=> {:desc=> "Enables the 'ro' kernel flag. Modern distros want this. ", :type=>:boolean, :required=>false}, :rootdevicenum=> {:desc=> "Which device number (1-8) that contains the root partition. 0 to utilize RootDeviceCustom.", :type=>:numeric, :required=>false}, :helper_xen=> {:desc=> "Enable the Xen filesystem helper. Corrects fstab and inittab/upstart entries depending on the kernel you're booting. You want this.", :type=>:boolean, :required=>false}, :ramlimit=> {:desc=>"RAMLimit in MB. 0 for max.", :type=>:numeric, :required=>false}, :linodeid=>{:desc=>"", :type=>:numeric, :required=>true}, :helper_depmod=> {:desc=> "Creates an empty modprobe file for the kernel you're booting. ", :type=>:boolean, :required=>false}, :kernelid=> {:desc=> "The KernelID for this profile. Found in avail.kernels()", :type=>:numeric, :required=>true}}}}}, :resize=> {:type=>:call, :desc=> "Resizes a Linode from one plan to another. Immediately shuts the Linode down, charges/credits the account, and issue a migration to another host server.", :throws=>["NOTFOUND", "CCFAILED", "VALIDATION"], :params=> {:planid=> {:desc=>"The desired PlanID available from avail.LinodePlans()", :type=>:numeric, :required=>true}, :linodeid=>{:desc=>"", :type=>:numeric, :required=>true}}}, :job=> {:type=>:group, :subs=> {:list=> {:type=>:call, :desc=>"", :throws=>[], :params=> {:jobid=> {:desc=>"Limits the list to the specified JobID", :type=>:numeric, :required=>false}, :linodeid=>{:desc=>"", :type=>:numeric, :required=>true}, :pendingonly=> {:desc=>"", :type=>:boolean, :required=>false}}}}}, :boot=> {:type=>:call, :desc=> "Issues a boot job for the provided ConfigID. If no ConfigID is provided boots the last used configuration profile, or the first configuration profile if this Linode has never been booted.", :throws=>["NOTFOUND"], :params=> {:linodeid=>{:desc=>"", :type=>:numeric, :required=>true}, :configid=> {:desc=> "The ConfigID to boot, available from linode.config.list().", :type=>:numeric, :required=>false}}}, :mutate=> {:type=>:call, :desc=>"Upgrades a Linode to its next generation.", :throws=>["NOTFOUND", "VALIDATION"], :params=>{:linodeid=>{:desc=>"", :type=>:numeric, :required=>true}}}, :shutdown=> {:type=>:call, :desc=>"Issues a shutdown job for a given LinodeID.", :throws=>["NOTFOUND"], :params=> {:linodeid=>{:desc=>"", :type=>:numeric, :required=>true}}}}}, :nodebalancer=> {:type=>:group, :subs=> {:node=> {:type=>:group, :subs=> {:update=> {:type=>:call, :desc=>"Updates a Node's properties", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:label=> {:desc=>"This backend Node's label", :type=>:string, :required=>false}, :nodeid=>{:desc=>"", :type=>:numeric, :required=>true}, :mode=> {:desc=> "The connections mode for this node. One of 'accept', 'reject', or 'drain'", :type=>:string, :required=>false}, :weight=> {:desc=> "Load balancing weight, 1-255. Higher means more connections.", :type=>:numeric, :required=>false}, :address=> {:desc=> "The address:port combination used to communicate with this Node", :type=>:string, :required=>false}}}, :list=> {:type=>:call, :desc=> "Returns a list of Nodes associated with a NodeBalancer Config", :throws=>[], :params=> {:nodeid=> {:desc=>"Limits the list to the specified NodeID", :type=>:numeric, :required=>false}, :configid=>{:desc=>"", :type=>:numeric, :required=>true}}}, :create=> {:type=>:call, :desc=>"", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:label=> {:desc=>"This backend Node's label", :type=>:string, :required=>true}, :mode=> {:desc=> "The connections mode for this node. One of 'accept', 'reject', or 'drain'", :type=>:string, :required=>false}, :configid=> {:desc=>"The parent ConfigID to attach this Node to", :type=>:numeric, :required=>true}, :weight=> {:desc=> "Load balancing weight, 1-255. Higher means more connections.", :type=>:numeric, :required=>false}, :address=> {:desc=> "The address:port combination used to communicate with this Node", :type=>:string, :required=>true}}}, :delete=> {:type=>:call, :desc=>"Deletes a Node from a NodeBalancer Config", :throws=>["NOTFOUND"], :params=> {:nodeid=> {:desc=>"The NodeID to delete", :type=>:numeric, :required=>true}}}}}, :create=> {:type=>:call, :desc=>"", :throws=>["NOACCESS", "CCFAILED", "VALIDATION"], :params=> {:label=> {:desc=>"This NodeBalancer's label", :type=>:string, :required=>false}, :clientconnthrottle=> {:desc=> "To help mitigate abuse, throttle connections per second, per client IP. 0 to disable. Max of 20.", :type=>:numeric, :required=>false}, :datacenterid=> {:desc=> "The DatacenterID from avail.datacenters() where you wish to place this new NodeBalancer", :type=>:numeric, :required=>true}, :paymentterm=> {:desc=>"Subscription term in months. One of: 0, 1, 12, or 24", :type=>:numeric, :required=>true}}}, :delete=> {:type=>:call, :desc=> "Immediately removes a NodeBalancer from your account and issues a pro-rated credit back to your account, if applicable.", :throws=>["NOTFOUND"], :params=> {:nodebalancerid=> {:desc=>"The NodeBalancerID to delete", :type=>:numeric, :required=>true}}}, :config=> {:type=>:group, :subs=> {:create=> {:type=>:call, :desc=>"", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:stickiness=> {:desc=> "Session persistence. One of 'none', 'table', 'http_cookie'", :type=>:string, :required=>false}, :check_path=> {:desc=>"When check=http, the path to request", :type=>:string, :required=>false}, :check_body=> {:desc=> "When check=http_body, a regex against the expected result body", :type=>:string, :required=>false}, :check_interval=> {:desc=>"Seconds between health check probes. 2-3600", :type=>:numeric, :required=>false}, :algorithm=> {:desc=> "Balancing algorithm. One of 'roundrobin', 'leastconn', 'source'", :type=>:string, :required=>false}, :nodebalancerid=> {:desc=>"The parent NodeBalancer's ID", :type=>:numeric, :required=>true}, :check_attempts=> {:desc=> "Number of failed probes before taking a node out of rotation. 1-30", :type=>:string, :required=>false}, :port=> {:desc=>"Port to bind to on the public interfaces. 1-65534", :type=>:numeric, :required=>false}, :check=> {:desc=> "Perform active health checks on the backend nodes. One of 'connection', 'http', 'http_body'", :type=>:string, :required=>false}, :ssl_key=> {:desc=> "Unpassphrased private key for the SSL certificate when protocol is 'https'", :type=>:string, :required=>false}, :protocol=> {:desc=>"Either 'tcp', 'http', or 'https'", :type=>:string, :required=>false}, :check_timeout=> {:desc=> "Seconds to wait before considering the probe a failure. 1-30. Must be less than check_interval.", :type=>:string, :required=>false}, :ssl_cert=> {:desc=> "SSL certificate served by the NodeBalancer when the protocol is 'https'", :type=>:string, :required=>false}}}, :update=> {:type=>:call, :desc=>"Updates a Config's properties", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:stickiness=> {:desc=> "Session persistence. One of 'none', 'table', 'http_cookie'", :type=>:string, :required=>false}, :check_path=> {:desc=>"When check=http, the path to request", :type=>:string, :required=>false}, :check_body=> {:desc=> "When check=http_body, a regex against the expected result body", :type=>:string, :required=>false}, :check_interval=> {:desc=>"Seconds between health check probes. 2-3600", :type=>:numeric, :required=>false}, :algorithm=> {:desc=> "Balancing algorithm. One of 'roundrobin', 'leastconn', 'source'", :type=>:string, :required=>false}, :configid=>{:desc=>"", :type=>:numeric, :required=>true}, :check_attempts=> {:desc=> "Number of failed probes before taking a node out of rotation. 1-30", :type=>:string, :required=>false}, :port=> {:desc=>"Port to bind to on the public interfaces. 1-65534", :type=>:numeric, :required=>false}, :check=> {:desc=> "Perform active health checks on the backend nodes. One of 'connection', 'http', 'http_body'", :type=>:string, :required=>false}, :ssl_key=> {:desc=> "Unpassphrased private key for the SSL certificate when protocol is 'https'", :type=>:string, :required=>false}, :protocol=> {:desc=>"Either 'tcp', 'http', or 'https'", :type=>:string, :required=>false}, :check_timeout=> {:desc=> "Seconds to wait before considering the probe a failure. 1-30. Must be less than check_interval.", :type=>:string, :required=>false}, :ssl_cert=> {:desc=> "SSL certificate served by the NodeBalancer when the protocol is 'https'", :type=>:string, :required=>false}}}, :delete=> {:type=>:call, :desc=>"Deletes a NodeBalancer's Config", :throws=>["NOTFOUND"], :params=> {:configid=> {:desc=>"The NodeBalancerID to delete", :type=>:numeric, :required=>true}}}, :list=> {:type=>:call, :desc=> "Returns a list of NodeBalancers this user has access or delete to, including their properties", :throws=>[], :params=> {:nodebalancerid=>{:desc=>"", :type=>:numeric, :required=>true}, :configid=> {:desc=>"Limits the list to the specified ConfigID", :type=>:numeric, :required=>false}}}}}, :update=> {:type=>:call, :desc=>"Updates a NodeBalancer's properties", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:label=> {:desc=>"This NodeBalancer's label", :type=>:string, :required=>false}, :clientconnthrottle=> {:desc=> "To help mitigate abuse, throttle connections per second, per client IP. 0 to disable. Max of 20.", :type=>:numeric, :required=>false}, :nodebalancerid=>{:desc=>"", :type=>:numeric, :required=>true}}}, :list=> {:type=>:call, :desc=> "Returns a list of NodeBalancers this user has access or delete to, including their properties", :throws=>[], :params=> {:nodebalancerid=> {:desc=>"Limits the list to the specified NodeBalancerID", :type=>:numeric, :required=>false}}}}}, :domain=> {:type=>:group, :subs=> {:update=> {:type=>:call, :desc=>"Update a domain record.", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:domainid=>{:desc=>"", :type=>:numeric, :required=>true}, :description=> {:desc=>"Currently undisplayed.", :type=>:string, :required=>false}, :retry_sec=>{:desc=>"", :type=>:numeric, :required=>false}, :expire_sec=>{:desc=>"", :type=>:numeric, :required=>false}, :status=> {:desc=>"0, 1, or 2 (disabled, active, edit mode)", :type=>:numeric, :required=>false}, :master_ips=> {:desc=> "When type=slave, the zone's master DNS servers list, semicolon separated ", :type=>:string, :required=>false}, :refresh_sec=>{:desc=>"", :type=>:numeric, :required=>false}, :lpm_displaygroup=> {:desc=> "Display group in the Domain list inside the Linode DNS Manager", :type=>:string, :required=>false}, :soa_email=> {:desc=>"Required when type=master", :type=>:string, :required=>false}, :ttl_sec=>{:desc=>"", :type=>:numeric, :required=>false}, :domain=> {:desc=>"The zone's name", :type=>:string, :required=>false}, :type=>{:desc=>"master or slave", :type=>:string, :required=>false}, :axfr_ips=> {:desc=> "IP addresses allowed to AXFR the entire zone, semicolon separated", :type=>:string, :required=>false}}}, :create=> {:type=>:call, :desc=>"Create a domain record.", :throws=>["NOACCESS", "VALIDATION"], :params=> {:soa_email=> {:desc=>"Required when type=master", :type=>:string, :required=>false}, :description=> {:desc=>"Currently undisplayed.", :type=>:string, :required=>false}, :ttl_sec=>{:desc=>"", :type=>:numeric, :required=>false}, :retry_sec=>{:desc=>"", :type=>:numeric, :required=>false}, :expire_sec=>{:desc=>"", :type=>:numeric, :required=>false}, :status=> {:desc=>"0, 1, or 2 (disabled, active, edit mode)", :type=>:numeric, :required=>false}, :domain=> {:desc=>"The zone's name", :type=>:string, :required=>true}, :master_ips=> {:desc=> "When type=slave, the zone's master DNS servers list, semicolon separated ", :type=>:string, :required=>false}, :refresh_sec=>{:desc=>"", :type=>:numeric, :required=>false}, :lpm_displaygroup=> {:desc=> "Display group in the Domain list inside the Linode DNS Manager", :type=>:string, :required=>false}, :type=>{:desc=>"master or slave", :type=>:string, :required=>true}, :axfr_ips=> {:desc=> "IP addresses allowed to AXFR the entire zone, semicolon separated", :type=>:string, :required=>false}}}, :resource=> {:type=>:group, :subs=> {:delete=> {:type=>:call, :desc=>"", :throws=>["NOTFOUND"], :params=> {:domainid=>{:desc=>"", :type=>:numeric, :required=>true}, :resourceid=>{:desc=>"", :type=>:numeric, :required=>true}}}, :list=> {:type=>:call, :desc=>"", :throws=>[], :params=> {:domainid=>{:desc=>"", :type=>:numeric, :required=>true}, :resourceid=>{:desc=>"", :type=>:numeric, :required=>false}}}, :create=> {:type=>:call, :desc=>"Create a domain record.", :throws=>["NOACCESS", "VALIDATION"], :params=> {:domainid=>{:desc=>"", :type=>:numeric, :required=>true}, :port=>{:desc=>"", :type=>:numeric, :required=>false}, :name=> {:desc=> "The hostname or FQDN. When Type=MX the subdomain to delegate to the Target MX server.", :type=>:string, :required=>false}, :weight=>{:desc=>"", :type=>:numeric, :required=>false}, :ttl_sec=> {:desc=>"TTL. Leave as 0 to accept our default.", :type=>:numeric, :required=>false}, :priority=> {:desc=>"Priority for MX and SRV records, 0-255", :type=>:numeric, :required=>false}, :target=> {:desc=> "When Type=MX the hostname. When Type=CNAME the target of the alias. When Type=TXT the value of the record. \n\t\tWhen Type=A or AAAA the token of '[remote_addr]' will be substituted with the IP address of the request.", :type=>:string, :required=>false}, :protocol=> {:desc=> "The protocol to append to an SRV record. Ignored on other record types.", :type=>:string, :required=>false}, :type=> {:desc=>"One of: NS, MX, A, AAAA, CNAME, TXT, or SRV", :type=>:string, :required=>true}}}, :update=> {:type=>:call, :desc=>"Update a domain record.", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:domainid=>{:desc=>"", :type=>:numeric, :required=>false}, :port=>{:desc=>"", :type=>:numeric, :required=>false}, :resourceid=>{:desc=>"", :type=>:numeric, :required=>true}, :name=> {:desc=> "The hostname or FQDN. When Type=MX the subdomain to delegate to the Target MX server.", :type=>:string, :required=>false}, :weight=>{:desc=>"", :type=>:numeric, :required=>false}, :ttl_sec=> {:desc=>"TTL. Leave as 0 to accept our default.", :type=>:numeric, :required=>false}, :priority=> {:desc=>"Priority for MX and SRV records, 0-255", :type=>:numeric, :required=>false}, :target=> {:desc=> "When Type=MX the hostname. When Type=CNAME the target of the alias. When Type=TXT the value of the record. \n\t\tWhen Type=A or AAAA the token of '[remote_addr]' will be substituted with the IP address of the request.", :type=>:string, :required=>false}, :protocol=> {:desc=> "The protocol to append to an SRV record. Ignored on other record types.", :type=>:string, :required=>false}}}}}, :list=> {:type=>:call, :desc=>"Lists domains you have access to.", :throws=>[], :params=> {:domainid=> {:desc=>"Limits the list to the specified DomainID", :type=>:numeric, :required=>false}}}, :delete=> {:type=>:call, :desc=>"", :throws=>["NOTFOUND"], :params=> {:domainid=>{:desc=>"", :type=>:numeric, :required=>true}}}}}, :avail=> {:type=>:group, :subs=> {:datacenters=> {:type=>:call, :desc=>"Returns a list of Linode data center facilities.", :throws=>[], :params=>{}}, :linodeplans=> {:type=>:call, :desc=> "Returns a structure of Linode PlanIDs containing the Plan label and the availability in each Datacenter. Please note, this method is deprecated and will be removed in the future.", :throws=>[], :params=> {:planid=> {:desc=>"Limits the list to the specified PlanID", :type=>:numeric, :required=>false}}}, :stackscripts=> {:type=>:call, :desc=>"Returns a list of available public StackScripts.", :throws=>[], :params=> {:distributionid=> {:desc=> "Limit the results to StackScripts that can be applied to this DistributionID", :type=>:numeric, :required=>false}, :keywords=> {:desc=>"Search terms", :type=>:string, :required=>false}, :distributionvendor=> {:desc=>"Debian, Ubuntu, Fedora, etc.", :type=>:string, :required=>false}}}, :distributions=> {:type=>:call, :desc=>"Returns a list of available Linux Distributions.", :throws=>[], :params=> {:distributionid=> {:desc=>"Limits the results to the specified DistributionID", :type=>:numeric, :required=>false}}}, :kernels=> {:type=>:call, :desc=>"List available kernels.", :throws=>[], :params=> {:isxen=> {:desc=>"Limits the results to show only Xen kernels", :type=>:boolean, :required=>false}, :kernelid=>{:desc=>"", :type=>:numeric, :required=>false}}}}}, :account=> {:type=>:group, :subs=> {:estimateinvoice=> {:type=>:call, :desc=> "Estimates the invoice for adding a new Linode or NodeBalancer as well as resizing a Linode. This returns two fields: PRICE which is the estimated cost of the invoice, and INVOICE_TO which is the date invoice would be though with timezone set to America/New_York", :throws=>["VALIDATION"], :params=> {:paymentterm=> {:desc=> "Subscription term in months. One of: 1, 12, or 24. This is required for modes 'linode_new' and 'nodebalancer_new'.", :type=>:numeric, :required=>false}, :mode=> {:desc=> "This is one of the following options: 'linode_new', 'linode_resize', or 'nodebalancer_new'.", :type=>:string, :required=>true}, :planid=> {:desc=> "The desired PlanID available from avail.LinodePlans(). This is required for modes 'linode_new' and 'linode_resize'.", :type=>:numeric, :required=>false}, :linodeid=> {:desc=> "This is the LinodeID you want to resize and is required for mode 'linode_resize'.", :type=>:numeric, :required=>false}}}, :updatecard=> {:type=>:call, :desc=>"", :throws=>[], :params=> {:ccexpmonth=>{:desc=>"", :type=>:numeric, :required=>true}, :ccexpyear=>{:desc=>"", :type=>:numeric, :required=>true}, :ccnumber=>{:desc=>"", :type=>:numeric, :required=>true}}}, :info=> {:type=>:call, :desc=> "Shows information about your account such as the date your account was opened as well as your network utilization for the current month in gigabytes.", :throws=>[], :params=>{}}, :paybalance=> {:type=>:call, :desc=>"Pays current balance on file, returning it in the response.", :throws=> ["CCEXPIRED", "CCFAILED", "NOACCESS", "PAYMENTLIMITER", "VALIDATION"], :params=>{}}}}, :stackscript=> {:type=>:group, :subs=> {:create=> {:type=>:call, :desc=>"Create a StackScript.", :throws=>["NOACCESS", "VALIDATION"], :params=> {:label=> {:desc=>"The Label for this StackScript", :type=>:string, :required=>true}, :rev_note=>{:desc=>"", :type=>:string, :required=>false}, :script=> {:desc=>"The actual script", :type=>:string, :required=>true}, :ispublic=> {:desc=> "Whether this StackScript is published in the Library, for everyone to use", :type=>:boolean, :required=>false}, :distributionidlist=> {:desc=> "Comma delimited list of DistributionIDs that this script works on ", :type=>:string, :required=>true}, :description=>{:desc=>"", :type=>:string, :required=>false}}}, :delete=> {:type=>:call, :desc=>"", :throws=>["NOTFOUND"], :params=> {:stackscriptid=>{:desc=>"", :type=>:numeric, :required=>true}}}, :update=> {:type=>:call, :desc=>"Update a StackScript.", :throws=>["NOTFOUND", "VALIDATION"], :params=> {:rev_note=>{:desc=>"", :type=>:string, :required=>false}, :script=> {:desc=>"The actual script", :type=>:string, :required=>false}, :description=>{:desc=>"", :type=>:string, :required=>false}, :distributionidlist=> {:desc=> "Comma delimited list of DistributionIDs that this script works on ", :type=>:string, :required=>false}, :label=> {:desc=>"The Label for this StackScript", :type=>:string, :required=>false}, :ispublic=> {:desc=> "Whether this StackScript is published in the Library, for everyone to use", :type=>:boolean, :required=>false}, :stackscriptid=>{:desc=>"", :type=>:numeric, :required=>true}}}, :list=> {:type=>:call, :desc=>"Lists StackScripts you have access to.", :throws=>[], :params=> {:stackscriptid=> {:desc=>"Limits the list to the specified StackScriptID", :type=>:numeric, :required=>false}}}}}, :api=> {:type=>:group, :subs=> {:spec=> {:type=>:call, :desc=> "Returns a data structure of the entire Linode API specification. This method does not require authorization.

For example: https://api.linode.com/?api_action=api.spec", :throws=>[], :params=>{}}}}, :user=> {:type=>:group, :subs=> {:getapikey=> {:type=>:call, :desc=> "Returns a user's API key. If no API key exists, one is generated. This method does not require an api_key to be passed in.", :throws=>[], :params=> {:password=>{:desc=>"", :type=>:string, :required=>true}, :username=>{:desc=>"", :type=>:string, :required=>true}}}}}, :test=> {:type=>:group, :subs=> {:echo=> {:type=>:call, :desc=>"Echos back parameters that were passed in.", :throws=>[], :params=>{}}}}}} end