Official Node.js SDK for the Vector Pro API by BuiltFast.
npm install vector-pro-sdkimport { VectorProClient } from 'vector-pro-sdk';
const client = new VectorProClient({
apiKey: 'your-api-key',
});
// List sites
const sites = await client.sites.list();
// Create a site
const site = await client.sites.create({
partner_customer_id: 'customer-123',
dev_php_version: '8.3',
});
// Get a specific site
const site = await client.sites.get('site-id');
// Manage environments
const envs = await client.environments.list('site-id');
await client.environments.deploy('site-id', 'production');
await client.environments.rollback('site-id', 'production');
// Database operations
await client.sites.db.createExport('site-id');
await client.sites.db.importDirect('site-id', { dropTables: true });
// WAF management
await client.sites.waf.addBlockedIP('site-id', '1.2.3.4');
await client.sites.waf.listRateLimits('site-id');
// SSH keys
await client.sites.sshKeys.add('site-id', {
name: 'my-key',
public_key: 'ssh-rsa ...',
});
// Account management
const summary = await client.account.getSummary();
await client.account.apiKeys.create({ name: 'ci-token' });
await client.account.secrets.create({ key: 'MY_SECRET', value: 'secret-value' });
// Webhooks
await client.webhooks.create({
url: 'https://example.com/webhook',
events: ['site.created', 'deployment.completed'],
});client.sites.list(options?)- List all sitesclient.sites.get(siteId)- Get a siteclient.sites.create(data)- Create a siteclient.sites.update(siteId, data)- Update a siteclient.sites.delete(siteId)- Delete a siteclient.sites.clone(siteId, data?)- Clone a siteclient.sites.suspend(siteId)- Suspend a siteclient.sites.unsuspend(siteId)- Unsuspend a siteclient.sites.getLogs(siteId, options?)- Get site logsclient.sites.purgeCache(siteId, options?)- Purge CDN cache
client.sites.db.importDirect(siteId, options?)- Import SQL directlyclient.sites.db.createImportSession(siteId, data?)- Create import session for large filesclient.sites.db.runImport(siteId, importId)- Run a pending importclient.sites.db.getImportStatus(siteId, importId)- Get import statusclient.sites.db.createExport(siteId, options?)- Create database exportclient.sites.db.getExportStatus(siteId, exportId)- Get export status
client.sites.waf.listAllowedReferrers(siteId)- List allowed referrersclient.sites.waf.addAllowedReferrer(siteId, hostname)- Add allowed referrerclient.sites.waf.removeAllowedReferrer(siteId, hostname)- Remove allowed referrerclient.sites.waf.listBlockedReferrers(siteId)- List blocked referrersclient.sites.waf.addBlockedReferrer(siteId, hostname)- Add blocked referrerclient.sites.waf.removeBlockedReferrer(siteId, hostname)- Remove blocked referrerclient.sites.waf.listBlockedIPs(siteId)- List blocked IPsclient.sites.waf.addBlockedIP(siteId, ip)- Add blocked IPclient.sites.waf.removeBlockedIP(siteId, ip)- Remove blocked IPclient.sites.waf.listRateLimits(siteId)- List rate limitsclient.sites.waf.createRateLimit(siteId, data)- Create rate limitclient.sites.waf.getRateLimit(siteId, ruleId)- Get rate limitclient.sites.waf.updateRateLimit(siteId, ruleId, data)- Update rate limitclient.sites.waf.deleteRateLimit(siteId, ruleId)- Delete rate limit
client.sites.sshKeys.list(siteId, options?)- List SSH keysclient.sites.sshKeys.add(siteId, data)- Add SSH keyclient.sites.sshKeys.remove(siteId, keyId)- Remove SSH key
client.sites.ssl.getStatus(siteId, envId)- Get SSL statusclient.sites.ssl.nudge(siteId, envId, options?)- Nudge SSL provisioning
client.environments.list(siteId, options?)- List environmentsclient.environments.get(siteId, envId)- Get an environmentclient.environments.create(siteId, data)- Create an environmentclient.environments.update(siteId, envId, data)- Update an environmentclient.environments.delete(siteId, envId)- Delete an environmentclient.environments.deploy(siteId, envId)- Deploy an environmentclient.environments.rollback(siteId, envId, targetDeploymentId?)- Rollback deploymentclient.environments.resetDatabasePassword(siteId, envId)- Reset database password
client.environments.deployments.list(siteId, envId, options?)- List deploymentsclient.environments.deployments.get(siteId, envId, deploymentId)- Get deployment
client.environments.secrets.list(siteId, envId, options?)- List secretsclient.environments.secrets.create(siteId, envId, data)- Create secretclient.environments.secrets.get(siteId, envId, secretId)- Get secretclient.environments.secrets.update(siteId, envId, secretId, data)- Update secretclient.environments.secrets.delete(siteId, envId, secretId)- Delete secret
client.account.getSummary()- Get account summaryclient.account.sshKeys.list(options?)- List account SSH keysclient.account.sshKeys.create(data)- Create SSH keyclient.account.sshKeys.get(keyId)- Get SSH keyclient.account.sshKeys.delete(keyId)- Delete SSH keyclient.account.apiKeys.list(options?)- List API keysclient.account.apiKeys.create(data)- Create API keyclient.account.apiKeys.delete(tokenId)- Delete API keyclient.account.secrets.list(options?)- List global secretsclient.account.secrets.create(data)- Create global secretclient.account.secrets.get(secretId)- Get global secretclient.account.secrets.update(secretId, data)- Update global secretclient.account.secrets.delete(secretId)- Delete global secret
client.webhooks.list(options?)- List webhooksclient.webhooks.get(webhookId)- Get a webhookclient.webhooks.create(data)- Create a webhookclient.webhooks.update(webhookId, data)- Update a webhookclient.webhooks.delete(webhookId)- Delete a webhookclient.webhooks.rotateSecret(webhookId)- Rotate webhook secretclient.webhooks.listLogs(webhookId, options?)- List webhook delivery logs
client.events.list(options?)- List events
client.phpVersions.list()- List available PHP versions
Full TypeScript support with exported types for all API responses:
import { VectorProClient } from 'vector-pro-sdk';
import type { Site, Environment, ApiResponse, ListResponse } from 'vector-pro-sdk';
const client = new VectorProClient({ apiKey: 'your-api-key' });
// Responses are fully typed
const sites: ListResponse<Site> = await client.sites.list();
const site: ApiResponse<Site> = await client.sites.get('site-id');
// Access typed data
sites.data?.forEach(site => {
console.log(site.id, site.status);
});import { VectorProClient, VectorProApiError } from 'vector-pro-sdk';
try {
await client.sites.get('invalid-id');
} catch (error) {
if (error instanceof VectorProApiError) {
console.log(error.status); // HTTP status code
console.log(error.body); // Response body
}
}# Install dependencies
npm install
# Build
npm run buildMIT - see LICENSE for details.