Skip to content

liucf/neon-sdk-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Neon PHP SDK

Table of Contents

Getting started

Requires PHP 8.2+

First, install via the Composer package manager:

composer require liucf/neon-sdk-php

Then, interact with Neon's API by creating a client instance with your API key:

$neon = Neon::client('napi_123456789');

Usage

ApiKeys Resource

list

$neon->apiKeys()->list();

create

$neon->apiKeys()->create(['key_name' => 'Test API Key from SDK']);

revoke

$neon->apiKeys()->revoke('2188549');

Operations Resource

list

$neon->operations()->list('royal-hall-84927440');

or with parameters limit and cursor:

$neon->operations()->list('royal-hall-84927440', [
    'limit' => 2,
    'cursor' => '2025-07-27T01:45:32.898729Z',
]);

retrieve

$neon->operations()->retrieve('royal-hall-84927440', '33d65f33-eabe-4f46-b945-123456789abc');

Projects Resource

list

$neon->projects()->list(['project' => ['org_id' => 'org_123456789']]);

create

$neon->projects()->create(['project' => ['name' => 'test_project']]);

listShared

$neon->projects()->listShared();

retrieve

$neon->projects()->retrieve('project_123456789');

update

$neon->projects()->update('project_123456789', ['project' => ['name' => 'updated_project_name']]);

delete

$neon->projects()->delete('project_123456789');

listPermissions

$neon->projects()->listPermissions('project_123456789');

grantPermission

$neon->projects()->grantPermission('project_123456789', ['email' => 'user@example.com']);

revokePermission

$neon->projects()->revokePermission('project_123456789', 'permission_id');

getAvailablePreloadLibraries

$neon->projects()->getAvailablePreloadLibraries('project_123456789');

createTransferRequest

$neon->projects()->createTransferRequest('project_123456789', ['target_email' => 'target@example.com']);

acceptTransferRequest

$neon->projects()->acceptTransferRequest('project_123456789', 'request_id', ['org_id' => 'org_987654321']);

listJwks

$neon->projects()->listJwks('project_123456789');

addJwks

$neon->projects()->addJwks('project_123456789', [
    'jwks_url' => 'https://example.com/.well-known/jwks.json',
    'provider_name' => 'Auth0'
]);

deleteJwks

$neon->projects()->deleteJwks('project_123456789', 'jwks_id');

getConnectionUri

$neon->projects()->getConnectionUri('project_123456789', [
    'database_name' => 'main',
    'role_name' => 'user'
]);

listVpcEndpoints

$neon->projects()->listVpcEndpoints('project_123456789');

setVpcEndpoint

$neon->projects()->setVpcEndpoint('project_123456789', 'vpc_endpoint_id');

deleteVpcEndpoint

$neon->projects()->deleteVpcEndpoint('project_123456789', 'vpc_endpoint_id');

Branches Resource

list

$neon->branches()->list('project_123456789');

list with parameters

$neon->branches()->list('project_123456789', [
    'search' => 'test',
    'sort_by' => 'name',
    'sort_order' => 'asc',
    'limit' => 10
]);

create

$neon->branches()->create('project_123456789', [
    'branch' => [
        'name' => 'test-branch',
        'parent_id' => 'br-main-12345'
    ]
]);

create without parameters (auto-generated name)

$neon->branches()->create('project_123456789');

count

$neon->branches()->count('project_123456789');

retrieve

$neon->branches()->retrieve('project_123456789', 'br-branch-test-12345');

update

$neon->branches()->update('project_123456789', 'br-branch-test-12345', [
    'branch' => [
        'name' => 'updated-branch-name'
    ]
]);

delete

$neon->branches()->delete('project_123456789', 'br-branch-test-12345');

restore

$neon->branches()->restore('project_123456789', 'br-branch-test-12345', [
    'source_branch_id' => 'br-main-12345',
    'timestamp' => '2025-07-26T12:00:00Z'
]);

setAsDefault

$neon->branches()->setAsDefault('project_123456789', 'br-branch-test-12345');

