Use SE2's APIs from JS/TS
You can find a detailed specification of SE2’s APIs here.
Use our JavaScript SDK to easily interact with SE2’s APIs using JavaScript or TypeScript.
Install SE2 for JS/TS
npm install @suborbital/se2
Setup
Import the library and configure the client. The default configuration will point the client at SE2’s default production URLs in your cluster.
A configuration for local development is also provided.
Default Config
By default, the client will point to the control plane and data plane within your Kubernetes cluster.
import { Suborbital } from '@suborbital/se2';
const suborbital = new Suborbital();
Local config
For local development with SE2 running in docker-compose, the local configuration will point to the services running on your local machine.
import { Suborbital, localConfig } from '@suborbital/se2';
const suborbital = new Suborbital(localConfig);
Custom API URLs or ports
import { Suborbital } from '@suborbital/se2';
const configuration = {
adminUri: 'https://acme.co:8081',
execUri: 'https://acme.co:8080',
builderUri: 'https://acme.co/builder',
};
const suborbital = new Suborbital(configuration);
Getting started
Using the SE2 APIs, this guide will use the Administrative and Execution APIs to get a list of available plugins and execute one.
The Administrative APIs getPlugins
method takes an object with a userId
and a namespace
and returns a list of available plugins for that user in the provided namespace.
async function listAvailablePlugins() {
const plugins = await suborbital.admin.getPlugins({
userId: '1234',
namespace: 'default',
});
console.log('Plugins:', plugins);
}
Example output
{
"plugins": [
{
"name": "foo",
"namespace": "...",
"lang": "...",
"version": "...",
"draftVersion": "...",
"apiVersion": "...",
"fqext": "...",
"fqextURI": "...",
}
]
}
The result includes a plugin named foo
(which for this tutorial already exists) and which we will execute using the Execution APIs run
method.
The run
method takes an object with the environment
, userId
, namespace
, extName
, and version
, and returns the result of the executed plugin.
async function runExtension() {
const result = await suborbital.exec.run({
environment: 'com.acmeco',
userId: '1234',
namespace: 'default',
pluginName: 'foo',
version: 'v1.0.0',
});
console.log('Extension output:', result);
}
Full API
These are all of the available methods.
Admin
suborbital.admin.getToken
Description: Retrieves an authentication token for the given plugin, typically used to authenticate calls to the Builder API. Args: An object containing environment
, userId
, namespace
, pluginName
. Result: A string containing the token used for authorization.
suborbital.admin.getPlugins
Description: Returns a list of available plugins for the given user in the given namespace. Args: An object containing userId
, namespace
. Result:
{
"plugins": [
{
"name": "foo",
"namespace": "...",
"lang": "...",
"version": "...",
"draftVersion": "...",
"apiVersion": "...",
"fqmn": "...",
"fqmnURI": "...",
}
]
}
suborbital.admin.getExecutionResult
Description: Returns the most recent results (up to 5) produced by the execution of the given plugin. Args: An object containing environment
, userId
, namespace
, pluginName
, version
. Result:
{
"results": [
{
"uuid": "...",
"timestamp": "...",
"response": "..."
}
]
}
Exec
suborbital.exec.run
Description: Executes the given plugin, with the provided body, params and state loaded into the extension at runtime. Args: An object containing environment
,userId
,namespace
, pluginName
,version
. Result: The result of the executed plugin.
Builder
suborbital.builder.build
Description: Builds the provided code using the specified language toolchain. Args: An object containing language
, environment
, userId
, namespace
, pluginName
, token
. Result: A string containing the logs for the build.
suborbital.builder.getDraft
Description: Gets the draft for the specified runnable. Args: An object containing environment
, userId
, namespace
, pluginName
, token
. Result: A specified runnable.
suborbital.builder.deployDraft
Description: Deploys the specified runnable. Args: An object containing environment
, userId
, namespace
, pluginName
, token
. Result: A string containing the version.
suborbital.builder.testDraft
Description: Tests the draft for the specified runnable. Args: An object containing environment
, userId
, namespace
, pluginName
. Result: A string containing the result.
suborbital.builder.getTemplate
Description: Gets the template (which controls what your users see when they create a new plugin) for a new extension of the given language. Args: An object containing pluginName
, language
. Result:
import { logInfo } from '@suborbital/suborbital';
export function run(input: ArrayBuffer): ArrayBuffer {
let inStr = String.UTF8.decode(input);
let out = 'Hello there, ' + inStr;
return String.UTF8.encode(out);
}