Skip to main content

Official Python SDK for the somewhere.tech platform API. Supabase-compatible interface.

Project description

somewhere — Python SDK

Official Python SDK for the somewhere.tech platform API. Thin wrapper around the REST API at https://api.somewhere.tech/v1.

Install

pip install somewhere

Quick start

from somewhere import Somewhere, SomewhereError

sw = Somewhere(key="smt_...")  # or token="eyJ..." for app-user mode

# Create a project
project = sw.projects.create(name="Booking App")

# Run a migration
sw.db.migrate(
    """
    CREATE TABLE bookings (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        slot TEXT NOT NULL,
        created_at TEXT DEFAULT (datetime('now'))
    );
    """,
    project["id"],
)

# Insert + query
sw.db.query(
    "INSERT INTO bookings (name, slot) VALUES (?, ?)",
    ["Alice", "2026-05-01 18:00"],
    project["id"],
)
rows = sw.db.query("SELECT * FROM bookings", [], project["id"])

# Deploy a static site
sw.deploy(
    files={"index.html": "<h1>Book a table</h1>"},
    project_id=project["id"],
)

print(f"Live at https://{project['subdomain']}.somewhere.tech")

Auth modes

Developer mode — full access, server-side only:

sw = Somewhere(key="smt_...")

App-user mode — app JWT, browser-safe operations only (db, storage, fs, auth.me):

sw = Somewhere(token="eyJ...", project_id="booking-app")
me = sw.auth.me()
rows = sw.db.query("SELECT * FROM bookings WHERE email = ?", [me["user"]["email"]])

Default project:

sw = Somewhere(key="smt_...", project_id="booking-app")
sw.db.query("SELECT * FROM bookings")  # uses 'booking-app'

Error handling

Every API error raises a typed SomewhereError:

from somewhere import SomewhereError

try:
    sw.email.send(to="user@example.com", subject="Hi", text="Welcome")
except SomewhereError as err:
    print(err.code)           # "QUOTA_EXCEEDED"
    print(err.message)        # human-readable
    print(err.status_code)    # 429
    print(err.retry)          # True if client should retry
    print(err.retry_after_ms) # ms to wait

Method reference

Namespace Methods
sw.projects create, list, get, delete, undeploy, archive, unarchive, rename, deploys
sw.deploy sw.deploy(files=..., functions=..., project_id=...), sw.deploy.status(project_id)
sw.promote sw.promote(project_id), sw.promote.rollback(project_id)
sw.db query, migrate, tables, schema
sw.storage put, get, delete, list
sw.fs write, read, delete, move, copy, stat, versions, restore
sw.auth signup, login, logout, me, forgot, reset, users, verify_email, request_verification, delete_account, update_me
sw.email send
sw.ai complete, embed, image, tts, transcribe
sw.jobs create, status, list, cancel, progress
sw.cron create, list, update, delete
sw.queue push
sw.logs write, read
sw.env set, list, delete
sw.domains add, verify, list, delete
sw.preview invite, revoke, viewers
sw.feedback submit, list
sw.billing status, checkout, portal
sw.usage get, summary

* = stub for not-yet-shipped endpoints; calling returns UNSUPPORTED_FEATURE.

Test

SMT_KEY=smt_... python tests/test_basic.py

License

MIT © somewhere.tech

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

somewhere_tech-0.4.0.tar.gz (21.9 kB view details)

Uploaded Source

Built Distribution

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

somewhere_tech-0.4.0-py3-none-any.whl (26.4 kB view details)

Uploaded Python 3

File details

Details for the file somewhere_tech-0.4.0.tar.gz.

File metadata

  • Download URL: somewhere_tech-0.4.0.tar.gz
  • Upload date:
  • Size: 21.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for somewhere_tech-0.4.0.tar.gz
Algorithm Hash digest
SHA256 163d823113309439035a420167af4ffb201fe83e92f4019445e4491634ba1a09
MD5 537213b71b07076b2ee5bd9428b19f72
BLAKE2b-256 5d3abca37be66fb423d51a2a4ff77a16af220aba29b3a2bf4a18f2802507a611

See more details on using hashes here.

File details

Details for the file somewhere_tech-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: somewhere_tech-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 26.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for somewhere_tech-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8ee601f3b04eac83989548db50deb9ea94adf0ede0b39c6c1442f3471e5838fc
MD5 c93ea856f2c097eba92717c54245f6dd
BLAKE2b-256 64bc6197d0317147dc79cf953bf67135e8786758155872a7da3a3e1c1e594e98

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