npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@jawsper/transip-api

v1.4.3

Published

A Node.js wrapper for the TransIP API and authentication class

Downloads

10

Readme

TransIP API for Node

npm

This library intends to be an easy wrapper for the full TransIP API, as well as the Authentication class, originally implemented in PHP. The currently supported version is v6.6.

Requires Node 14 or higher.

The documentation for the API itself can be found at api.transip.nl.

This library is not supported by or affilated with TransIP in any way

Usage

Install:

npm i transip-api
const TransIP = require("transip-api");

const api = new TransIP();

General Structure

The structure of the API docs provided by TransIP is replicated as much as possible. This results in the following:

  • The API docs list Domains > Branding > Get domain branding, so the call would be api.domains.branding.get();
  • The API docs list HA-IP > HA-IP Certificates > Detach a certificate from this HA-IP, so the call would be api.haip.certificates.detach();

There are a few exceptions:

  • General is split up: products.list(), products.get(), availabilityZones.list(), test().
  • Domains > Domains > * is shortened to api.domains.*();
  • VPS > VPS > * is shortened to api.vps.*();
  • The same for HA-IP (haip.*());
  • andColocations (colocations.*());

Request structure

The TransIP API guide can be used, when keeping the following in mind:

  • Names with hyphens (some-name) are converted to camelCase (someName);
  • Uppercase is made lowercase, except in context of camelCase strings;

Requests are made as follows:

api.jediMasters.get("kenobi");
// This call might result in:
// https://{api_url}/jedi-masters/kenobi

When the API docs require a request body:

api.jediMasters.sayTo("kenobi", "grievous", { firstLine: "Hello there!" });
// Might result in:
// https://{api_url}/jedi-masters/say/kenobi/to/grievous
// With request body: { "firstLine": "Hello there!" }

Requests that allow search parameters in the URL will expect them as a comma seperated string:

api.characters.list("sith,jedi");
// Might result in:
// https://{api_url}/characters?tags=sith,jedi

Billing protection

This library tries to prevent accidental creation of invoices. In addition to test mode below, requests that result in billing are turned off by default.

To enable the 'dangerous' requests that might result in additional costs:

const api = new TransIP({ allowBilling: true });
// OR
api.allowBilling(true);

This is only enabled on fields listed in the API docs as creating invoices, so please note while cancelling might change your invoice as well, these will not be blocked when allowBilling is false.

Installing an OS on a VPS will be blocked, although this will be free most of the time. This is because this wrapper doesn't know which OS requires a license.

Test mode

This library implements the test mode as described in the TransIP API docs, by adding ?test=1 to a URL when test mode is on.

Test mode is off by default and can be turned on with the .testMode() method:

const api = new TransIP({ testMode: true });
// OR
api.testMode(true);

Another way to test, although not with your own data, is using the demo account provided by TransIP. The access token to this account can be provided instead of the normal auth options:

const DEMO_TOKEN =
  "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImN3MiFSbDU2eDNoUnkjelM4YmdOIn0.eyJpc3MiOiJhcGkudHJhbnNpcC5ubCIsImF1ZCI6ImFwaS50cmFuc2lwLm5sIiwianRpIjoiY3cyIVJsNTZ4M2hSeSN6UzhiZ04iLCJpYXQiOjE1ODIyMDE1NTAsIm5iZiI6MTU4MjIwMTU1MCwiZXhwIjoyMTE4NzQ1NTUwLCJjaWQiOiI2MDQ0OSIsInJvIjpmYWxzZSwiZ2siOmZhbHNlLCJrdiI6dHJ1ZX0.fYBWV4O5WPXxGuWG-vcrFWqmRHBm9yp0PHiYh_oAWxWxCaZX2Rf6WJfc13AxEeZ67-lY0TA2kSaOCp0PggBb_MGj73t4cH8gdwDJzANVxkiPL1Saqiw2NgZ3IHASJnisUWNnZp8HnrhLLe5ficvb1D9WOUOItmFC2ZgfGObNhlL2y-AMNLT4X7oNgrNTGm-mespo0jD_qH9dK5_evSzS3K8o03gu6p19jxfsnIh8TIVRvNdluYC2wo4qDl5EW5BEZ8OSuJ121ncOT1oRpzXB0cVZ9e5_UVAEr9X3f26_Eomg52-PjrgcRJ_jPIUYbrlo06KjjX2h0fzMr21ZE023Gw";

api.auth(DEMO_TOKEN);

Please refer to the current documentation for the correct token.

Pagination

