Catalog PyPI
PACKAGE EXPLORERView in registry

aether-support

PyPI

Official Python SDK for Aether Support - AI-powered customer support platform

Versions collected1
Direct dependencies9From release 1.0.0
Last observed20 Oct, 20:55 UTC

README

Version 1.0.0 documentation

Aether Support Python SDK

Official Python SDK for Aether Support - the AI-powered customer support platform.

Installation

pip install aether-support

Quick Start

from aether_support import AetherSupport

# Initialize the client
client = AetherSupport(
    app_id="your-app-id",
    api_key="your-api-key"
)

# Create a ticket
ticket = client.tickets.create(
    subject="Help with integration",
    description="I need help setting up the SDK",
    customer_email="user@example.com",
    category="technical"
)

print(f"Created ticket: {ticket.ticket_id}")

# Get all tickets
tickets = client.tickets.list()
for t in tickets:
    print(f"[{t.status}] {t.subject}")

# Reply to a ticket
client.tickets.reply(
    ticket_id=ticket.ticket_id,
    content="Here's more information about my issue..."
)

Async Support

import asyncio
from aether_support import AsyncAetherSupport

async def main():
    client = AsyncAetherSupport(
        app_id="your-app-id",
        api_key="your-api-key"
    )
    
    # All methods are async
    tickets = await client.tickets.list()
    for t in tickets:
        print(f"[{t.status}] {t.subject}")
    
    await client.close()

asyncio.run(main())

Features

Ticket Management

# List tickets with filters
tickets = client.tickets.list(
    status="open",
    category="billing",
    limit=50
)

# Get a specific ticket
ticket = client.tickets.get("ticket-id")

# Update ticket status
client.tickets.update("ticket-id", status="resolved")

# Add internal note (agents only)
client.tickets.add_note("ticket-id", "Internal notes here")

Knowledge Base

# Search the knowledge base
results = client.knowledge.search("how to reset password")
for doc in results:
    print(f"{doc.title}: {doc.content[:100]}...")

# Get all documents
docs = client.knowledge.list()

Users & Identification

# Identify a user (for tracking)
client.identify(
    user_id="user-123",
    email="user@example.com",
    name="John Doe",
    plan="pro",
    metadata={
        "company": "Acme Inc",
        "signup_date": "2024-01-15"
    }
)

# Track custom events
client.track("button_clicked", {
    "button_name": "contact_support",
    "page": "/pricing"
})

Webhooks

from aether_support.webhooks import WebhookHandler

# Verify and parse webhook payloads
handler = WebhookHandler(webhook_secret="your-webhook-secret")

@app.post("/webhooks/aether")
async def handle_webhook(request):
    payload = await request.body()
    signature = request.headers.get("X-Aether-Signature")
    
    event = handler.verify_and_parse(payload, signature)
    
    if event.type == "ticket.created":
        print(f"New ticket: {event.data['ticket_id']}")
    elif event.type == "ticket.replied":
        print(f"Reply on: {event.data['ticket_id']}")
    
    return {"status": "ok"}

Configuration

from aether_support import AetherSupport

client = AetherSupport(
    app_id="your-app-id",
    api_key="your-api-key",
    
    # Optional configuration
    api_url="https://api.aether-support.com",  # Custom API URL
    timeout=30.0,  # Request timeout in seconds
    max_retries=3,  # Retry failed requests
)

Error Handling

from aether_support import AetherSupport
from aether_support.exceptions import (
    AetherError,
    AuthenticationError,
    NotFoundError,
    RateLimitError,
    ValidationError
)

client = AetherSupport(app_id="...", api_key="...")

try:
    ticket = client.tickets.get("invalid-id")
except NotFoundError:
    print("Ticket not found")
except AuthenticationError:
    print("Invalid API key")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after} seconds")
except ValidationError as e:
    print(f"Invalid request: {e.message}")
except AetherError as e:
    print(f"API error: {e}")

Type Hints

The SDK is fully typed for excellent IDE support:

from aether_support import AetherSupport
from aether_support.types import Ticket, Message, User

client = AetherSupport(app_id="...", api_key="...")

# Full type information available
ticket: Ticket = client.tickets.get("ticket-id")
messages: list[Message] = ticket.messages

Framework Integrations

FastAPI

from fastapi import FastAPI, Depends
from aether_support import AetherSupport

app = FastAPI()

def get_aether() -> AetherSupport:
    return AetherSupport(app_id="...", api_key="...")

@app.get("/tickets")
async def list_tickets(aether: AetherSupport = Depends(get_aether)):
    return aether.tickets.list()

Django

# settings.py
AETHER_SUPPORT = {
    "APP_ID": "your-app-id",
    "API_KEY": "your-api-key",
}

# views.py
from django.conf import settings
from aether_support import AetherSupport

client = AetherSupport(**settings.AETHER_SUPPORT)

Flask

from flask import Flask, g
from aether_support import AetherSupport

app = Flask(__name__)

def get_aether():
    if 'aether' not in g:
        g.aether = AetherSupport(app_id="...", api_key="...")
    return g.aether

@app.route("/tickets")
def list_tickets():
    return get_aether().tickets.list()

License

MIT License - see LICENSE for details.

Support

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
1.0.013 Dec 20259

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
aether-support/python-sdk

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 20:55 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:d472d2f5b29a8febe86f7c9b1bc364f71728540468f0479a093f25f589cb1076