Backlot
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
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)
| File | Size | Uploaded | |
|---|---|---|---|
| backlot-0.0.1.tar.gz | 916.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|