built-fast/vector-pro-sdk

PHP SDK for the Vector Pro API

Installs: 0

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 2

pkg:composer/built-fast/vector-pro-sdk

v0.1.0 2026-02-06 03:49 UTC

README

BuiltFast Logo Light Mode BuiltFast Logo Dark Mode

Vector Pro SDK for PHP

Official PHP SDK for Vector Pro by BuiltFast.

Requirements

  • PHP 8.3+
  • A PSR-18 HTTP client (e.g., Guzzle)

Installation

composer require built-fast/vector-pro-sdk

You'll also need a PSR-18 HTTP client. If you don't have one:

composer require guzzlehttp/guzzle

Quick Start

use GuzzleHttp\Client;
use GuzzleHttp\Psr7\HttpFactory;
use VectorPro\VectorProClient;
use VectorPro\VectorProClientConfig;

$config = new VectorProClientConfig(
    apiKey: 'your-api-key',
);

$factory = new HttpFactory();
$client = new VectorProClient(
    $config,
    new Client(),
    $factory,
    $factory,
);

// List all sites (returns PaginatedResponse<Site>)
$response = $client->sites->list();
foreach ($response->data as $site) {
    echo $site->id . ': ' . $site->partner_customer_id . "\n";
}

// Get a specific site (returns Site)
$site = $client->sites->get('site-id');
echo $site->dev_php_version; // '8.3'

Response Objects

All API methods return typed response objects for IDE autocomplete and type safety:

use VectorPro\Response\Actor;
use VectorPro\Response\Deployment;
use VectorPro\Response\Environment;
use VectorPro\Response\Event;
use VectorPro\Response\PaginatedResponse;
use VectorPro\Response\Site;

// Site properties
$site = $client->sites->get('site-id');
$site->id;                  // string
$site->partner_customer_id; // string
$site->dev_php_version;     // string
$site->tags;                // string[]
$site->status;              // ?string
$site->created_at;          // ?string
$site->updated_at;          // ?string

// Paginated responses
$response = $client->sites->list(['per_page' => 10, 'page' => 2]);
$response->data;         // Site[]
$response->current_page; // int
$response->per_page;     // int
$response->total;        // int
$response->last_page;    // int

API Reference

Sites

// Returns PaginatedResponse<Site>
$client->sites->list(['per_page' => 10, 'page' => 1]);

// Returns Site
$client->sites->get('site-id');
$client->sites->create(['partner_customer_id' => 'cust-123', 'dev_php_version' => '8.3']);
$client->sites->update('site-id', ['tags' => ['production']]);
$client->sites->clone('site-id');

// Returns array
$client->sites->delete('site-id');
$client->sites->suspend('site-id');
$client->sites->unsuspend('site-id');
$client->sites->resetSftpPassword('site-id');
$client->sites->getLogs('site-id', ['type' => 'error', 'lines' => 100]);
$client->sites->purgeCache('site-id', ['paths' => ['/wp-content/*']]);

Environments

// Returns Environment[]
$client->environments->list('site-id');

// Returns Environment
$client->environments->get('env-id');
$client->environments->create('site-id', [
    'name' => 'staging',
    'php_version' => '8.3',
    'is_production' => false,
]);
$client->environments->update('env-id', ['php_version' => '8.2']);

// Returns array
$client->environments->delete('env-id');
$client->environments->resetDatabasePassword('env-id');

Deployments

// Returns PaginatedResponse<Deployment>
$client->environments->deployments->list('env-id');

// Returns Deployment
$client->environments->deployments->create('env-id', [
    'description' => 'Release v1.0',
    'include_uploads' => true,
]);
$client->environments->deployments->get('deployment-id');
$client->environments->deployments->rollback('env-id', ['deployment_id' => 'prev-id']);

Database

// Returns ImportStatus
$client->sites->db->import('site-id', [
    'url' => 'https://example.com/backup.sql.gz',
    'search_replace' => [
        ['search' => 'old-domain.com', 'replace' => 'new-domain.com'],
    ],
]);
$client->sites->db->createImportSession('site-id', ['filename' => 'backup.sql']);
$client->sites->db->runImport('site-id', 'import-id');
$client->sites->db->getImportStatus('site-id', 'import-id');