getSchema

$neon->branches()->getSchema('project_123456789', 'br-branch-test-12345', [
    'db_name' => 'main',
    'format' => 'sql'
]);

getSchema with timestamp

$neon->branches()->getSchema('project_123456789', 'br-branch-test-12345', [
    'db_name' => 'main',
    'timestamp' => '2025-07-26T12:00:00Z',
    'format' => 'json'
]);

compareSchema

$neon->branches()->compareSchema('project_123456789', 'br-branch-test-12345', [
    'target_branch_id' => 'br-main-12345',
    'db_name' => 'main'
]);

listEndpoints

$neon->branches()->listEndpoints('project_123456789', 'br-branch-test-12345');

listDatabases

$neon->branches()->listDatabases('project_123456789', 'br-branch-test-12345');

listRoles

$neon->branches()->listRoles('project_123456789', 'br-branch-test-12345');

Endpoints Resource

list

$neon->endpoints()->list('project_123456789');

create

$neon->endpoints()->create('project_123456789', [
    'endpoint' => [
        'branch_id' => 'br-branch-test-12345',
        'type' => 'read_write',
        'autoscaling_limit_min_cu' => 1,
        'autoscaling_limit_max_cu' => 2
    ]
]);

create read-only endpoint

$neon->endpoints()->create('project_123456789', [
    'endpoint' => [
        'branch_id' => 'br-branch-test-12345',
        'type' => 'read_only',
        'autoscaling_limit_min_cu' => 0.25,
        'autoscaling_limit_max_cu' => 1
    ]
]);

retrieve

$neon->endpoints()->retrieve('project_123456789', 'ep-endpoint-123456');

update

$neon->endpoints()->update('project_123456789', 'ep-endpoint-123456', [
    'endpoint' => [
        'autoscaling_limit_max_cu' => 4,
        'suspend_timeout_seconds' => 600
    ]
]);

delete

$neon->endpoints()->delete('project_123456789', 'ep-endpoint-123456');

start

$neon->endpoints()->start('project_123456789', 'ep-endpoint-123456');

suspend

$neon->endpoints()->suspend('project_123456789', 'ep-endpoint-123456');

restart

$neon->endpoints()->restart('project_123456789', 'ep-endpoint-123456');

Users Resource

me

$neon->users()->me();

organizations

$neon->users()->organizations();

transferProjects

$neon->users()->transferProjects([
    'project_ids' => ['royal-hall-11111111', 'golden-sunset-22222222'],
    'org_id' => 'org-123456'
]);

authDetails

$neon->users()->authDetails();

Consumption Resource

account

$neon->consumption()->account();

account with parameters

$neon->consumption()->account([
    'from' => '2025-07-01T00:00:00Z',
    'to' => '2025-07-31T23:59:59Z',
    'granularity' => 'monthly'
]);

projects

$neon->consumption()->projects();

projects with parameters

$neon->consumption()->projects([
    'from' => '2025-07-01T00:00:00Z',
    'to' => '2025-07-31T23:59:59Z',
    'granularity' => 'daily',
    'org_id' => 'org-123456'
]);

Organizations Resource

retrieve

$neon->organizations()->retrieve('org-morning-bread-81040908');

listApiKeys

$neon->organizations()->listApiKeys('org-morning-bread-81040908');

createApiKey

$neon->organizations()->createApiKey('org-morning-bread-81040908', [
    'key_name' => 'production-api-key'
]);

revokeApiKey

$neon->organizations()->revokeApiKey('org-morning-bread-81040908', 165434);

getMembers

$neon->organizations()->getMembers('org-morning-bread-81040908');

updateMember

$neon->organizations()->updateMember('org-morning-bread-81040908', 'user-123', [
    'role' => 'admin'
]);

removeMember

$neon->organizations()->removeMember('org-morning-bread-81040908', 'user-123');

createInvitation

$neon->organizations()->createInvitation('org-morning-bread-81040908', [
    'email' => 'user@example.com',
    'role' => 'member'
]);

