Skip to main content

Cross-platform OAuth integrations SDK for NoSpoon applications

Project description

NoSpoon Integrations - Python SDK

Cross-platform OAuth integrations SDK for NoSpoon applications.

Installation

pip install nospoon-integrations

# With Supabase support
pip install nospoon-integrations[supabase]

Quick Start

The IntegrationClient constructor takes storage plus one keyword argument per provider you want to enable (each with its provider-specific config).

import os
from nospoon_integrations import IntegrationClient, ProviderConfig
from nospoon_integrations.storage import SupabaseTokenStorage

# Initialize storage
storage = SupabaseTokenStorage(
    supabase_url=os.environ["SUPABASE_URL"],
    supabase_key=os.environ["SUPABASE_SERVICE_ROLE_KEY"],
)

# Initialize client with the providers you need (flat keyword arguments)
integrations = IntegrationClient(
    storage=storage,
    google=ProviderConfig(
        client_id=os.environ["GOOGLE_CLIENT_ID"],
        client_secret=os.environ["GOOGLE_CLIENT_SECRET"],
        scopes=["https://www.googleapis.com/auth/gmail.compose"],
    ),
    hubspot=ProviderConfig(
        client_id=os.environ["HUBSPOT_CLIENT_ID"],
        client_secret=os.environ["HUBSPOT_CLIENT_SECRET"],
    ),
)

# OAuth providers: redirect the user, then handle the callback
auth_url = integrations.google.get_auth_url("https://myapp.com/callback")
status = await integrations.google.get_connection_status(user_id)

Credential providers (WordPress, Sanity)

WordPress and Sanity authenticate with a user-supplied credential rather than OAuth. Enable them with their config, then call connect() with the credential — it is verified live and only stored on success.

from nospoon_integrations import IntegrationClient
from nospoon_integrations.providers import SanityConfig, SanityConnectInput
from nospoon_integrations.storage import MemoryTokenStorage

integrations = IntegrationClient(storage=MemoryTokenStorage(), sanity=SanityConfig())

# Verify + store the connection (raises CredentialVerificationError if invalid)
await integrations.sanity.connect(
    user_id,
    SanityConnectInput(project_id="abc123", dataset="production", token=os.environ["SANITY_TOKEN"]),
)

# Post a blog entry as a draft (HTML body is converted to Portable Text)
result = await integrations.sanity.create_post(
    user_id, title="Hello", body="<p>First post</p>", publish=True
)

Providers

  • Google — Gmail API, OAuth
  • HubSpot — CRM contacts, OAuth
  • Facebook — Graph API, Pages
  • LinkedIn — Posts, OAuth
  • X (Twitter) — Tweets, OAuth 2.0 + PKCE
  • WordPress — self-hosted REST API, credential-based (Application Passwords)
  • Sanity — Actions/Assets/Query APIs, credential-based (robot token); includes a dependency-free html_to_portable_text() converter

Documentation

See the main documentation for full usage details.

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

nospoon_integrations-0.15.0.tar.gz (58.6 kB view details)

Uploaded Source

Built Distribution

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

nospoon_integrations-0.15.0-py3-none-any.whl (47.9 kB view details)

Uploaded Python 3

File details

Details for the file nospoon_integrations-0.15.0.tar.gz.

File metadata

  • Download URL: nospoon_integrations-0.15.0.tar.gz
  • Upload date:
  • Size: 58.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nospoon_integrations-0.15.0.tar.gz
Algorithm Hash digest
SHA256 fe5ea2d4daf652e73b88f0692bb55f0a3904b0b4f7cbf193a296844b3374c1ce
MD5 628ffc177d755c5845fc8ffa17087043
BLAKE2b-256 5a26879dcd90b4fc67e09b2feaff8e6c858773ef96437f6481333a9bcbd36ab1

See more details on using hashes here.

Provenance

The following attestation bundles were made for nospoon_integrations-0.15.0.tar.gz:

Publisher: publish-pypi.yml on nospoon-ai/nospoon-integrations

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

File details

Details for the file nospoon_integrations-0.15.0-py3-none-any.whl.

File metadata

File hashes

Hashes for nospoon_integrations-0.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e6b7e9a2fe6d02643eb660feb41d3b6f6e2474fb5572aa2540ac8de56b4360bf
MD5 3a75bf3e9c8ddc0560db1db1f22527e3
BLAKE2b-256 d823d35f080d14d510f07e7f0e7145f941d22849491eb113c63228dc5b443a5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for nospoon_integrations-0.15.0-py3-none-any.whl:

Publisher: publish-pypi.yml on nospoon-ai/nospoon-integrations

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