Changelog
Latest updates from the Linode team
2018-12-03 00:00:00 -1200 -1200
API
4.0.10

4.0.10: 2018-12-03

Added:

  • Added ‘tags’ to NodeBalancers
    • The NodeBalancer object now includes “tags”, an array of string
    • POST /nodebalancers now accepts “tags”, an array of strings
    • GET /tags/:tag now returns tagged NodeBalancers in addition to other types
2018-11-18 11:02:00 -0400 -0400
API
4.0.9

4.0.9: 2018-11-19

Added

  • Updates tag endpoints to accept and return Volumes
    • GET /tags
    • POST /tags
  • Added tags to Volumes

Fixed

  • Fixed validating RDNS when set via /networking endpoint
2018-11-05 00:00:00 -1200 -1200
API
4.0.8

4.0.8: 2018-11-05

Added:

  • Added ‘tags’ to Domains
    • The Domain object now includes “tags”, an array of strings
    • POST /domains now accepts “tags”, an array of strings
    • GET /tags/:tag now returns tagged Domains in addition to Linodes
2018-10-24 00:00:00 -1200 -1200
API
4.0.7

4.0.7: 2018-10-24

Added:

  • Added “migration_imminent” notification for Linodes that will migrate soon
  • POST /linode/instances/:id/migrate can now initiate scheduled migrations

Fixed:

  • Fixed bad interaction between clone and global backups_enabled that resulted in failed clone
2018-09-24 11:02:00 -0400 -0400
API
4.0.6

4.0.6: 2018-09-24

Added

  • Added closeable support tickets via /support/tickets/:id/close
    • Only applies to tickets that are closeable
2018-09-10 11:02:00 -0400 -0400
API
4.0.5

4.0.5: 2018-09-10

Added

  • Added backups-enabled to /account/settings to automatically add backups service for new Linodes.
  • Added tags for Linodes
  • Added linode/types-legacy collection, returning all Linode types that cannot be deployed.
  • Added successor field to Linode Type object.

Fixed

  • Fixed issue with backup windows when a window could not be determined.
  • Fixed bug related to reattaching volumes to another Linode when the original Linode is deleted.
2018-08-28 11:02:00 -0400 -0400
API
4.0.4

4.0.4: 2018-08-28

Added

  • Added User SSH Keys
    • Allows storage and deployment of public SSH Keys
    • Added GET /profile/sshkeys
    • Added POST /profile/sshkeys
    • Added GET /profile/sshkeys/{ssh_key_id}
    • Added PUT /profile/sshkeys/{ssh_key_id}
    • Added DELETE /profile/sshkeys/{ssh_key_id}
    • Added SSH Key labels to User object
  • Allow deploying Linodes with stored SSH Keys
    • Added authorized_users to POST /linodes/instances/
  • Allow rebuilding Linodes with stored SSH Keys
    • Added authorized_users to POST /linodes/instances/{linode_id}/rebuild
  • Allow deploying Disks with stored SSH Keys
    • Added authorized_users to POST /linodes/instances/{linode_id}/disks
  • NodeBalancer config rebuild
    • Allows fast track config/node rebuilding
    • POST nodebalancers/{nodebalancerId}/configs/{configId}/rebuild
  • Add expires to Image map for automatic Images

Fixed

  • Removed duplicative Event for StackScript creation
  • Fixed typo in DNS error message
  • Added ‘field’ to StackScript errors
2018-07-12 11:02:00 -0400 -0400
API
4.0.3

4.0.3: 2018-07-12

Added

  • Added POST /linode/instances/{linodeId}/migrate
    • In some circumstances, a Linode may have pending migrations scheduled that that you can initiate when convenient.
    • This endpoint initiates the scheduled migration, which will shut the Linode down, migrate it, and then bring it back to its original state.
  • Added POST /domains/import
    • Imports a domain zone from a remote nameserver that allows zone transfers (AXFR).
  • Added ability to create a Linode with private networking enabled.
    • POST /linode/instances now accepts a boolean “private_ip”.
    • If true, the created Linode will have private networking enabled when created.
  • Added optional “config_id” to POST /linode/instances/{linodeId}/reboot

