Skip to main content

Vortex Python SDK for invitation management and JWT generation

Project description

Vortex Python SDK

A Python SDK for Vortex invitation management and JWT generation.

Installation

pip install vortex-python-sdk

Note: The package will be available on PyPI once published. See PUBLISHING.md for publishing instructions.

Usage

Basic Setup

from vortex_sdk import Vortex

# Initialize the client with your Vortex API key
vortex = Vortex(api_key="your-vortex-api-key")

# Or with custom base URL
vortex = Vortex(api_key="your-vortex-api-key", base_url="https://custom-api.example.com")

JWT Generation

# Generate JWT for a user
jwt = vortex.generate_jwt({
    "user_id": "user-123",
    "identifiers": [
        {"type": "email", "value": "user@example.com"}
    ],
    "groups": [
        {"type": "team", "id": "team-1", "name": "Engineering"}
    ],
    "role": "admin"
})

print(f"JWT: {jwt}")

# Or using type-safe models
from vortex_sdk import JwtPayload, IdentifierInput, GroupInput

jwt = vortex.generate_jwt(
    JwtPayload(
        user_id="user-123",
        identifiers=[
            IdentifierInput(type="email", value="user@example.com")
        ],
        groups=[
            GroupInput(type="team", id="team-1", name="Engineering")
        ],
        role="admin"
    )
)

Invitation Management

Get Invitations by Target

import asyncio

async def get_user_invitations():
    # Async version
    invitations = await vortex.get_invitations_by_target("email", "user@example.com")
    for invitation in invitations:
        print(f"Invitation ID: {invitation.id}, Status: {invitation.status}")

# Sync version
invitations = vortex.get_invitations_by_target_sync("email", "user@example.com")

Accept Invitations

async def accept_user_invitations():
    # Async version
    result = await vortex.accept_invitations(
        invitation_ids=["inv1", "inv2"],
        target={"type": "email", "value": "user@example.com"}
    )
    print(f"Result: {result}")

# Sync version
result = vortex.accept_invitations_sync(
    invitation_ids=["inv1", "inv2"],
    target={"type": "email", "value": "user@example.com"}
)

Get Specific Invitation

async def get_invitation():
    # Async version
    invitation = await vortex.get_invitation("invitation-id")
    print(f"Invitation: {invitation.id}")

# Sync version
invitation = vortex.get_invitation_sync("invitation-id")

Revoke Invitation

async def revoke_invitation():
    # Async version
    result = await vortex.revoke_invitation("invitation-id")
    print(f"Revoked: {result}")

# Sync version
result = vortex.revoke_invitation_sync("invitation-id")

Group Operations

Get Invitations by Group

async def get_group_invitations():
    # Async version
    invitations = await vortex.get_invitations_by_group("organization", "org123")
    print(f"Found {len(invitations)} invitations")

# Sync version
invitations = vortex.get_invitations_by_group_sync("organization", "org123")

Delete Invitations by Group

async def delete_group_invitations():
    # Async version
    result = await vortex.delete_invitations_by_group("organization", "org123")
    print(f"Deleted: {result}")

# Sync version
result = vortex.delete_invitations_by_group_sync("organization", "org123")

Reinvite

async def reinvite_user():
    # Async version
    invitation = await vortex.reinvite("invitation-id")
    print(f"Reinvited: {invitation.id}")

# Sync version
invitation = vortex.reinvite_sync("invitation-id")

Context Manager Usage

# Async context manager
async with Vortex(api_key="your-api-key") as vortex:
    invitations = await vortex.get_invitations_by_target("email", "user@example.com")

# Sync context manager
with Vortex(api_key="your-api-key") as vortex:
    invitations = vortex.get_invitations_by_target_sync("email", "user@example.com")

Error Handling

from vortex_sdk import VortexApiError

try:
    invitation = vortex.get_invitation_sync("invalid-id")
except VortexApiError as e:
    print(f"API Error: {e.message} (Status: {e.status_code})")
except Exception as e:
    print(f"Unexpected error: {e}")

Development

Installation

# Install development dependencies
pip install -e ".[dev]"

Running Tests

pytest

Code Formatting

# Format code
black src/ tests/
isort src/ tests/

# Lint code
ruff check src/ tests/
mypy src/

License

MIT

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

vortex_python_sdk-0.0.5.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

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

vortex_python_sdk-0.0.5-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file vortex_python_sdk-0.0.5.tar.gz.

File metadata

  • Download URL: vortex_python_sdk-0.0.5.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for vortex_python_sdk-0.0.5.tar.gz
Algorithm Hash digest
SHA256 9ef924358f1f2ffde7b35313e7fc08e578a07d7a3ca12031d8d638da729b2bb9
MD5 63aaf9b4843ca6105cfeb3d17bd93b60
BLAKE2b-256 2a8bb82f6ccb07e67a31950a6e2d3cd2821ee1b1fbc79417505bf7214b0166ce

See more details on using hashes here.

File details

Details for the file vortex_python_sdk-0.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for vortex_python_sdk-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 4a8b9e0f389b11a1834eadd3c693fbbe57dafe3301df891f3db43799f1158faf
MD5 afdae084c7fc5567f209d83f91429c59
BLAKE2b-256 bba62989a2e7dd83ad94374a51197c44270af9f3b20c48ff875773acb56ae5cd

See more details on using hashes here.

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