The TransIP API supports pagination, but this wrapper does not implement this by itself. As the responses (including pagination-URLs) are returned as-is, however, you could fetch them yourself with the .query() method.

await api.query("https://api.transip.nl/v6/domains?page=1&pageSize=0");

API

A "request body"-object must always be the last parameter of a method. For contents of the request body, see the API docs.

| method | parameters | request body | | --------- | ---------- | ------------ | | test() | | | | query() | URL | |

availabilityZones

| method | parameters | request body | | -------- | ---------- | ------------ | | list() | | |

products

| method | parameters | request body | | -------- | ----------- | ------------ | | list() | tags | | | get() | productName | |

domains

| method | parameters | request body | | ------------ | ---------- | ----------------------------------------------------------- | | list() | tags | | | get() | domainName | | | register() | | { domainName, contacts, nameservers, dnsEntries } | | transfer() | | { authCode, domainName, contacts, nameservers, dnsEntries } | | update() | domainName | { domain } | | cancel() | domainName | { endTime } |

domains.branding

| method | parameters | request body | | ---------- | ---------- | ------------ | | get() | domainName | | | update() | domainName | { domain } |

domains.contacts

| method | parameters | request body | | ---------- | ---------- | ------------ | | get() | domainName | | | update() | domainName | { contacts } |

domains.dns

| method | parameters | request body | | ------------- | ---------- | -------------- | | list() | domainName | | | add() | domainName | { dnsEntry } | | update() | domainName | { dnsEntry } | | updateAll() | domainName | { dnsEntries } | | delete() | domainName | { dnsEntry } |

domains.dnsSec

| method | parameters | request body | | ---------- | ---------- | ----------------- | | list() | domainName | | | update() | domainName | { dnsSecEntries } |

domains.nameservers

| method | parameters | request body | | ---------- | ---------- | --------------- | | list() | domainName | | | update() | domainName | { nameservers } |

domains.actions

| method | parameters | request body | | ---------- | ---------- | ----------------------------------------------- | | get() | domainName | | | retry() | domainName | { authCode, dnsEntries, nameservers, contacts } | | cancel() | domainName | |

domains.ssl

| method | parameters | request body | | -------- | ------------------------- | ------------ | | list() | domainName | | | get() | domainName, certificateId | |

domains.whois

| method | parameters | request body | | ------- | ---------- | ------------ | | get() | domainName | |

domains.whitelabel

| method | parameters | request body | | --------- | ---------- | ------------ | | order() | domainName | |

domains.domainAvailability

| method | parameters | request body | | -------- | ---------- | --------------- | | list() | | { domainNames } | | get() | domainName | |

domains.tlds

| method | parameters | request body | | -------- | ---------- | ------------ | | list() | | | | get() | tld | |

vps

| method | parameters | request body | | ----------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------- | | list() | tags | | | get() | vpsName | | | order() | | { productName, addons, availabilityZone, description, operatingSystem,installFlavour, hostname, username, sshKeys, base64InstallText } | | orderMultiple() | | { vpss } | | clone() | | { vpsName, availabilityZone } | | update() | vpsName | { vps } | | start() | vpsName | | | stop() | vpsName | | | reset() | vpsName | | | handover() | vpsName | { targetCustomerName } | | cancel() | vpsName | { endTime } | | usage() | vpsName | { types, dateTimeStart, dateTimeEnd } |

vps.vnc

| method | parameters | request body | | ------------------- | ---------- | ------------ | | get() | vpsName | | | regenerateToken() | vpsName | |

vps.addons

| method | parameters | request body | | ---------- | ------------------ | ------------ | | list() | vpsName | | | order() | vpsName | { addons } | | cancel() | vpsName, addonName | |

vps.licenses

| method | parameters | request body | | ---------- | ------------------ | ------------------------- | | list() | vpsName | | | order() | vpsName | { licenseName, quantity } | | update() | vpsName, licenseId | { newLicenseName } | | cancel() | vpsName, licenseId | |

vps.upgrades

| method | parameters | request body | | --------- | ---------- | --------------- | | list() | vpsName | | | order() | vpsName | { productName } |

vps.os

| method | parameters | request body | | ----------- | ---------- | --------------------------------------------------------------------------------------- | | list() | vpsName | | | install() | vpsName | { operatingSystemName, hostname, installFlavour, username, sshKeys, base64InstallText } |

vps.ip

| method | parameters | request body | | -------------------- | ------------------ | -------------------- | | list() | vpsName | | | get() | vpsName, ipAddress | | | add() | vpsName, ipAddress | | | updateReverseDns() | vpsName, ipAddress | { ipAddressOptions } | | delete() | vpsName, ipAddress | |

