{"id":21916529,"url":"https://github.com/cloudnode-pro/ts-client","last_synced_at":"2026-05-02T22:37:23.130Z","repository":{"id":62482450,"uuid":"559807229","full_name":"cloudnode-pro/ts-client","owner":"cloudnode-pro","description":"A client library for the Cloudnode API, written in TypeScript.","archived":false,"fork":false,"pushed_at":"2023-12-11T03:43:20.000Z","size":703,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-28T06:22:34.190Z","etag":null,"topics":["api","client","cloudnode","library"],"latest_commit_sha":null,"homepage":"https://cloudnode.pro","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudnode-pro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-31T06:07:52.000Z","updated_at":"2025-03-24T08:08:50.000Z","dependencies_parsed_at":"2025-01-27T09:38:29.221Z","dependency_job_id":null,"html_url":"https://github.com/cloudnode-pro/ts-client","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/cloudnode-pro/ts-client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudnode-pro%2Fts-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudnode-pro%2Fts-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudnode-pro%2Fts-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudnode-pro%2Fts-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudnode-pro","download_url":"https://codeload.github.com/cloudnode-pro/ts-client/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudnode-pro%2Fts-client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32552376,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T22:28:24.418Z","status":"ssl_error","status_checked_at":"2026-05-02T22:28:14.225Z","response_time":132,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","client","cloudnode","library"],"created_at":"2024-11-28T19:18:22.868Z","updated_at":"2026-05-02T22:37:23.097Z","avatar_url":"https://github.com/cloudnode-pro.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cloudnode API Client\n\n[![npm](https://img.shields.io/npm/v/cloudnode-ts)](https://www.npmjs.com/package/cloudnode-ts)\n![API Version: 5.13.0](https://img.shields.io/badge/API%20Version-5.13.0-%232563eb)\n[![Build](https://github.com/cloudnode-pro/ts-client/actions/workflows/build.yml/badge.svg)](https://github.com/cloudnode-pro/ts-client/actions/workflows/build.yml)\n[![CodeQL](https://github.com/cloudnode-pro/ts-client/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/cloudnode-pro/ts-client/actions/workflows/github-code-scanning/codeql)\n[![npm downloads](https://img.shields.io/npm/dt/cloudnode-ts?label=downloads)](https://www.npmjs.com/package/cloudnode-ts)\n\nA client library for the Cloudnode API, written in TypeScript. [Documentation](https:\u0026#x2F;\u0026#x2F;github.com\u0026#x2F;cloudnode-pro\u0026#x2F;ts-client#documentation)\n\n## Install\n```shell\nnpm install cloudnode-ts\n```\n\n## Usage\n### JavaScript\n#### Node.js (ES6)\n```js\nimport Cloudnode from 'cloudnode-ts';\n\nconst cloudnode = new Cloudnode(\"token_YourSecretToken123\");\n\n// get a newsletter\nconst newsletter = await cloudnode.newsletter.get(\"newsletter_123asd\");\n// get response status code\nconsole.log(newsletter._response.status); // 200\n```\n\n#### Node.js (CommonJS)\n```js\nconst Cloudnode = require('cloudnode-ts');\n\nconst cloudnode = new Cloudnode(\"token_YourSecretToken123\");\n\n// get a newsletter\nconst newsletter = await cloudnode.newsletter.get(\"newsletter_123asd\");\nconsole.log(newsletter._response.status); // 200\n```\n\n#### Browser\nDownload the browser version from `browser/Cloudnode.js` or use our hosted version.\n```html\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/cloudnode-ts@latest/browser/Cloudnode.min.js\"\u003e\u003c/script\u003e\n\u003cscript\u003e\nconst cloudnode = new Cloudnode();\n\n// get a newsletter\nconst newsletter = await cloudnode.newsletter.get(\"newsletter_123asd\");\nconsole.log(newsletter._response.status); // 200\n\u003c/script\u003e\n```\n\u003e **Warning**: You most likely don't want to set your private token in a public front-end website, as this will allow anyone who sees your front-end JavaScript code to use it for possibly malicious purposes. We advise you use a back-end server to proxy requests to our API, so you do not expose your token to the public.\n\n### TypeScript\n```ts\nimport Cloudnode from 'cloudnode-ts';\n\nconst cloudnode = new Cloudnode(\"token_YourSecretToken123\");\n\n// get a newsletter\nconst newsletter: Cloudnode.Newsletter = await cloudnode.newsletter.get(\"newsletter_123asd\");\n```\nIf you want to access response metadata (headers, status code, etc.), use `Cloudnode.ApiResponse\u003cT\u003e`, e.g.:\n```ts\nconst newsletter: Cloudnode.ApiResponse\u003cCloudnode.Newsletter\u003e = await cloudnode.newsletter.get(\"newsletter_123asd\");\nconsole.log(newsletter.id); // newsletter_123asd\nconsole.log(newsletter._response.status); // 200\n```\n\n# Documentation\n\n\u003cdetails open\u003e  \u003csummary\u003eTable of contents\u003c/summary\u003e\n\n - [Class: `Cloudnode`](#class-cloudnode)\n   - [`new Cloudnode([token], [options])`](#new-cloudnodetoken-options)\n   - [`cloudnode.getPage\u003cT\u003e(response, page)`](#cloudnodegetpagetresponse-page)\n   - [`cloudnode.getNextPage\u003cT\u003e(response)`](#cloudnodegetnextpagetresponse)\n   - [`cloudnode.getPreviousPage\u003cT\u003e(response)`](#cloudnodegetpreviouspagetresponse)\n   - [`cloudnode.getAllPages\u003cT\u003e(response)`](#cloudnodegetallpagestresponse)\n   - [`cloudnode.checkCompatibility()`](#cloudnodecheckcompatibility)\n   - [`cloudnode.account.changePassword(currentPassword, newPassword)`](#cloudnodeaccountchangepasswordcurrentpassword-newpassword)\n   - [`cloudnode.account.get()`](#cloudnodeaccountget)\n   - [`cloudnode.account.getEmail()`](#cloudnodeaccountgetemail)\n   - [`cloudnode.account.getIdentity()`](#cloudnodeaccountgetidentity)\n   - [`cloudnode.account.listEmails()`](#cloudnodeaccountlistemails)\n   - [`cloudnode.account.listPermissions()`](#cloudnodeaccountlistpermissions)\n   - [`cloudnode.account.replaceIdentity(username, name)`](#cloudnodeaccountreplaceidentityusername-name)\n   - [`cloudnode.account.setEmail(email)`](#cloudnodeaccountsetemailemail)\n   - [`cloudnode.account.updateIdentity(username, [name])`](#cloudnodeaccountupdateidentityusername-name)\n   - [`cloudnode.auth.login(user, password)`](#cloudnodeauthloginuser-password)\n   - [`cloudnode.auth.register(username, email, password)`](#cloudnodeauthregisterusername-email-password)\n   - [`cloudnode.newsletters.get(id)`](#cloudnodenewslettersgetid)\n   - [`cloudnode.newsletters.list([limit], [page])`](#cloudnodenewsletterslistlimit-page)\n   - [`cloudnode.projects.create(name)`](#cloudnodeprojectscreatename)\n   - [`cloudnode.projects.delete(id)`](#cloudnodeprojectsdeleteid)\n   - [`cloudnode.projects.get(id)`](#cloudnodeprojectsgetid)\n   - [`cloudnode.projects.list([limit], [page])`](#cloudnodeprojectslistlimit-page)\n   - [`cloudnode.projects.update(id, name)`](#cloudnodeprojectsupdateid-name)\n   - [`cloudnode.subscriptions.create(newsletter, email, [data])`](#cloudnodesubscriptionscreatenewsletter-email-data)\n   - [`cloudnode.subscriptions.delete(id)`](#cloudnodesubscriptionsdeleteid)\n   - [`cloudnode.subscriptions.get(id)`](#cloudnodesubscriptionsgetid)\n   - [`cloudnode.subscriptions.list([limit], [page])`](#cloudnodesubscriptionslistlimit-page)\n   - [`cloudnode.tokens.create(permissions, lifetime, [note])`](#cloudnodetokenscreatepermissions-lifetime-note)\n   - [`cloudnode.tokens.get(id)`](#cloudnodetokensgetid)\n   - [`cloudnode.tokens.getRequest(id, request)`](#cloudnodetokensgetrequestid-request)\n   - [`cloudnode.tokens.list([limit], [page], [internal])`](#cloudnodetokenslistlimit-page-internal)\n   - [`cloudnode.tokens.listRequests(id, [limit], [page])`](#cloudnodetokenslistrequestsid-limit-page)\n   - [`cloudnode.tokens.refresh(id)`](#cloudnodetokensrefreshid)\n   - [`cloudnode.tokens.revoke(id)`](#cloudnodetokensrevokeid)\n\n - [Namespace: `Cloudnode`](#namespace-cloudnode)\n   - [Class: `Cloudnode.ApiResponse\u003cT\u003e`](#class-cloudnodeapiresponset)\n   - [Class: `Cloudnode.RawResponse`](#class-cloudnoderawresponse)\n   - [Enum: `Cloudnode.CompatibilityStatus`](#enum-cloudnodecompatibilitystatus)\n   - [Interface: `Cloudnode.AccountDetails`](#interface-cloudnodeaccountdetails)\n   - [Interface: `Cloudnode.AccountEmail`](#interface-cloudnodeaccountemail)\n   - [Interface: `Cloudnode.AccountIdentity`](#interface-cloudnodeaccountidentity)\n   - [Interface: `Cloudnode.DatedNewsletterSubscription`](#interface-cloudnodedatednewslettersubscription)\n   - [Interface: `Cloudnode.DatedPrimaryEmail`](#interface-cloudnodedatedprimaryemail)\n   - [Interface: `Cloudnode.Error`](#interface-cloudnodeerror)\n   - [Interface: `Cloudnode.Newsletter`](#interface-cloudnodenewsletter)\n   - [Interface: `Cloudnode.NewsletterData`](#interface-cloudnodenewsletterdata)\n   - [Interface: `Cloudnode.NewsletterSubscription`](#interface-cloudnodenewslettersubscription)\n   - [Interface: `Cloudnode.Options`](#interface-cloudnodeoptions)\n   - [Interface: `Cloudnode.PaginatedData\u003cT\u003e`](#interface-cloudnodepaginateddatat)\n   - [Interface: `Cloudnode.PartialToken`](#interface-cloudnodepartialtoken)\n   - [Interface: `Cloudnode.Permission`](#interface-cloudnodepermission)\n   - [Interface: `Cloudnode.PrimaryEmail`](#interface-cloudnodeprimaryemail)\n   - [Interface: `Cloudnode.Project`](#interface-cloudnodeproject)\n   - [Interface: `Cloudnode.Request`](#interface-cloudnoderequest)\n   - [Interface: `Cloudnode.ShortRequest`](#interface-cloudnodeshortrequest)\n   - [Interface: `Cloudnode.Token`](#interface-cloudnodetoken)\n   - [Interface: `Cloudnode.TokenMetadata`](#interface-cloudnodetokenmetadata)\n\n\u003c/details\u003e\n\n\u003ca name=\"class-cloudnode\"\u003e\u003c/a\u003e\n\n## Class: `Cloudnode`\n\nA client library for the Cloudnode API, written in TypeScript. [Documentation](https://github.com/cloudnode-pro/ts-client#documentation)\n\n\u003ca name=\"new-cloudnodetoken-options\"\u003e\u003c/a\u003e\n\n### `new Cloudnode([token], [options])`\n\nConstruct a new Cloudnode API client\n\n - `token` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e API token to use for requests.\n - `options` \u003ccode\u003e[Partial](https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype)\u0026lt;[Cloudnode.Options](#interface-cloudnodeoptions)\u003e\u003c/code\u003e API client options. Default: `{baseUrl: \"https://api.cloudnode.pro/v5/\", autoRetry: true, maxRetryDelay: 5, maxRetries: 3}`\n\n\n\n\u003ca name=\"cloudnodegetpagetresponse-page\"\u003e\u003c/a\u003e\n\n### `cloudnode.getPage\u003cT\u003e(response, page)`\n\nGet another page of paginated results\n\n - `response` \u003ccode\u003e[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.PaginatedData](#interface-cloudnodepaginateddatat)\u0026lt;T\u003e\u003e\u003c/code\u003e Response to get a different page of.\n - `page` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e Page to get.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.PaginatedData](#interface-cloudnodepaginateddatat)\u0026lt;T\u003e\u003e | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003e\u003c/code\u003e The new page or null if the page is out of bounds\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror)\u003c/code\u003e Error returned by the API\n\n\u003ca name=\"cloudnodegetnextpagetresponse\"\u003e\u003c/a\u003e\n\n### `cloudnode.getNextPage\u003cT\u003e(response)`\n\nGet next page of paginated results\n\n - `response` \u003ccode\u003e[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.PaginatedData](#interface-cloudnodepaginateddatat)\u0026lt;T\u003e\u003e\u003c/code\u003e Response to get the next page of.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.PaginatedData](#interface-cloudnodepaginateddatat)\u0026lt;T\u003e\u003e | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003e\u003c/code\u003e The next page or null if this is the last page\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror)\u003c/code\u003e Error returned by the API\n\n\u003ca name=\"cloudnodegetpreviouspagetresponse\"\u003e\u003c/a\u003e\n\n### `cloudnode.getPreviousPage\u003cT\u003e(response)`\n\nGet previous page of paginated results\n\n - `response` \u003ccode\u003e[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.PaginatedData](#interface-cloudnodepaginateddatat)\u0026lt;T\u003e\u003e\u003c/code\u003e Response to get the previous page of.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.PaginatedData](#interface-cloudnodepaginateddatat)\u0026lt;T\u003e\u003e | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003e\u003c/code\u003e The previous page or null if this is the first page\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror)\u003c/code\u003e Error returned by the API\n\n\u003ca name=\"cloudnodegetallpagestresponse\"\u003e\u003c/a\u003e\n\n### `cloudnode.getAllPages\u003cT\u003e(response)`\n\nGet all other pages of paginated results and return the complete data\n\u003e **Warning:** Depending on the amount of data, this can take a long time and use a lot of memory.\n\n - `response` \u003ccode\u003e[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.PaginatedData](#interface-cloudnodepaginateddatat)\u0026lt;T\u003e\u003e\u003c/code\u003e Response to get all pages of.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.PaginatedData](#interface-cloudnodepaginateddatat)\u0026lt;T\u003e\u003e\u003c/code\u003e All of the data in 1 page\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror)\u003c/code\u003e Error returned by the API\n\n\u003ca name=\"cloudnodecheckcompatibility\"\u003e\u003c/a\u003e\n\n### `cloudnode.checkCompatibility()`\n\nCheck compatibility with the API\n\n\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.CompatibilityStatus](#enum-cloudnodecompatibilitystatus)\u003e\u003c/code\u003e\n\n\n\u003ca name=\"cloudnodeaccountchangepasswordcurrentpassword-newpassword\"\u003e\u003c/a\u003e\n\n### `cloudnode.account.changePassword(currentPassword, newPassword)`\n\nChange account password. Requires token with scope `account.details.password.update`.\n\n - `currentPassword` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e Your current password.\n - `newPassword` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The new password. Must be at least 15 characters, or 8 characters if it contains a mix of letters, numbers and symbols.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[void](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INVALID_DATA\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodeaccountget\"\u003e\u003c/a\u003e\n\n### `cloudnode.account.get()`\n\nGet account details. Requires token with scope `account.details`.\n\n\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.AccountDetails](#interface-cloudnodeaccountdetails)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodeaccountgetemail\"\u003e\u003c/a\u003e\n\n### `cloudnode.account.getEmail()`\n\nGet your primary e-mail address. Requires token with scope `account.details.email`.\n\n\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.DatedPrimaryEmail](#interface-cloudnodedatedprimaryemail)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RESOURCE_NOT_FOUND\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodeaccountgetidentity\"\u003e\u003c/a\u003e\n\n### `cloudnode.account.getIdentity()`\n\nGet account identity. Requires token with scope `account.details.identity`.\n\n\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.AccountIdentity](#interface-cloudnodeaccountidentity)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RESOURCE_NOT_FOUND\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodeaccountlistemails\"\u003e\u003c/a\u003e\n\n### `cloudnode.account.listEmails()`\n\nList account e-mail addresses. Requires token with scope `account.details.email.list`.\n\n\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.PaginatedData](#interface-cloudnodepaginateddatat)\u0026lt;[Cloudnode.AccountEmail[]](#interface-cloudnodeaccountemail)\u003e\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodeaccountlistpermissions\"\u003e\u003c/a\u003e\n\n### `cloudnode.account.listPermissions()`\n\nList account permissions with user-friendly descriptions. Some permissions (such as wildcard ones) may be excluded in this list if they don't have a description. Requires token with scope `account.details`.\n\n\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.PaginatedData](#interface-cloudnodepaginateddatat)\u0026lt;[Cloudnode.Permission[]](#interface-cloudnodepermission)\u003e\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodeaccountreplaceidentityusername-name\"\u003e\u003c/a\u003e\n\n### `cloudnode.account.replaceIdentity(username, name)`\n\nReplace account identity. Requires token with scope `account.details.identity.update`.\n\n - `username` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e Your unique username. Between 3 and 20 characters. Only letters, numbers, dashes and underscores. May not start with `user_`.\n - `name` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003c/code\u003e Your full name. Set to `null` to remove. Min 2 characters, max 32. Allowed characters (lowercase as well): A–Z `',-.,` and `ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞSŸ`.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.AccountIdentity](#interface-cloudnodeaccountidentity)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RESOURCE_NOT_FOUND\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"CONFLICT\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INVALID_DATA\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodeaccountsetemailemail\"\u003e\u003c/a\u003e\n\n### `cloudnode.account.setEmail(email)`\n\nSet your primary e-mail address. Requires token with scope `account.details.email.update`.\n\n - `email` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e E-mail address to set as primary.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[void](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"CONFLICT\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INVALID_DATA\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodeaccountupdateidentityusername-name\"\u003e\u003c/a\u003e\n\n### `cloudnode.account.updateIdentity(username, [name])`\n\nUpdate account identity. Requires token with scope `account.details.identity.update`.\n\n - `username` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e Your unique username. Between 3 and 20 characters. Only letters, numbers, dashes and underscores. May not start with `user_`.\n - `name` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003c/code\u003e Your full name. Set to `null` to remove. Min 2 characters, max 32. Allowed characters (lowercase as well): A–Z `',-.,` and `ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞSŸ`.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.AccountIdentity](#interface-cloudnodeaccountidentity) | [void](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined)\u003e\u003e\u003c/code\u003e `void` if nothing was changed.\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RESOURCE_NOT_FOUND\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"CONFLICT\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INVALID_DATA\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodeauthloginuser-password\"\u003e\u003c/a\u003e\n\n### `cloudnode.auth.login(user, password)`\n\nCreate a session using user ID/username/e-mail and password.\n\n\u003e **Note**: Logging in can only be performed from residential IP. Proxying this endpoint will likely not work. It is normally not recommended to use this endpoint to gain API access. Instead, create a token from your account to use with the API.\n\n - `user` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e User ID (starts with `user_`), username or e-mail address.\n - `password` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The password of the account.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;{session: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)}\u003e\u003e\u003c/code\u003e Session token. Also returned in `Set-Cookie` header.\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INVALID_DATA\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"IP_REJECTED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodeauthregisterusername-email-password\"\u003e\u003c/a\u003e\n\n### `cloudnode.auth.register(username, email, password)`\n\nCreate an account and session. After signing up, a welcome e-mail is sent to confirm your e-mail address.\n\n\u003e **Note**: Registering an account can only be performed from residential IP. Proxying this endpoint will likely not work. Creating multiple/alternate accounts is not allowed as per the Terms of Service.\n\n - `username` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The username to use for the account. Must be between 3 and 20 characters long. Cannot start with `user_`. May contain only letters, numbers, dashes and underscores. Must be unique.\n - `email` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The e-mail address to register. A valid unique non-disposable e-mail that can receive mail is required.\n - `password` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The password to use for the account. Must be at least 15 characters, or 8 characters if it contains a mix of letters, numbers and symbols.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;{session: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)}\u003e\u003e\u003c/code\u003e Session token. Also returned in `Set-Cookie` header.\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INVALID_DATA\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"IP_REJECTED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodenewslettersgetid\"\u003e\u003c/a\u003e\n\n### `cloudnode.newsletters.get(id)`\n\nGet newsletter\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e A newsletter ID.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.Newsletter](#interface-cloudnodenewsletter)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RESOURCE_NOT_FOUND\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodenewsletterslistlimit-page\"\u003e\u003c/a\u003e\n\n### `cloudnode.newsletters.list([limit], [page])`\n\nList newsletters\n\n - `limit` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The number of newsletters to return per page. No more than 50. Default: `10`\n - `page` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The page number. No more than 2³² (4294967296). Default: `1`\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.PaginatedData](#interface-cloudnodepaginateddatat)\u0026lt;[Cloudnode.Newsletter[]](#interface-cloudnodenewsletter)\u003e\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodeprojectscreatename\"\u003e\u003c/a\u003e\n\n### `cloudnode.projects.create(name)`\n\nCreate a project. Requires token with scope `projects.create.own`.\n\n - `name` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e Project name. Max 255 characters.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.Project](#interface-cloudnodeproject)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INVALID_DATA\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodeprojectsdeleteid\"\u003e\u003c/a\u003e\n\n### `cloudnode.projects.delete(id)`\n\nDelete a project. Requires token with scope `projects.delete.own`.\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e Project ID.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[void](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RESOURCE_NOT_FOUND\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodeprojectsgetid\"\u003e\u003c/a\u003e\n\n### `cloudnode.projects.get(id)`\n\nGet a project. Requires token with scope `projects.get.own`.\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e Project ID.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.Project](#interface-cloudnodeproject)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RESOURCE_NOT_FOUND\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodeprojectslistlimit-page\"\u003e\u003c/a\u003e\n\n### `cloudnode.projects.list([limit], [page])`\n\nList projects. Requires token with scope `projects.get.own`.\n\n - `limit` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The number of projects to return per page. No more than 100. Default: `20`\n - `page` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The page number. No more than 2³² (4294967296). Default: `1`\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.PaginatedData](#interface-cloudnodepaginateddatat)\u0026lt;[Cloudnode.Project[]](#interface-cloudnodeproject)\u003e\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodeprojectsupdateid-name\"\u003e\u003c/a\u003e\n\n### `cloudnode.projects.update(id, name)`\n\nUpdate a project. Requires token with scope `projects.update.own`.\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e Project ID.\n - `name` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e Project name. Max 255 characters.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.Project](#interface-cloudnodeproject)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RESOURCE_NOT_FOUND\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INVALID_DATA\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodesubscriptionscreatenewsletter-email-data\"\u003e\u003c/a\u003e\n\n### `cloudnode.subscriptions.create(newsletter, email, [data])`\n\nSubscribe to newsletter\n\n - `newsletter` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The ID of the newsletter to subscribe to.\n - `email` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e Subscriber's email address.\n - `data` \u003ccode\u003e[Record](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\u0026lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number) | [boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)\u003e\u003c/code\u003e Additional data that this newsletter requires.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.NewsletterSubscription](#interface-cloudnodenewslettersubscription)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INVALID_DATA\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"CONFLICT\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodesubscriptionsdeleteid\"\u003e\u003c/a\u003e\n\n### `cloudnode.subscriptions.delete(id)`\n\nUnsubscribe from newsletter\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The ID of the subscription to revoke.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[void](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RESOURCE_NOT_FOUND\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INVALID_DATA\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodesubscriptionsgetid\"\u003e\u003c/a\u003e\n\n### `cloudnode.subscriptions.get(id)`\n\nGet newsletter subscription\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The ID of the subscription to get.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.DatedNewsletterSubscription](#interface-cloudnodedatednewslettersubscription)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RESOURCE_NOT_FOUND\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodesubscriptionslistlimit-page\"\u003e\u003c/a\u003e\n\n### `cloudnode.subscriptions.list([limit], [page])`\n\nList newsletter subscriptions. Requires token with scope `newsletter.subscriptions.list.own`.\n\n - `limit` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The number of subscriptions to return per page. No more than 50. Default: `10`\n - `page` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The page number. No more than 2³² (4294967296). Default: `1`\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.PaginatedData](#interface-cloudnodepaginateddatat)\u0026lt;[Cloudnode.DatedNewsletterSubscription[]](#interface-cloudnodedatednewslettersubscription)\u003e\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodetokenscreatepermissions-lifetime-note\"\u003e\u003c/a\u003e\n\n### `cloudnode.tokens.create(permissions, lifetime, [note])`\n\nCreate token. Requires token with scope `tokens.create.own`.\n\n - `permissions` \u003ccode\u003e[string[]](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e List of permissions to grant to the token. You must already have each of these permissions with your current token.\n - `lifetime` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e Lifetime of the token in seconds. If null, the token will never expire (not recommended). Max: 31560000 (1 year). Min: 60 (1 minute).\n - `note` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e A user-specified note to label the token. Max length: 2⁸ (256) characters.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.Token](#interface-cloudnodetoken)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INVALID_DATA\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodetokensgetid\"\u003e\u003c/a\u003e\n\n### `cloudnode.tokens.get(id)`\n\nGet token details. Requires token with scope `tokens.get.own`.\n\n - `id` \u003ccode\u003estring | \"current\"\u003c/code\u003e The ID of the token to get. Specify `current` to get information about the token that was used to authenticate the request.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.Token](#interface-cloudnodetoken)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RESOURCE_NOT_FOUND\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INVALID_DATA\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodetokensgetrequestid-request\"\u003e\u003c/a\u003e\n\n### `cloudnode.tokens.getRequest(id, request)`\n\nGet a recent request by ID. Requires token with scope `tokens.get.own.requests`.\n\n - `id` \u003ccode\u003estring | \"current\"\u003c/code\u003e The ID of the token. Specify `current` to get information about the token that was used to authenticate the request.\n - `request` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The ID of the request.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.Request](#interface-cloudnoderequest)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RESOURCE_NOT_FOUND\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INVALID_DATA\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MODIFICATION_NOT_ALLOWED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodetokenslistlimit-page-internal\"\u003e\u003c/a\u003e\n\n### `cloudnode.tokens.list([limit], [page], [internal])`\n\nList tokens of user. Requires token with scope `tokens.list.own`.\n\n - `limit` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The number of tokens to return per page. No more than 50. Default: `10`\n - `page` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The page number. No more than 2³² (4294967296). Default: `1`\n - `internal` \u003ccode\u003e[any](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\u003c/code\u003e Internal tokens are returned as well if this parameter is present.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.PaginatedData](#interface-cloudnodepaginateddatat)\u0026lt;[Cloudnode.PartialToken[]](#interface-cloudnodepartialtoken)\u003e\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodetokenslistrequestsid-limit-page\"\u003e\u003c/a\u003e\n\n### `cloudnode.tokens.listRequests(id, [limit], [page])`\n\nGet list of recent requests made with the token. Requires token with scope `tokens.get.own.requests`.\n\n - `id` \u003ccode\u003estring | \"current\"\u003c/code\u003e The ID of the token. Specify `current` to get information about the token that was used to authenticate the request.\n - `limit` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The number of requests to return per page. No more than 50. Default: `10`\n - `page` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The page number. No more than 2³² (4294967296). Default: `1`\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.PaginatedData](#interface-cloudnodepaginateddatat)\u0026lt;[Cloudnode.ShortRequest[]](#interface-cloudnodeshortrequest)\u003e\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RESOURCE_NOT_FOUND\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INVALID_DATA\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodetokensrefreshid\"\u003e\u003c/a\u003e\n\n### `cloudnode.tokens.refresh(id)`\n\nRefresh current token. The token that was used to authenticate the request will be deleted. A new token with a new ID but the same permissions will be created and returned. The lifespan of the new token will be the same as the old one, starting from the time of the request. This operation effectively allows a token to be used indefinitely. Requires token with scope `token.refresh`.\n\n - `id` \u003ccode\u003estring | \"current\"\u003c/code\u003e The ID of the token to refresh. Specify `current` to refresh the token that was used to authenticate the request.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[Cloudnode.Token](#interface-cloudnodetoken)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INVALID_DATA\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\u003ca name=\"cloudnodetokensrevokeid\"\u003e\u003c/a\u003e\n\n### `cloudnode.tokens.revoke(id)`\n\nRevoke token. Requires token with scope `tokens.revoke.own`.\n\n - `id` \u003ccode\u003estring | \"current\"\u003c/code\u003e The ID of the token to revoke. Specify `current` to revoke the token that was used to authenticate the request.\n - Returns: \u003ccode\u003e[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\u0026lt;[Cloudnode.ApiResponse](#class-cloudnodeapiresponset)\u0026lt;[void](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined)\u003e\u003e\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RESOURCE_NOT_FOUND\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INVALID_DATA\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MODIFICATION_NOT_ALLOWED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"UNAUTHORIZED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"NO_PERMISSION\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"RATE_LIMITED\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"INTERNAL_SERVER_ERROR\"}\u003c/code\u003e\n - Throws: \u003ccode\u003e[Cloudnode.Error](#interface-cloudnodeerror) \u0026 {code: \"MAINTENANCE\"}\u003c/code\u003e\n\n\n\n\u003ca name=\"namespace-cloudnode\"\u003e\u003c/a\u003e\n\n## Namespace: `Cloudnode`\n\nA client library for the Cloudnode API, written in TypeScript. [Documentation](https://github.com/cloudnode-pro/ts-client#documentation)\n\n\u003ca name=\"class-cloudnodeapiresponset\"\u003e\u003c/a\u003e\n\n### Class: `Cloudnode.ApiResponse\u003cT\u003e`\n\nAn API response. This class implements the interface provided as `T` and includes all of its properties.\n\n - `_response` \u003ccode\u003e[Cloudnode.RawResponse](#class-cloudnoderawresponse)\u003c/code\u003e Raw API response\n\n\u003ca name=\"class-cloudnoderawresponse\"\u003e\u003c/a\u003e\n\n### Class: `Cloudnode.RawResponse`\n\nRaw API response\n\n - `headers` \u003ccode\u003e[Record](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\u0026lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003e\u003c/code\u003e The headers returned by the server. (read-only)\n - `ok` \u003ccode\u003e[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)\u003c/code\u003e A boolean indicating whether the response was successful (status in the range `200` – `299`) or not. (read-only)\n - `redirected` \u003ccode\u003e[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)\u003c/code\u003e Indicates whether or not the response is the result of a redirect (that is, its URL list has more than one entry). (read-only)\n - `status` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The status code of the response. (read-only)\n - `statusText` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The status message corresponding to the status code. (e.g., `OK` for `200`). (read-only)\n - `url` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The URL of the response. (read-only)\n\n\u003ca name=\"enum-cloudnodecompatibilitystatus\"\u003e\u003c/a\u003e\n\n### Enum: `Cloudnode.CompatibilityStatus`\n\nAPI client compatibility status\n\n - `COMPATIBLE` \u003ccode\u003e\"compatible\"\u003c/code\u003e Fully compatible (API patch version may differ)\n - `OUTDATED` \u003ccode\u003e\"outdated\"\u003c/code\u003e Compatible, but outdated (i.e. existing APIs will work, but you are missing out on new features).\n - `INCOMPATIBLE` \u003ccode\u003e\"incompatible\"\u003c/code\u003e API has implemented breaking changes which are not compatible with this client.\n\n\u003ca name=\"interface-cloudnodeaccountdetails\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.AccountDetails`\n\nDetails about your account\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e Your user ID\n - `password` \u003ccode\u003e[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)\u003c/code\u003e Whether you have a password set\n - `group` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The name of your permission group\n - `permissions` \u003ccode\u003e[string[]](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e A list of all permission that you have access to\n - `identity` \u003ccode\u003e[AccountIdentity](#interface-cloudnodeaccountidentity) | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003c/code\u003e Personal information associated with your account. Requires `account.details.identity` to see. Maybe be null if the account is anonymised or you don't have permission to access the account identity.\n - `email` \u003ccode\u003e[PrimaryEmail](#interface-cloudnodeprimaryemail) | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003c/code\u003e Your current primary account e-mail address. Requires `account.details.email` to see. Maybe be null if you don't have a primary e-mail address or you don't have permission to access the account's e-mail address.\n\n\u003ca name=\"interface-cloudnodeaccountemail\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.AccountEmail`\n\nAn e-mail address you have added to your account\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The ID of the e-mail address\n - `address` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003c/code\u003e Your e-mail address. May ben null if anonymised.\n - `verified` \u003ccode\u003e[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)\u003c/code\u003e Whether this e-mail address has been verified\n - `primary` \u003ccode\u003e[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)\u003c/code\u003e Whether this e-mail address is your primary e-mail address\n - `added` \u003ccode\u003e[Date](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date)\u003c/code\u003e The date and time when this e-mail address was added to your account\n\n\u003ca name=\"interface-cloudnodeaccountidentity\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.AccountIdentity`\n\nPersonal information associated with your account\n\n - `username` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e Your unique username\n - `name` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003c/code\u003e Your name\n\n\u003ca name=\"interface-cloudnodedatednewslettersubscription\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.DatedNewsletterSubscription`\n\nA newsletter subscription with a creation date\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The ID of the subscription. Can be used to unsubscribe.\n - `email` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The email address of the subscriber\n - `newsletter` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The ID of the newsletter that was subscribed to\n - `date` \u003ccode\u003e[Date](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date)\u003c/code\u003e The date the subscription was created\n\n\u003ca name=\"interface-cloudnodedatedprimaryemail\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.DatedPrimaryEmail`\n\nYour current primary account e-mail address with a timestamp of when it was added to your account\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The ID of the e-mail address\n - `address` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003c/code\u003e Your e-mail address. May ben null if anonymised.\n - `verified` \u003ccode\u003e[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)\u003c/code\u003e Whether this e-mail address has been verified\n - `added` \u003ccode\u003e[Date](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date)\u003c/code\u003e The date and time when this e-mail address was added to your account\n\n\u003ca name=\"interface-cloudnodeerror\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.Error`\n\nAn API error response.\n\n - `message` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e A human-readable description of this error\n - `code` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e Error code\n - `fields` \u003ccode\u003e[Record](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\u0026lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [Record](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\u0026lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003e\u003e\u003c/code\u003e Affected request fields. The key is the name of the input parameter (e.g. from the request body or query string) and the value is a human-readable error message for that field.\n\n\u003ca name=\"interface-cloudnodenewsletter\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.Newsletter`\n\nA newsletter that you can subscribe to\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The unique identifier for this newsletter\n - `name` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The name of this newsletter\n - `data` \u003ccode\u003e[Record](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\u0026lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), [NewsletterData](#interface-cloudnodenewsletterdata)\u003e\u003c/code\u003e Additional data that is required to subscribe to this newsletter\n\n\u003ca name=\"interface-cloudnodenewsletterdata\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.NewsletterData`\n\nA data field that is required to subscribe to this newsletter\n\n - `name` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The name of the field\n - `description` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined)\u003c/code\u003e Description of the field\n - `type` \u003ccode\u003e\"string\" | \"number\" | \"boolean\"\u003c/code\u003e The type of data\n - `required` \u003ccode\u003e[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)\u003c/code\u003e Whether this field is required\n\n\u003ca name=\"interface-cloudnodenewslettersubscription\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.NewsletterSubscription`\n\nYour subscription to a newsletter\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The ID of the subscription. Can be used to unsubscribe.\n - `email` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The email address of the subscriber\n - `newsletter` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The ID of the newsletter that was subscribed to\n\n\u003ca name=\"interface-cloudnodeoptions\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.Options`\n\nAPI client options\n\n - `baseUrl` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The base URL of the API\n - `autoRetry` \u003ccode\u003e[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)\u003c/code\u003e Whether to automatically retry requests that fail temporarily.\nIf enabled, when a request fails due to a temporary error, such as a rate limit, the request will be retried after the specified delay.\n - `maxRetryDelay` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The maximum number of seconds that is acceptable to wait before retrying a failed request.\nThis requires `autoRetry` to be enabled.\n - `maxRetries` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The maximum number of times to retry a failed request.\nThis requires `autoRetry` to be enabled.\n\n\u003ca name=\"interface-cloudnodepaginateddatat\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.PaginatedData\u003cT\u003e`\n\nPaginated response\n\n - `items` \u003ccode\u003eT[]\u003c/code\u003e The page items\n - `total` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The total number of items\n - `limit` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The number of items per page\n - `page` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The current page number\n\n\u003ca name=\"interface-cloudnodepartialtoken\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.PartialToken`\n\nA token, however, the `permissions` field is not included\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The ID or key of the token\n - `created` \u003ccode\u003e[Date](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date)\u003c/code\u003e Date and time when this token was created\n - `expires` \u003ccode\u003e[Date](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date) | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003c/code\u003e Date and time when this token expires. Null if it never expires.\n - `internal` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined)\u003c/code\u003e Whether this token is for internal use only, e.g. to power a session. In other words, an internal token is one that was **not** created by the client.\n - `metadata` \u003ccode\u003e[Cloudnode.TokenMetadata](#interface-cloudnodetokenmetadata)\u003c/code\u003e Additional metadata about this token\n\n\u003ca name=\"interface-cloudnodepermission\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.Permission`\n\nA permission node\n\n - `permission` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The permission node string\n - `description` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e User-friendly description of the permission node\n - `note` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003c/code\u003e Additional user-friendly information about the permission node\n - `group` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003c/code\u003e A group/category title that can be used to group permissions together\n\n\u003ca name=\"interface-cloudnodeprimaryemail\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.PrimaryEmail`\n\nYour current primary account e-mail address\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The ID of the e-mail address\n - `address` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003c/code\u003e Your primary e-mail address. May ben null if anonymised.\n - `verified` \u003ccode\u003e[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)\u003c/code\u003e Whether this e-mail address has been verified\n\n\u003ca name=\"interface-cloudnodeproject\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.Project`\n\nAn isolated group of servers\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The ID of the project\n - `name` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e Project name\n - `user` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e ID of the user that owns this project\n\n\u003ca name=\"interface-cloudnoderequest\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.Request`\n\nA request\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The ID of the request\n - `method` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The request method (e.g. GET, POST, HEAD, etc.\n - `scheme` \u003ccode\u003e\"http\" | \"https\"\u003c/code\u003e The URL scheme\n - `host` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The requested host name\n - `url` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The request URL path\n - `status` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The HTTP status code that was returned to this request\n - `ip` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The IP address of the client that made the request (can be both IPv4 and IPv6)\n - `date` \u003ccode\u003e[Date](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date)\u003c/code\u003e The time when the request was received\n - `responseTime` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The time in milliseconds that the request took to process\n - `hasEvents` \u003ccode\u003e[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)\u003c/code\u003e Whether any server-side error events occurred while processing this request\n - `requestHeaders` \u003ccode\u003e[Record](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\u0026lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003e | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003c/code\u003e The request headers that were received\n - `requestBody` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003c/code\u003e The request body that was received (likely parsed and formatted as JSON)\n - `responseHeaders` \u003ccode\u003e[Record](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\u0026lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003e | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003c/code\u003e The headers that were returned by the server\n - `responseBody` \u003ccode\u003e{type: \"Buffer\", data: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)[]} | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003c/code\u003e The response body that was returned by the server in response to this request\n\n\u003ca name=\"interface-cloudnodeshortrequest\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.ShortRequest`\n\nOverview of a request\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The ID of the request\n - `method` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The request method (e.g. GET, POST, HEAD, etc.\n - `scheme` \u003ccode\u003e\"http\" | \"https\"\u003c/code\u003e The URL scheme\n - `host` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The requested host name\n - `url` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The request URL path\n - `status` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The HTTP status code that was returned to this request\n - `ip` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The IP address of the client that made the request (can be both IPv4 and IPv6)\n - `date` \u003ccode\u003e[Date](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date)\u003c/code\u003e The time when the request was received\n - `responseTime` \u003ccode\u003e[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)\u003c/code\u003e The time in milliseconds that the request took to process\n - `hasEvents` \u003ccode\u003e[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)\u003c/code\u003e Whether any server-side error events occurred while processing this request\n\n\u003ca name=\"interface-cloudnodetoken\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.Token`\n\nAn authentication token\n\n - `id` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e The ID or key of the token\n - `created` \u003ccode\u003e[Date](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date)\u003c/code\u003e Date and time when this token was created\n - `expires` \u003ccode\u003e[Date](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date) | [null](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null)\u003c/code\u003e Date and time when this token expires. Null if it never expires.\n - `permissions` \u003ccode\u003e[string[]](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)\u003c/code\u003e Permission scopes that this token holds\n - `internal` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined)\u003c/code\u003e Whether this token is for internal use only, e.g. to power a session. In other words, an internal token is one that was **not** created by the client.\n - `metadata` \u003ccode\u003e[Cloudnode.TokenMetadata](#interface-cloudnodetokenmetadata)\u003c/code\u003e Additional metadata about this token\n\n\u003ca name=\"interface-cloudnodetokenmetadata\"\u003e\u003c/a\u003e\n\n### Interface: `Cloudnode.TokenMetadata`\n\nToken metadata\n\n - `note` \u003ccode\u003e[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined)\u003c/code\u003e A user-supplied note for this token\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudnode-pro%2Fts-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudnode-pro%2Fts-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudnode-pro%2Fts-client/lists"}