Skip to main content

Audit-Log-as-a-Service client library

Project description

LogVault Python SDK

PyPI version Python versions License: MIT

Official Python client for LogVault — Audit-Log-as-a-Service for B2B SaaS. SOC 2, GDPR, and ISO 27001 compliant. Hosted in the EU.

Installation

pip install logvault

Quick Start

from logvault import Client

client = Client("your-api-key")

# Log an audit event
event = client.log(
    action="user.login",
    user_id="user_123",
    resource="auth",
    metadata={"ip": "192.168.1.1", "method": "password"}
)

print(f"Logged: {event['id']}")

Features

  • Sync & Async — Both Client and AsyncClient available
  • Automatic Retries — Exponential backoff with jitter
  • Input Validation — Action format and payload size checks
  • Error Handling — Typed exceptions for auth, rate limits, validation
  • Replay Protection — Optional nonce support

Usage

Async Client

import asyncio
from logvault import AsyncClient

async def main():
    async with AsyncClient("your-api-key") as client:
        event = await client.log(
            action="document.create",
            user_id="user_456",
            resource="document:789",
            metadata={"title": "Q4 Report"}
        )

asyncio.run(main())

List Events

# Get recent events
response = client.list_events(page=1, page_size=50)

for event in response['events']:
    print(f"{event['timestamp']} - {event['action']}")

# Filter by user or action
user_events = client.list_events(user_id="user_123")
login_events = client.list_events(action="user.login")

Error Handling

from logvault import Client, AuthenticationError, RateLimitError, APIError

client = Client("your-api-key")

try:
    event = client.log(action="user.login", user_id="user_123")
except AuthenticationError:
    print("Invalid API key")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after}s")
except APIError as e:
    print(f"API error: {e.status_code}")

Configuration Options

client = Client(
    api_key="your-api-key",
    base_url="https://api.logvault.eu",  # Default
    timeout=30,                           # Request timeout (seconds)
    enable_nonce=True,                    # Replay protection
    max_retries=3                         # Retry attempts
)

Action Format

Actions follow the pattern entity.verb:

Category Examples
Auth user.login, user.logout, user.password_reset
Documents document.create, document.read, document.delete
Permissions permission.grant, permission.revoke, role.assign
Data data.export, data.delete

Requirements

  • Python 3.8+
  • requests (sync client)
  • aiohttp (async client)

Links

License

MIT — see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

logvault-0.2.5.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

logvault-0.2.5-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file logvault-0.2.5.tar.gz.

File metadata

  • Download URL: logvault-0.2.5.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for logvault-0.2.5.tar.gz
Algorithm Hash digest
SHA256 0ea02d8359da6650aba9e38d5c3675c6f4fdfa7764d816589173bf0f240a47d5
MD5 46da4eba569c2de5eebbdf91de8e1b9b
BLAKE2b-256 a1d3d0a05c526c3fd6445965bafd72e65bfa60f45ff7bedc083b0869f331dcd6

See more details on using hashes here.

Provenance

The following attestation bundles were made for logvault-0.2.5.tar.gz:

Publisher: publish.yml on Rul1an/logvault-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file logvault-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: logvault-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 10.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for logvault-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 adadf967d2529ef9e59b1d8eca964c4f97c0ce01af27e551b20e2a2d1b60db97
MD5 e019ff8506bd7379e86cf4d2f5bdfc16
BLAKE2b-256 cf6e8319c3bd7e603c699eb787004a1f7a3f5677b652e064d1c33b674468035d

See more details on using hashes here.

Provenance

The following attestation bundles were made for logvault-0.2.5-py3-none-any.whl:

Publisher: publish.yml on Rul1an/logvault-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page