Source: reserved-ips.js

/**
 * Methods for interacting with the reserved IP endpoints<br>
 * {@link https://www.vultr.com/api/#tag/reserved-ip}
 * @namespace reservedIps
 */

/**
 * Get information about the specified reserved IP address.<br>
 * {@link https://www.vultr.com/api/#operation/get-reserved-ip}
 * @function getReservedIp
 * @memberof reservedIps
 * @instance
 */
exports.getReservedIp = {
  url: '/reserved-ips/{reserved-ip}',
  requestType: 'GET',
  apiKeyRequired: true,
  parameters: {
    'reserved-ip': {
      type: 'string',
      path: true,
      required: true
    }
  }
}

/**
 * Delete the specified reserved IP address.<br>
 * {@link https://www.vultr.com/api/#operation/delete-reserved-ip}
 * @function deleteReservedIp
 * @memberof reservedIps
 * @instance
 */
exports.deleteReservedIp = {
  url: '/reserved-ips/{reserved-ip}',
  requestType: 'DELETE',
  apiKeyRequired: true,
  parameters: {
    'reserved-ip': {
      type: 'string',
      path: true,
      required: true
    }
  }
}

/**
 * Update information on a Reserved IP.<br>
 * {@link https://www.vultr.com/api/#operation/patch-reserved-ips-reserved-ip}
 * @function updateReservedIp
 * @memberof reservedIps
 * @instance
 */
exports.updateReservedIp = {
  url: '/reserved-ips/{reserved-ip}',
  requestType: 'PATCH',
  apiKeyRequired: true,
  parameters: {
    'reserved-ip': {
      type: 'string',
      path: true,
      required: true
    },
    label: {
      type: 'string',
      required: true
    }
  }
}

/**
 * List all reserved IP addresses.<br>
 * {@link https://www.vultr.com/api/#operation/list-reserved-ips}
 * @function listReservedIps
 * @memberof reservedIps
 * @instance
 */
exports.listReservedIps = {
  url: '/reserved-ips',
  requestType: 'GET',
  apiKeyRequired: true,
  parameters: {
    per_page: { type: 'string' },
    cursor: { type: 'string' }
  }
}

/**
 * Create a reserved IP address.<br>
 * {@link https://www.vultr.com/api/#operation/create-reserved-ip}
 * @function createReservedIp
 * @memberof reservedIps
 * @instance
 */
exports.createReservedIp = {
  url: '/reserved-ips',
  requestType: 'POST',
  apiKeyRequired: true,
  parameters: {
    region: {
      type: 'string',
      required: true
    },
    ip_type: {
      type: 'string',
      required: true
    },
    label: { type: 'string' }
  }
}

/**
 * Attach a reserved IP address to the specified instance.<br>
 * {@link https://www.vultr.com/api/#operation/attach-reserved-ip}
 * @function attachReservedIp
 * @memberof reservedIps
 * @instance
 */
exports.attachReservedIp = {
  url: '/reserved-ips/{reserved-ip}/attach',
  requestType: 'POST',
  apiKeyRequired: true,
  parameters: {
    'reserved-ip': {
      type: 'string',
      path: true,
      required: true
    },
    instance_id: {
      type: 'string',
      required: true
    }
  }
}

/**
 * Detach a reserved IP address.<br>
 * {@link https://www.vultr.com/api/#operation/detach-reserved-ip}
 * @function detachReservedIp
 * @memberof reservedIps
 * @instance
 */
exports.detachReservedIp = {
  url: '/reserved-ips/{reserved-ip}/detach',
  requestType: 'POST',
  apiKeyRequired: true,
  parameters: {
    'reserved-ip': {
      type: 'string',
      path: true,
      required: true
    }
  }
}

/**
 * Convert the IP address of an existing instance into a reserved IP.<br>
 * {@link https://www.vultr.com/api/#operation/convert-reserved-ip}
 * @function convertInstanceIpToReservedIp
 * @memberof reservedIps
 * @instance
 */
exports.convertInstanceIpToReservedIp = {
  url: '/reserved-ips/convert',
  requestType: 'POST',
  apiKeyRequired: true,
  parameters: {
    ip_address: {
      type: 'string',
      required: true
    },
    label: { type: 'string' }
  }
}