Official PHP SDK for the Vector Pro API.
- PHP 8.3+
- A PSR-18 HTTP client (e.g., Guzzle)
composer require built-fast/vector-pro-sdkYou'll also need a PSR-18 HTTP client. If you don't have one:
composer require guzzlehttp/guzzleuse 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'All API methods return typed response objects for IDE autocomplete and type safety:
use VectorPro\Response\Site;
use VectorPro\Response\Environment;
use VectorPro\Response\Deployment;
use VectorPro\Response\PaginatedResponse;
// 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// 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/*']]);// Returns Environment[]
$client->environments->list('site-id');
// Returns Environment
$client->environments->get('site-id', 'env-id');
$client->environments->create('site-id', [
'name' => 'staging',
'php_version' => '8.3',
'is_production' => false,
]);
$client->environments->update('site-id', 'env-id', ['php_version' => '8.2']);
// Returns array
$client->environments->delete('site-id', 'env-id');
$client->environments->resetDatabasePassword('site-id', 'env-id');// Returns PaginatedResponse<Deployment>
$client->environments->deployments->list('site-id', 'env-id');
// Returns Deployment
$client->environments->deployments->create('site-id', 'env-id', ['description' => 'Release v1.0']);
$client->environments->deployments->get('site-id', 'env-id', 'deployment-id');
$client->environments->deployments->rollback('site-id', 'env-id', ['deployment_id' => 'prev-id']);// 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');// 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');// Returns SslStatus
$client->sites->ssl->getStatus('site-id', 'env-id');
// Returns array
$client->sites->ssl->nudge('site-id', 'env-id');// 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');// 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('site-id', 'env-id');
$client->environments->secrets->create('site-id', 'env-id', ['name' => 'DB_HOST', 'value' => 'localhost']);
$client->environments->secrets->get('site-id', 'env-id', 'secret-id');
$client->environments->secrets->update('site-id', 'env-id', 'secret-id', ['value' => 'newhost']);
$client->environments->secrets->delete('site-id', 'env-id', 'secret-id');// 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');// Returns ApiKey[] or ApiKey
$client->account->apiKeys->list();
$client->account->apiKeys->create(['name' => 'CI/CD Key']);
// Returns array
$client->account->apiKeys->delete('key-id');$client->events->list([
'site_id' => 'site-id',
'type' => 'deployment',
'per_page' => 50,
]);$client->phpVersions->list();MIT