Skip to main content

Python SDK for Fastn connector authentication

Project description

fastn-auth (Python)

Python SDK for Fastn connector authentication. Provides a simple async interface for initiating OAuth and credential-based connector authentication flows.

Installation

pip install fastn-auth

Quick Start

import asyncio
from fastn_auth import FastnAuth

async def main():
    # Create a client
    client = FastnAuth(
        space_id="your-space-id",
        api_key="your-api-key",  # or use auth_token instead
        base_url="https://live.fastn.ai/api",  # optional
    )

    # Initialize an authentication session
    session = await client.initialize(
        connector_id="google-sheets",
        org_id="org-id",      # optional
        tenant_id="tenant-id" # optional
    )

    # Redirect the user to complete OAuth
    print(f"Redirect user to: {session.redirect_url}")

    # Wait for the user to complete authentication
    result = await session.wait_for_completion()

    print("Authentication complete!", result.credentials)

asyncio.run(main())

API Reference

FastnAuth

The main client class for initializing authentication flows.

Constructor

FastnAuth(
    space_id: str,
    api_key: str | None = None,
    auth_token: str | None = None,
    base_url: str | None = None,
)
Parameter Type Required Description
space_id str Yes The space/workspace ID
api_key str One of api_key or auth_token API key — sent as x-fastn-api-key header
auth_token str One of api_key or auth_token Bearer token — sent as Authorization: Bearer {token} header
base_url str No Base URL for the Fastn API (defaults to https://live.fastn.ai/api)

Methods

async initialize(...) -> AuthSession

Initialize a connector authentication flow.

async def initialize(
    self,
    connector_id: str,
    org_id: str | None = None,
    tenant_id: str | None = None,
    connection_id: str | None = None,
) -> AuthSession
Parameter Type Required Description
connector_id str Yes The connector ID (e.g., "google-sheets", "salesforce")
org_id str No Organization ID (defaults to "community")
tenant_id str No Tenant ID
connection_id str No Connection instance ID
async get_credentials(options: GetCredentialsOptions) -> Credentials

Fetch credentials for an already-authenticated connector without starting a new OAuth flow.

from fastn_auth import FastnAuth, GetCredentialsOptions

credentials = await client.get_credentials(
    GetCredentialsOptions(
        connector_id="google-sheets",
        org_id="org-id",        # optional
        tenant_id="tenant-id",  # optional
        connection_id="conn-id" # optional
    )
)
Parameter Type Required Description
connector_id str Yes The connector ID
org_id str No Organization ID (defaults to "community")
tenant_id str No Tenant ID
connection_id str No Connection instance ID

AuthSession

Represents an active authentication session returned by client.initialize().

Properties

Property Type Description
id str Unique identifier for this session
state_key str State key for the OAuth flow
redirect_url str URL to redirect the user to for OAuth authorization

Methods

async wait_for_completion(options: PollOptions | None = None) -> AuthResult

Poll for the authentication status until it reaches ACTIVE or FAILED, or until the timeout is exceeded.

@dataclass
class PollOptions:
    interval: float = 2.0   # Polling interval in seconds
    timeout: float = 300.0  # Maximum wait time in seconds (5 minutes)

Returns an AuthResult object:

@dataclass
class AuthResult:
    status: AuthStatus
    credentials: Credentials | None = None
    error_message: str | None = None
async get_status() -> StatusResponse

Get the current status of the authentication session.

@dataclass
class StatusResponse:
    status: AuthStatus
    error_message: str | None = None
async get_credentials() -> Credentials

Fetch the credentials for the authenticated connector after the OAuth flow completes.

@dataclass
class Credentials:
    access_token: str | None = None
    refresh_token: str | None = None
    expires_at: str | None = None
    extra: dict  # connector-specific fields

Error Handling

The SDK provides custom exception classes for different failure scenarios:

from fastn_auth import (
    FastnAuthError,
    TimeoutError,
    AuthenticationError,
    NetworkError,
    InvalidResponseError,
)

try:
    result = await session.wait_for_completion()
except TimeoutError:
    print("Authentication timed out")
except AuthenticationError as e:
    print(f"Authentication failed: {e.message}")
except NetworkError as e:
    print(f"Network error: {e.message}, status: {e.status_code}")
except InvalidResponseError as e:
    print(f"Unexpected API response: {e.message}")
Error Class Code Description
FastnAuthError Base class for all SDK errors
TimeoutError TIMEOUT wait_for_completion() exceeded the timeout
AuthenticationError AUTH_FAILED The authentication flow returned FAILED
NetworkError NETWORK_ERROR HTTP request failed; includes status_code
InvalidResponseError INVALID_RESPONSE API response is missing required fields

Status Lifecycle

Status Description
INACTIVE OAuth initiated, awaiting user authorization
ACTIVE Connector successfully authenticated
FAILED Authentication failed

Requirements

  • Python 3.9 or higher
  • aiohttp >= 3.8.0

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

fastn_auth-1.0.4.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

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

fastn_auth-1.0.4-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file fastn_auth-1.0.4.tar.gz.

File metadata

  • Download URL: fastn_auth-1.0.4.tar.gz
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for fastn_auth-1.0.4.tar.gz
Algorithm Hash digest
SHA256 ff302530c3ff2932886251566c9f034d3a312d17b47467af46a1808748e59c2f
MD5 d81b908caaf6a768a1858d626000b30b
BLAKE2b-256 dfd7d73edaeaf6a325d0672876b7d29895c26068241daa36c123e83e6b476306

See more details on using hashes here.

File details

Details for the file fastn_auth-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: fastn_auth-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for fastn_auth-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b687e67d111ad6edadd9490600c63ebdace954755ee6bfeb1f9d35a2ea30c6bb
MD5 438f3e61773c0addac6e88dbdeeedf4e
BLAKE2b-256 25ec82aeb7baa4e0b245716ce9bdc5427bfb90ae9514e980167081ed465dadbb

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