// Returns ExportStatus
$client->sites->db->createExport('site-id', ['format' => 'sql']);
$client->sites->db->getExportStatus('site-id', 'export-id');

// Returns array
$client->sites->db->resetPassword('site-id');

WAF (Web Application Firewall)

// Allowed referrers
$client->sites->waf->listAllowedReferrers('site-id');
$client->sites->waf->addAllowedReferrer('site-id', ['hostname' => 'trusted.com']);
$client->sites->waf->removeAllowedReferrer('site-id', 'trusted.com');

// Blocked referrers
$client->sites->waf->listBlockedReferrers('site-id');
$client->sites->waf->addBlockedReferrer('site-id', ['hostname' => 'spam.com']);
$client->sites->waf->removeBlockedReferrer('site-id', 'spam.com');

// Blocked IPs
$client->sites->waf->listBlockedIPs('site-id');
$client->sites->waf->addBlockedIP('site-id', ['ip' => '192.168.1.1']);
$client->sites->waf->removeBlockedIP('site-id', '192.168.1.1');

// Rate limiting
$client->sites->waf->listRateLimits('site-id');
$client->sites->waf->createRateLimit('site-id', [
    'path' => '/wp-login.php',
    'requests_per_second' => 5,
    'block_duration' => 300,
]);
$client->sites->waf->getRateLimit('site-id', 'rule-id');
$client->sites->waf->updateRateLimit('site-id', 'rule-id', ['requests_per_second' => 10]);
$client->sites->waf->deleteRateLimit('site-id', 'rule-id');

SSL

// Returns SslStatus
$client->sites->ssl->getStatus('env-id');

// Returns array
$client->sites->ssl->nudge('env-id');

SSH Keys

// Account-level - Returns SshKey[] or SshKey
$client->account->sshKeys->list();
$client->account->sshKeys->create(['name' => 'My Key', 'public_key' => 'ssh-ed25519 ...']);
$client->account->sshKeys->get('key-id');
$client->account->sshKeys->delete('key-id');

// Site-level - Returns array
$client->sites->sshKeys->list('site-id');
$client->sites->sshKeys->attach('site-id', ['ssh_key_id' => 'key-id']);
$client->sites->sshKeys->detach('site-id', 'key-id');

Secrets

// Global secrets - Returns Secret[] or Secret
$client->account->secrets->list();
$client->account->secrets->create(['name' => 'API_KEY', 'value' => 'secret']);
$client->account->secrets->get('secret-id');
$client->account->secrets->update('secret-id', ['value' => 'new-secret']);
$client->account->secrets->delete('secret-id');

// Environment secrets - Returns Secret[] or Secret
$client->environments->secrets->list('env-id');
$client->environments->secrets->create('env-id', ['name' => 'DB_HOST', 'value' => 'localhost']);
$client->environments->secrets->get('secret-id');
$client->environments->secrets->update('secret-id', ['value' => 'newhost']);
$client->environments->secrets->delete('secret-id');

Webhooks

// Returns Webhook[] or Webhook
$client->webhooks->list();
$client->webhooks->get('webhook-id');
$client->webhooks->create([
    'url' => 'https://example.com/webhook',
    'events' => ['site.created', 'deployment.completed'],
]);
$client->webhooks->update('webhook-id', ['enabled' => false]);
$client->webhooks->rotateSecret('webhook-id');

// Returns array
$client->webhooks->delete('webhook-id');
$client->webhooks->listLogs('webhook-id');

API Keys

// Returns ApiKey[] or ApiKey
$client->account->apiKeys->list();
$client->account->apiKeys->create(['name' => 'CI/CD Key']);

// Returns array
$client->account->apiKeys->delete('key-id');

Events

// Returns PaginatedResponse<Event>
$response = $client->events->list([
    'site_id' => 'site-id',
    'type' => 'deployment',
    'per_page' => 50,
]);

// Event properties
$event = $response->data[0];
$event->id;          // string
$event->event;       // string (e.g., 'site.created', 'deployment.completed')
$event->model_type;  // ?string
$event->model_id;    // ?string
$event->context;     // mixed
$event->actor;       // ?Actor (ip, token_name)
$event->occurred_at; // ?string
$event->created_at;  // ?string

PHP Versions

$client->phpVersions->list();

License

MIT