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.5.0.tar.gz (28.1 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.5.0-py3-none-any.whl (32.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: somewhere_tech-0.5.0.tar.gz
  • Upload date:
  • Size: 28.1 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.5.0.tar.gz
Algorithm Hash digest
SHA256 43725d233334036f5f09f2cbaf91a2031cdcd0a243adcdd373adb24c01c615df
MD5 a298dc006c1fa50ad05b9b07d0d1ae34
BLAKE2b-256 e6d1a215d04642cf0bf79180ca72733385799b4d2cc6804e2dd4d91fe3f70647

See more details on using hashes here.

File details

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

File metadata

  • Download URL: somewhere_tech-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 32.7 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.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a961276c501d91b6900940ce2db7452c5abfde95ff40bac1470ef5b91e8eaad3
MD5 f3e0cc268f83796d7a53b863d5476419
BLAKE2b-256 8f27954124cabf37b28964fe4a050757098c24da8eb631adffc90a0daf869568

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