Skip to main content

Backlot

tests python License: MIT Discord X

Serve your own enterprise playground

Backlot is a local emulator for enterprise SaaS APIs. Test your Slack, Gmail, Google Drive and the rest of your integrations.

No account. No token. No network.

Why would you need that? Because right now:

  • You can't log in yet. So you create a workspace, register an app, pick OAuth scopes and wait on an admin who has never heard of you. Zero API calls so far.
  • Then you do it again. Gmail. Jira. Google Drive. Every source starts over from nothing.
  • So you mock it, and the test passes. It passes because you wrote both sides of it. It always passes.

Backlot is the side you didn't write. It behaves exactly like the real one.

Quickstart

pip install backlot
backlot import --bundled   # a corpus ships with the package; nothing to fetch or write
backlot serve              # http://127.0.0.1:8000

Or run one programmatically on a free port:

import backlot
from slack_sdk import WebClient                        # pip install slack_sdk

with backlot.serve() as s:                             # no arguments: a tiny hello-world corpus
    slack = WebClient(token=s.token, base_url=f"{s.base_url}/slack/api/")
    print(slack.conversations_list()["channels"])

The only change from talking to the live service is the base URL.

What it serves

Every source on one local port, each behind the path prefix its own SDK expects.

Service Base path
Slack /slack/api
Gmail /gmail/v1
Google Drive (Docs, Sheets, Slides) /drive/v3 /docs/v1 /sheets/v4 /slides/v1
GitHub /github
Jira /atlassian/rest/api
Confluence /atlassian/wiki/rest/api
Notion /notion/v1
Linear /linear/graphql
HubSpot /hubspot
Fireflies /fireflies/graphql
Amazon S3 /s3

Responses carry the shapes, pagination, auth and per-document ACLs the real ones have, over a corpus you supply. Every user in the corpus gets a token, so you can assert that one caller's documents never reach another.

Documentation

Every source Backlot serves, and every endpoint of each supported-sources.md
Building a corpus, and public datasets corpus.md
Auth schemes and tokens auth.md
Every BACKLOT_* setting configuration.md

One runnable script per service, driving the vendor's own SDK, plus MCP, LlamaIndex and mirage walkthroughs: examples/.

Trademarks

Backlot is an independent project, not affiliated with, endorsed by, or sponsored by any of the vendors whose APIs it imitates. Slack, Gmail, Google Drive, Google Docs, Google Sheets, Google Slides, GitHub, Jira, Confluence, Notion, Amazon S3, HubSpot, Linear and Fireflies are trademarks of their respective owners, named here only to identify the APIs Backlot serves a compatible subset of. Backlot ships no vendor logo, wordmark or brand asset.

License

MIT

Metadata

Release files for backlot 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for backlot 0.0.1
File Size Uploaded
backlot-0.0.1.tar.gz 916.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for backlot 0.0.1
File Interpreter ABI Platform
backlot-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 1.4 MB

Release files / backlot-0.0.1.tar.gz

Download URL backlot-0.0.1.tar.gz
Size 916.5 kB
Tags Source
SHA-256 checksum
How to use checksums
84fd087def26d7d24649454174beb27cf68f710a21e16ab8e91c1809bb92d009
BLAKE2b-256 checksum
How to use checksums
986ff6508be568c90f8ddecd14cff666558051713fb9d3eb9b93106219bdbb43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / backlot-0.0.1-py3-none-any.whl

Download URL backlot-0.0.1-py3-none-any.whl
Size 450.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3b803ce600206b767fb13d82bee55de2f9d75f404bff5a0b02b9b1170756e00a
BLAKE2b-256 checksum
How to use checksums
30357ab19ee1dcbe97549171b5d2efed258e01d422805d2743591eaef2382190
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release history Release notifications | RSS feed

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

This release

0.0.1 This release

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page