Please note: to avoid clashes in variable name, the request body of updateReverseDns() uses ipAddressOptions instead of ipAddress!

vps.snapshots

| method | parameters | request body | | ---------- | --------------------- | ---------------------- | | list() | vpsName | | | get() | vpsName, snapshotName | | | create() | vpsName | | | revert() | vpsName, snapshotName | { destinationVpsName } | | delete() | vpsName, snapshotName | |

vps.backups

| method | parameters | request body | | ----------- | ----------------- | --------------- | | list() | vpsName | | | revert() | vpsName, backupId | | | convert() | vpsName, backupId | { description } |

vps.traffic

| method | parameters | request body | | ------- | ---------- | ------------ | | all() | | | | get() | vpsName | |

vps.firewall

| method | parameters | request body | | ---------- | ---------- | --------------- | | list() | vpsName | | | update() | vpsName | { vpsFirewall } |

vps.privateNetworks

| method | parameters | request body | | ---------- | ------------------ | ------------------ | | list() | vpsName | | | get() | privateNetworkName | | | order() | | { description } | | update() | privateNetworkName | { privateNetwork } | | attach() | privateNetworkName | { vpsName } | | detach() | vpsName | { vpsName } | | cancel() | privateNetworkName | { endTime } |

vps.bigStorage

| method | parameters | request body | | ----------- | -------------- | ---------------------------------------------------------------- | | list() | vpsName | | | get() | bigStorageName | | | order() | | { size, offsiteBackups, availabilityZone, vpsName, description } | | upgrade() | | { bigStorageName, size, offsiteBackups } | | update() | bigStorageName | { bigStorage } | | cancel() | bigStorageName | { endTime } | | usage() | bigStorageName | { dateTimeStart, dateTimeEnd } |

vps.bigStorage.backups

| method | parameters | request body | | ---------- | ------------------------ | ------------ | | list() | bigStorageName | | | revert() | bigStorageName, backupId | |

vps.mailService

| method | parameters | request body | | ---------------------- | ---------- | --------------- | | get() | | | | regeneratePassword() | | | | addDnsEntries() | | { domainNames } |

vps.monitorContacts

| method | parameters | request body | | ---------- | ---------- | -------------------------- | | list() | | | | create() | | { name, telephone, email } | | update() | contactId | { contact } | | delete() | contactId | |

vps.tcpMonitors

| method | parameters | request body | | ---------- | ------------------ | -------------- | | list() | | | | create() | vpsName | { tcpMonitor } | | update() | vpsName, ipAddress | { tcpMonitor } | | delete() | vpsName, ipAddress | |

haip

| method | parameters | request body | | ---------------- | ---------- | ---------------------------- | | list() | | | | get() | haipName | | | order() | | { productName, description } | | update() | haipName | { haip } | | cancel() | haipName | { endTime } | | statusReport() | haipName | |

haip.certificates

| method | parameters | request body | | ------------------ | ----------------------- | -------------------- | | list() | haipName | | | add() | haipName | { sslCertificateId } | | addLetsEncrypt() | haipName | { commonName } | | detach() | haipName, certificateId | |

haip.ipAddresses

| method | parameters | request body | | ---------- | ---------- | --------------- | | list() | haipName | | | set() | haipName | { ipAddresses } | | detach() | haipName | |

haip.portConfigs

| method | parameters | request body | | ---------- | ----------------------------- | ------------------------------------------------------- | | list() | haipName | | | get() | haipName, portConfigurationId | | | create() | haipName | { name, sourcePort, targetPort, mode, endpointSslMode } | | update() | haipName, portConfigurationId | { portConfiguration } | | delete() | haipName, portConfigurationId | |

colocations

| method | parameters | request body | | --------------- | -------------- | --------------- | | list() | | | | get() | colocationName | | | remoteHands() | colocationName | { remoteHands } |

colocations.ipAddresses

| method | parameters | request body | | ----------------- | ------------------------- | ------------------------- | | list() | colocationName | | | get() | colocationName, ipAddress | | | create() | colocationName | { ipaddress, reverseDns } | | setReverseDns() | colocationName, ipAddress | { ipAddressOptions } | | delete() | colocationName, ipAddress | |

Please note: to avoid clashes in variable name, the request body of setReverseDns() uses ipAddressOptions instead of ipAddress!

Dependencies

The only external dependency is node-fetch. The crypto class, native to node, is used as well.