listInvitations

$neon->organizations()->listInvitations('org-morning-bread-81040908');

revokeInvitation

$neon->organizations()->revokeInvitation('org-morning-bread-81040908', 123);

resendInvitation

$neon->organizations()->resendInvitation('org-morning-bread-81040908', 123);

transferProjects

$neon->organizations()->transferProjects('org-morning-bread-81040908', [
    'project_ids' => ['project-123', 'project-456']
]);

listVpcEndpoints

$neon->organizations()->listVpcEndpoints('org-morning-bread-81040908');

getVpcEndpointDetails

$neon->organizations()->getVpcEndpointDetails('org-morning-bread-81040908', 'us-east-1', 'vpce-123');

assignVpcEndpoint

$neon->organizations()->assignVpcEndpoint('org-morning-bread-81040908', 'us-east-1', 'vpce-123', [
    'label' => 'production-vpc'
]);

deleteVpcEndpoint

$neon->organizations()->deleteVpcEndpoint('org-morning-bread-81040908', 'us-east-1', 'vpce-123');

Regions Resource

list

$neon->regions()->list();

Auth Resource

createIntegration

$neon->auth()->createIntegration([
    'project_id' => 'project_123456789',
    'auth_provider' => 'auth0',
    'domain' => 'example.auth0.com'
]);

listRedirectUriWhitelistDomains

$neon->auth()->listRedirectUriWhitelistDomains('project_123456789');

addDomainToRedirectUriWhitelist

$neon->auth()->addDomainToRedirectUriWhitelist('project_123456789', [
    'domain' => 'https://example.com'
]);

deleteDomainFromRedirectUriWhitelist

$neon->auth()->deleteDomainFromRedirectUriWhitelist('project_123456789', [
    'domain' => 'https://example.com'
]);

createProviderSdkKeys

$neon->auth()->createProviderSdkKeys([
    'project_id' => 'project_123456789',
    'provider' => 'supabase'
]);

createUser

$neon->auth()->createUser([
    'project_id' => 'project_123456789',
    'email' => 'user@example.com',
    'password' => 'securepassword123'
]);

deleteUser

$neon->auth()->deleteUser('project_123456789', 'auth_user_123');

transferProviderProject

$neon->auth()->transferProviderProject([
    'project_id' => 'project_123456789',
    'target_project_id' => 'project_987654321'
]);

listIntegrations

$neon->auth()->listIntegrations('project_123456789');

listOauthProviders

$neon->auth()->listOauthProviders('project_123456789');

addOauthProvider

$neon->auth()->addOauthProvider('project_123456789', [
    'provider_type' => 'google',
    'client_id' => 'google_client_id',
    'client_secret' => 'google_client_secret'
]);

updateOauthProvider

$neon->auth()->updateOauthProvider('project_123456789', 'oauth_provider_123', [
    'client_secret' => 'new_client_secret'
]);

deleteOauthProvider

$neon->auth()->deleteOauthProvider('project_123456789', 'oauth_provider_123');

getEmailServerConfig

$neon->auth()->getEmailServerConfig('project_123456789');

updateEmailServerConfig

$neon->auth()->updateEmailServerConfig('project_123456789', [
    'smtp_host' => 'smtp.example.com',
    'smtp_port' => 587,
    'smtp_user' => 'admin@example.com'
]);

deleteIntegration

$neon->auth()->deleteIntegration('project_123456789', 'auth0');

DataAPI Resource

create

$neon->dataAPI()->create('project_123456789', 'br-branch-test-12345');

create with parameters

$neon->dataAPI()->create('project_123456789', 'br-branch-test-12345', [
    'database_name' => 'main',
    'role_name' => 'neondb_owner'
]);

get

$neon->dataAPI()->get('project_123456789', 'br-branch-test-12345');

delete

$neon->dataAPI()->delete('project_123456789', 'br-branch-test-12345');

Note This client is inspired by OpenAI PHP.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages