Files
neon-api-python/README.md
T
kennethreitz c7cad43bb1 Add methods to manage projects, branches, databases, endpoints, roles, and operations
This commit adds new methods to the `NeonAPI` class for managing projects, branches, databases, endpoints, roles, and operations. These methods allow users to create, update, delete, and retrieve information about these entities. The commit also includes a reminder about handling API keys securely. For more information, refer to the [Neon API documentation](https://api-docs.neon.tech/reference/getting-started-with-neon-api).
2024-01-30 10:41:27 -05:00

5.2 KiB

neon_client: an api wrapper for the Neon API.

neon_client is a Python wrapper designed to simplify interactions with the Neon API. It provides a convenient way for developers to integrate their Python applications with the Neon platform, offering methods to manage API keys, projects, branches, databases, endpoints, roles, and operations programmatically.

With neon_client, you can automate tasks, streamline workflows, and build powerful integrations with ease.

from neon_client import NeonAPI

# Initialize the client.
neon = NeonApi(api_key='your_api_key')

Methods of the NeonAPI class:

  • me(): Returns the current user.
  • api_keys(): Returns a list of API keys.
  • api_key_create(**json): Creates an API key.
  • api_key_delete(key_id): Deletes a given API key.

Manage projects:

  • projects(): Returns a list of projects.
  • project(project_id): Returns a specific project.
  • project_create(project_id, **json): Creates a new project.
  • project_update(project_id, **json): Updates a given project.
  • project_delete(project_id): Deletes a given project.

Manage branches:

  • branches(project_id): Returns a list of branches for a given project.
  • branch(project_id, branch_id): Returns a specific branch.
  • branch_create(project_id, **json): Creates a new branch.
  • branch_update(project_id, branch_id, **json): Updates a given branch.
  • branch_delete(project_id, branch_id): Deletes a given branch.
  • branch_set_as_primary(project_id, branch_id): Sets a given branch as primary.

Manage databases:

  • databases(project_id, branch_id): Returns a list of databases for a given project and branch.
  • database(project_id, branch_id, database_id): Returns a specific database.
  • database_create(project_id, branch_id, **json): Creates a new database.
  • database_update(project_id, branch_id, **json): Updates a given database.
  • database_delete(project_id, branch_id, database_id): Deletes a given database.

Manage endpoints:

  • endpoints(project_id, branch_id): Returns a list of endpoints for a given project and branch.
  • endpoint_create(project_id, branch_id, **json): Creates a new endpoint.
  • endpoint_update(project_id, branch_id, endpoint_id, **json): Updates a given endpoint.
  • endpoint_delete(project_id, branch_id, endpoint_id): Deletes a given endpoint.
  • endpoint_start(project_id, branch_id, endpoint_id): Starts a given endpoint.
  • endpoint_suspend(project_id, branch_id, endpoint_id): Suspends a given endpoint.

Manage roles:

  • roles(project_id, branch_id): Returns a list of roles for a given project and branch.
  • role(project_id, branch_id, role_name): Returns a specific role.
  • role_create(project_id, branch_id, role_name): Creates a new role.
  • role_delete(project_id, branch_id, role_name): Deletes a given role.
  • role_password_reveal(project_id, branch_id, role_name): Reveals the password for a given role.
  • role_password_reset(project_id, branch_id, role_name): Resets the password for a given role.

Manage operations:

  • operations(project_id): Returns a list of operations for a given project.
  • operation(project_id, operation_id): Returns a specific operation.

View the Neon API documentation for more information on the available endpoints and their parameters.

Remember that you should never expose your api_key and handle it carefully since it gives access to sensitive data. It's better to set it as an environment variable (e.g. NEON_API_KEY + accompanying neon_client.from_environ()).

Installation

$ pip install neon-client

Please Note: this repository is a work in progress. The package is not yet available on PyPi. The above command will not work.

Usage

>>> from neon_client import NeonAPI

>>> neon = NeonAPI(api_key='your_api_key')

# List all the API keys.
>>> api_keys = neon.api_keys()

# Get a specific API key.
>>> api_key = neon.api_key(api_key_id='your_api_key_id')

# Get all the projects
>>> projects = neon.projects()

# Get a specific project
>>> project = neon.project(project_id='your_project_id')

# Get all the databases
>>> databases = neon.databases()

# Get a specific database
>>> database = neon.database(database_id='your_database_id')

# Get all the branches for a given database.
>>> branches = neon.branches(database_id='your_database_id')

# Get a specific branch
>>> branch = neon.branch(database_id='your_database_id', branch_id='your_branch_id')

Development

Installation is simple with pipenv. Just run the following command in the root directory of the repository:

$ pipenv install --dev

This will install all the necessary dependencies for development.

To run the tests, use the following command:

$ make test

The tests don't require an internet connection, as they are mocked using the pytest-vcr library. To record new cassettes, use the following command:

$ make record

This will record new cassettes for the tests. Make sure to commit these cassettes along with your changes.

MIT licensed.