This release is a pre-release and may not be stable for production use.
nerova-sdk
Server-side Python client for Nerova's dedicated stable tenant-v1 API. The
typed async client is built from the published tenant-v1 OpenAPI contract, so
every path, parameter, and model exists because the contract says so.
This package is server-side only: no browser credential flow, no UI, no persistent credential storage. Never ship an API key to a browser or a mobile app.
pip install nerova-sdk==0.3.0b2
The distribution name is nerova-sdk; the import name is nerova_sdk. It needs
Python 3.9 or later and installs its HTTP and serialization runtime libraries as
regular dependencies.
Versioning
The SDK shares one version line with @nerova/sdk and Nerova.Sdk
(currently 0.3.0-preview.2). PyPI requires PEP 440 versions, so a
-preview.N suffix is written as bN: 0.3.0-preview.2 is 0.3.0b2, and
0.3.0-preview.3 will be 0.3.0b3. A stable release keeps the bare
X.Y.Z. Pip skips pre-releases unless you pin one (as above) or pass
--pre. The API surface may change before 1.0, so pin the exact version.
Quickstart
The API has one public host, https://api.nerovasystems.com, which is the
client's default base URL. Every API key is a Live key (nrv_live_) that reaches
Production; approved platforms start on a free testing allowance. Read the key
from the environment and send it as Authorization: Bearer <key>:
import asyncio
import os
from kiota_abstractions.authentication import ApiKeyAuthenticationProvider, KeyLocation
from kiota_http.httpx_request_adapter import HttpxRequestAdapter
from nerova_sdk import NerovaPartnerClient
async def main() -> None:
value = os.environ["NEROVA_API_KEY"]
tenant_id = os.environ["TENANT_ID"]
authentication_provider = ApiKeyAuthenticationProvider(
KeyLocation.Header, f"Bearer {value}", "Authorization"
)
client = NerovaPartnerClient(HttpxRequestAdapter(authentication_provider))
manifest = await client.api.v1.tenants.by_tenant_id(tenant_id).activation.manifest.get()
print(manifest.state, manifest.next_allowed_actions)
asyncio.run(main())
The client mirrors the URL structure of the API: client.api.v1.status,
client.api.v1.context, client.api.v1.tenants, and
client.api.v1.tenants.by_tenant_id(id) for everything under one tenant.
Models live in nerova_sdk.models, and request builders in nerova_sdk.api.
Conventions
-
Idempotency: send a caller-owned
Idempotency-Keyheader on every mutation via the request configuration, and reuse the same value when repeating the same command. The client performs no automatic retries of mutations:from kiota_abstractions.base_request_configuration import RequestConfiguration from nerova_sdk.models.create_tenant_v1_request import CreateTenantV1Request configuration = RequestConfiguration() configuration.headers.add("Idempotency-Key", "provision-tenant-your-crm-id-123") created = await client.api.v1.tenants.post( CreateTenantV1Request(display_name="Demo Salon", external_reference="your-crm-id-123"), configuration, )
-
Errors follow RFC 9457 problem details: the request adapter raises the deserialized
nerova_sdk.models.problem_details.ProblemDetails(anAPIError) withresponse_status_codeandresponse_headersattached; the stablecodeandcorrelationIdarrive inadditional_data. Branch on those fields, never on message text. -
Enums are open string sets; treat unknown values as forward compatibility.
-
List endpoints paginate with
unixms|idcursors: passcursorback through the query parameters untilnext_cursorisNone.
Documentation and support
Guides, the API reference, and support contacts are on docs.nerovasystems.com. Start with the quickstart and the SDK overview.
Metadata
Release files for nerova-sdk 0.3.0b2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nerova_sdk-0.3.0b2.tar.gz | 57.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nerova_sdk-0.3.0b2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 300.2 kB
Release files / nerova_sdk-0.3.0b2.tar.gz
| Download URL | nerova_sdk-0.3.0b2.tar.gz |
|---|---|
| Size | 57.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eaf884625441443d1e7bc4d0b44a1a29e832e8945d55c29f632c7d172945de2c
|
|
BLAKE2b-256 checksum How to use checksums |
6d254b5b2304baab0dd190b431aa20e519470474536fc6448ef48a94f45495a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.
Transparency logRelease files / nerova_sdk-0.3.0b2-py3-none-any.whl
| Download URL | nerova_sdk-0.3.0b2-py3-none-any.whl |
|---|---|
| Size | 242.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ded6058288584199518a4dbaff6c3e37b4bcd883116647ad2440955e3b2b9538
|
|
BLAKE2b-256 checksum How to use checksums |
543e6eaf245231e5f91d327d764ab211e0dab7c6dc1046d8286bb2bbdffec110
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.
Transparency log