Fixed

  • Fixed example response for POST /volumes/{volumeId}/attach
2018-06-20 11:02:00 -0400 -0400
API
4.0.2

4.0.2: 2018-06-20

Added

  • Added fast-track NodeBalancer creation
    • POST /nodebalancers now accepts “configs”, details of configs to create
    • Each config in “configs” must have at least one node in “nodes”
  • Added X-Spec-Version header to API responses
  • Added persistent ordering to all collections
    • All collections are now returned in a predictable, consistent order
  • Added watchdog_enabled to Linode object
  • Added X-Spec-Version header to all responses
    • This header describes the version of our OpenAPI spec that describes this API

Fixed

  • Require shutting down before resetting root password for a disk
  • Fixed url for Community events
2018-05-14 11:02:00 -0400 -0400
API
4.0.1

4.0.1: 2018-05-14

Added

Added missing “resizing” Linode status.

Fixed

  • Fixed bug where Linodes got stuck in rescue mode.
  • Fixed bug when attaching a Volume to a Linode with no configs.
  • API now returns 500 when an IP Address cannot be allocated.
    • Previously, this incorrectly returned a 400.
  • Fixed 500 on POST /domains/:id/records with service.
    • Bug occurred when service was sent into this endpoint without "type": "SRV".
  • Fixed errors caused by illegal characters in URL errors.
2018-04-02 11:02:00 -0400 -0400
API
4.0.0

4.0.0: 2018-04-02

Added

  • Added fields to Notification object
    • Added “label” - a brief description of the notification
    • Added “severity” - one of “minor”, “major”, or “critical”
    • Added “until” - a datetime or null
    • Added “notice” to possible values for “type”
  • Added POST /linode/instances/:id/disks/:id/clone
    • This used to be at POST /linode/instances/:id/disks/:id
  • GET /linode/instances is now filterable on “id”
  • GET /account/events is now filterable on “id”

Changed

  • Unify IPv4, IPv6 GET/POST; use “type”: “public”
  • Moved /managed/linode_settings to /managed/linode-settings
    • /managed/linode_settings/:id moved to /managed/linode-settings/:id
    • This was to keep our convention of using dashes in URLs instead of underscores
  • Password no longer accepted in POST /account/users
    • You may no longer provide a password when creating a new user
    • New users will immediately receive a password reset email to set their password
  • Changed returned Region IDs
    • Slugs such as “us-east-1a” are now returned as “us-east”
    • These values had previosuly been accepted as input.
    • “us-south” was renamed “us-central”
    • Old values are still accepted (and translated) in requests
  • Moved GET/PUT for range/pool v6 addresses to /networking/ips
    • GET /networking/ipv6/:address moved to GET /networking/ips/:address
    • PUT /networking/ipv6/:address moved to GET /networking/ips/:address
  • /linode/instances/$id/rebuild returns a Linode
  • Fixed inconsistent responses for action endpoints
    • POST /linode/instances/:id/backups-enable now returns {} on success
    • POST /linode/instances/:id/backups-disable now returns {} on success
  • Creating a payment now returns the new payment
    • POST /account/payments now returns a Payment object
    • POST /account/payments/paypal/execute now returns a Payment object
  • Moved ipv4-specific networking endpoints
    • POST /networking/ip-assign moved to POST /networking/ipv4/assign
    • POST /networking/ip-sharing moved to POST /networking/ipv4/share
    • POST /networking/ipv4/assign now returns {} on success

Removed:

  • Removed “addresses” from GET /linode/instances/:id/ips response
    • These addresses are now returned in GET /networking/ips
  • Removed the ability to change another user’s email address
    • PUT /account/users/:username no longer accepts “email”
    • PUT /profile can still be used to change your own email address
2018-03-14 11:02:00 -0400 -0400
API

2018-03-14

Added

  • Added support for refresh tokens
    • Apps with an active refresh token are returned in GET /profile/apps
    • Revoking an app’s access to your account expires any refresh tokens it has

Changed

  • Removed the ability to change passwords
    • Removed POST /profile/password
    • Removed POST /account/users/:username/password
    • To reset your password, use manager.linode.com

Fixed

  • Fix output for ipv6 RDNS endpoints
    • PUT /networking/ips/:address now returns the modified v6 address
    • PUT /linode/instances/:id/ips/:address now returns the modified v6 address
    • Nothing has changed for these endpoints when :address is a v4 address
  • Fixed bug setting RDNS for v6 addresses
  • Fixed bug making it impossible to provide authorized_keys when rebuilding a Linode
2018-02-26 11:02:00 -0400 -0400
API

2018-02-26

Added

  • Added GET /networking/ips
    • Returns all ipv4 and ipv6 addresses on your account
  • Added support for short region slugs
    • Omitting the suffix of a region slug picks a default
    • For example, “us-east” is treated as “us-east-1a”
  • Support tickets ordered by status, update date

Changed

  • Unified IPv4 and IPv6 Objects
    • Removed “range” from IPv6 object
    • Added “linode_id” to IPv6 object
    • Added “region” to IPv6 object
  • Removed GET /networking/ipv4
  • Separated /networking/ipv6 into /pools and /ranges
    • Added GET /networking/ipv6/pools
    • Added GET /networking/ipv6/ranges
    • Removed GET /networking/ipv6
  • Changed GET /linode/instances/:id/ips response
    • ipv6.link_local is now a full IPAddress object
  • Improved response for unrestricted user’s grants
    • Changed GET /profile/grants and GET /account/users/:username/grants
    • Now returns a 204 with no content when getting grants for unrestricted users
  • Moved /linode/instances/:id/ips/sharing to /networking/ip-sharing
    • linode_id must now be passed in, along with existing ips list
  • Removed deprecated “distribution” fields and endpoints
    • Removed GET /linode/distributions
    • Removed GET /linode/distributions/:id
    • These fields or endpoints had been deprecated since 2017-12-11
  • Changed POST /managed/contacts
    • “phone” is an object containing primary and secondary numbers
    • phone_primary -> phone.primary
    • phone_secondary -> phone.secondary
  • Changed account/notifications
    • Removed xsa notification type
    • Renamed balance_outstanding to payment_due
  • Changed error response
    • “field” changed to represent nesting with x.x
  • Changed GET/PUT /account
    • Renamed “vat_number” to “tax_id”
  • Removed managed_issue from POST /support/tickets

Fixed

  • Cloned linodes now copy original Linode’s image
  • Fixed bug parsing OAuth Scopes when creating token
2018-01-24 11:02:00 -0400 -0400
API

2018-01-24

Added

  • Added POST /images to create an image from a disk
  • Added “message” to Notification object
    • Described the notification in a human-readable manner
  • Added ability to enroll in Managed
    • POST /account/settings/managed-enable
  • Added “uid” to Profile response
  • Added ssl to PUT /nodebalancers/$id/configs/$id

Changed

  • Removed “token” Authorization scheme
    • The same value is accepted as “Bearer”
    • No longer accepted: “Authorization: token $TOKEN”
    • Please send as: “Authorization: Bearer $TOKEN”
  • Changed POST support/tickets
    • Now accepts “managed_issue” (boolean) instead of “managed_issue_type”
  • Reworked backups response
    • Removed “daily” and “weekly”
    • Added “automatic”
    • Removed “availability” from Backup object
    • Removed “service” object
  • Removed /linode/instance/:id/disk/:id/imagize
    • Functionality moved to POST /images
  • Reworked /account/settings into two endpoints
    • Changed /account/settings endpoint to /account
    • network_helper and longview_subscription remain in /account/settings
  • Removed ‘max’ from /account/transfer
  • Removed /nodebalancers/$id/configs/$id/ssl
  • Removed zonefile object from Domain
  • Changed Notification types
    • scheduled_migration -> migration_scheduled
    • pending_migration -> migration_pending
    • scheduled_reboot -> reboot_scheduled
    • outstanding_balance -> balance_outstanding
    • important_ticket -> ticket_important
    • abuse_ticket -> ticket_abuse

Fixed

  • Fix Transfer Pool return values
  • Stopped returning default backups window for Linodes
    • This impacted Linodes that were still scheduling backups only
  • Don’t set cancel_account grant when it’s not requested
  • Suppresses shutdown event notification for rebuild
  • Send emails for TFA to the acting user
2018-01-08 11:02:00 -0400 -0400
API

2018-01-08

Added

  • Added enable, disable managed service endpoints
    • Added POST /managed/services/:id/enable
    • Added POST /managed/services/:id/disable
    • Added status to managed service JSON response object
  • Added GET /managed/stats endpoint
  • Added PUT /managed/linode_settings
  • Added PUT endpoints to managed service
  • Add managed_issue_type to support/tickets/
    • GET /support/tickets returns new managed_issue_type key
    • POST /support/tickets now accepts this key if the account has Managed Services enabled
  • Added GET /managed/issues and GET /managed/issues/:id
    • GET /managed/issues returns all issues, including relevant history
    • GET /managed/issues/:id returns a single issue
    • Since managed issues are backed by support tickets, uses the ticket ID
  • Added vat_number to /account/settings
    • Can be viewed and updated
  • Sends emails when enabling/disabling TFA
  • Rendered zone file returned in Domain object
  • Added DELETE /managed/services/:id endpoint
  • Added DELETE /managed/contacts/:id

Changed

  • Update /linode/distributions and /image responses
    • remove status key
    • remove filesystem key
    • remove last_used key
    • rename creator -> created_by (string)
    • rename min_deploy_size -> size (int)

Fixed

  • Allow filtering of GET /images
2017-12-11 11:02:00 -0400 -0400
API

2017-12-11

Added

  • Added POST account/payments/paypal
    • Stages a PayPal payment and returns the payment_id
  • Added POST account/payments/paypal/execute
    • Execute a PayPal payment that has been authorized in PayPal
    • This is required for Linode to capture funds and credit your account
  • Added POST /domains/$id/clone
    • New endpoint can be reached at POST domains/:domain_id/clone
    • Requires a new domain be provided in the post body

Changed

  • Unify Distributions and Images
    • Removes Distribution.architecture
    • Renames Distribution.updated to last_used (Datetime)
    • Renames Distribution.disk_minimum to min_deploy_size (Integer)
    • Adds Distribution.filesystem (String)
    • Adds Distribution.created (Datetime)
    • Adds Distribution.description (String)
    • Adds Distribution.status (String)
    • Adds Distribution.type (String)
    • Adds Distribution.is_public (Boolean)
    • Adds Distribution.creator (String)
    • Adds Image.deprecated (Boolean)
  • Renamed “distribution” to “image”
    • POST /linode/instances takes “image” instead of “distribution”
    • POST /linode/instances/:id/disks takes “image” instead of “distribution”
    • POST /linode/instances/:id/rebuild takes “image” instead of “distribution”
    • Linode object returns “image” instead of “distribution”
    • StackScript object returns “images” instead of “distributions”
  • Change Image IDs to Slugs
    • slugs match the format private/:image_id
  • Moved volumes to top level
    • Changed all references from /linode/volumes to /volumes

Fixed

  • Ensure POST domain/records accepts and honors ttl_sec
  • Fixed Linode create from a Stackscript using UDFs
2017-11-20 11:02:00 -0400 -0400
API

2017-11-20

Changed

  • Reworked UserGrant system
    • Three Grant levels are now enforced: No grants, “read_only”, and “read_write”
    • “read_only” allows access to GET endpoints
    • “read_write” is equivalent to legacy “all” grant
    • Legacy “all” or “access” grants are treated as “read_write”
  • Changed GET /account/users/:username/grants
    • Grants response objects now always include “id”, “label” and “permissions”
    • “permissions” can be null or an enum of either “read_only” or “read_write”
  • Changed PUT /account/users/:username/grants
    • Grants now accepted in the new format detailed above
  • Changed GET /profile/grants
    • Grants returned in new format detailed above
  • Added support for CAA Domain records
  • Changed POST /linode/instances/:id/disks
    • Now accepts “image” - an image ID to deploy from
2017-10-23 11:02:00 -0400 -0400
API

2017-10-23

Changed

  • Changed POST /account/payments
    • Now accepts “usd” as a string representing a dollar amount, including cents
    • Valid values include “0.10”, “10.00”, “100.20”, and “$1.00”
    • Invalid values include 10, 10.01, “10”, “10.001”, and “10.0”
  • Added GET /account/notifications
    • Read-only collection of Notification objects
    • Returns important information about your account that may require action
  • Added GET /images
    • Lists images on your account
  • Added GET /images/:id
    • View a single image on your account
  • Added PUT /images/:id
    • Update an image on your account
  • Added DELETE /images/:id
    • Deleted an image you own
  • Added POST /linode/instances/:id/disks/:id/imagize
    • Creates a new image from a disk you own
  • Added GET /longview/clients
    • Returns a list of Longview clients on your account
  • Added POST /longview/clients
    • Creates a new Longview client on your account
  • Added GET /longview/clients/:id
    • Returns information on a single Longview client
  • Added PUT /longview/clients/:id
    • Update a single Longview client
  • Added DELETE /longview/clients/:id
    • Removes a longview client from your account
  • Added GET /longview/subscriptions
    • Returns all available longview subscription tiers
  • Added GET /longview/subscriptions/:id
    • Returns information one longview subscription tier
  • Changed GET /account/settings
    • Added “longview_subscription” - the tier at which you are subscribed to longview
  • Changed PUT /account/settings
    • Sending in “null” or an id to “longview_subscription” changes your longview subscription tier.
  • Change POST /linode/instances
    • Now accepts image - the ID of an image to deploy the linode with
    • Only one source attribute may be provided
  • Changed POST /linode/instances/:id/rebuild
    • Now accepts image - the ID of an image to rebuild the linode with
    • Only one source attribute may be provided
  • Added events for enabling/disabling TFA
  • Added Longview and Image grants to GET /users/:id/grants and GET /profile/grants
    • Response now includes “longview” attribute whose value is an array of grants your user has that relate to longview clients
    • Response now includes an “images” attribute whose value is an array of grants your user has that relate to images
    • Only applies to restricted users
  • Event objects may now have Longview clients or Images as their entities
2017-10-04 11:02:00 -0400 -0400
API

2017-10-04

Changed

  • EventType has changed from “blockstorage*” to “volume*”
  • Changed POST linode/instances/:id/configs
    • Removed root_device_ro
    • Now accepts “helpers”, a dict accepting any/all of “updatedb_disabled”, “distro”, “modules_dep”, “network”, and “devtmpfs_automount”
    • Removed devtmpfs_automount (now in helpers envelope)
  • Changed POST linode/instances/:id/disks
    • root_ssh_key changed to “authorized_keys”, now accepts a list of keys instead of a single string key
  • Changed POST linode/instances
    • root_ssh_key changed to “authorized_keys”, now accepts a list of keys instead of a single string key
  • Changed POST linode/instances/:id/rebuild
    • root_ssh_key changed to “authorized_keys”, now accepts a list of keys instead of a single string key
  • Changed POST linode/instances/:id/rescue
    • disks changed to “devices”, now accepts device mappings in the same format as POST linode/instances/:id/configs
  • Changed Linode object
    • Moved “disk”, “memory”, “storage”, “transfer_total”, and “vcpus” into a “specs” envelope
    • transfer_total => transfer in linode specs
    • transfer_in => network_in
    • transfer_out => network_out
  • Changed LinodeConfig object
    • Removed root_device_ro
  • Changed LinodeType object
    • Moved backups_option.price_hourly to addons.backups.price.hourly
    • Moved backups_option.price_monthly to addons.backups.price.monthly
    • Moved price_hourly to price.hourly
    • Moved price_monthly to price.monthly
  • Changed OAuthToken
    • Removed client envelope
    • Removed type
  • Changed account/tokens
    • Endpoint moved to profile/tokens
    • GET now only returns Personal Access Tokens
  • Changed account/clients
    • Endpoint moved to account/oauth-clients
    • Collection now allows access to all clients for all users on your account if you are an unrestricted user
  • Added profile/apps
    • Collection of authorized third-party applications
  • OAuthClient now has a “public” attribute
    • “public” is an optional argument to POST account/clients that defaults to False
  • Added POST account/credit-card
    • Updates current payment method on file
  • Added GET account/payments
    • Returns a list of all payments made for your account
  • Added GET account/payments/:id
    • Returns information about a single payment made for your account
  • Added POST linode/volumes/:id/clone
  • Changed Disk Status
    • Now always one of “ready”, “not ready”, or “deleting”
2017-09-18 11:02:00 -0400 -0400
API

2017-09-18

Changed

  • Pagination envelope has changed
    • total_pages => pages
    • total_results => results
    • endpoint-specific key is now always “data”
  • Region, Distribution, Type, and Kernel objects are now returned as slugs
    • Previously, entire object was returned as part of other responses
  • POST linode/instances and POST linode/rebuild automatically issue a boot job
    • This behavior can be suppressed by sending “boot”: false in the request
  • Changed POST linode/instances
    • with_backups => backups_enabled
    • Now accepts “booted” - defaults to true if distribution is provided
  • Changed POST linode/instances/:id/clone
    • with_backups => backups_enabled
  • Changed POST linode/instances/:id/rebuild
    • Now accepts “booted” - defaults to true
  • Changed LinodeNetworkingResponse
    • region is now a slug instead of a nested object
  • Changed IPv6 object
    • region is now a slug instead of a nested object
  • Changed Invoice object
    • Removed “paid”
    • Removed “overdue”
  • Changed Region object
    • Removed “label”
  • Changed Backup object
    • regions is now a slug instead of a nested object
  • Changed Distribution object
    • Removed “created”
    • Added “updated”
    • minimum_storage_size => disk_minimum
    • x64 => architecture. architecture is an enum returning either “x86_64” or “i386”
  • Changed IPAddress object
    • region is now a slug instead of a nested object
  • Changed Kernel object
    • x64 => architecture. architecture is an enum returning either “x86_64” or “i386”
  • Changed Linode object
    • storage => disk
    • total_transfer => transfer_total
    • distribution is now a slug instead of a nested object
    • region is now a slug instead of a nested object
    • nested alert objects have been streamlined
    • “enabled” and “threshold” have been removed
    • a value of 0 now represents “disabled”, any other value is “enabled” with that threshold
  • Changed LinodeConfig object
    • disable_updatedb => updatedb_disabled
    • enable_distro_helper => distro
    • enable_modules_dep_helper => modules_dep
    • enable_network_helper => network
    • ram_limit => memory_limit
    • devtmpfs_autocommit moved into “helpers” envelope
  • Changed Nodebalancer object
    • region is now a slug instead of a nested object
  • Changed Type object
    • hourly_price => price_hourly
    • monthly_price => price_monthly
    • ram => memory
    • storage => disk
    • mbits_out => network_out
    • backups_price is now a nested object containing “price_hourly” and “price_monthly”
  • Changed StackScript object
    • Removed “customer_id”
    • distributions is now a list of slugs instead of a list of nested objects
    • Removed “user_id”
    • Added “username”
    • Added “user_gravatar_id”
  • Changed Volume object
    • “status” can no longer contain “contact_support” - will return “offline” in that case
    • region is now a slug instead of a nested object
  • Changes SupportTicket
    • Removed “closed_by”
  • IP Whitelist may not be enabled in PUT profile if it is already disabled
  • Default page size increased to 100
    • Any page size between 25 and 100 may be requested in the url with ?page_size=
  • Linode configs now accept deprecated kernels
  • Linode configs now default kernel to latest, no longer required on POST
  • Added /profile/whitelist
    • GET - list all IPs on user’s whitelist
    • POST - add IP to user’s whitelist
    • Endpoint return a 400 if IP Whitelist is disabled
  • Added /profile/whitelist/:id
    • GET - return one entry on whitelist
    • DELETE - remove address from whitelist
    • Endpoints return a 400 if IP Whitelist if disabled
  • Disk filesystems now default to ext4, no longer required on POST