API job pack for Tessera: parse curl/HTTP traces into a validated, secret-redacted API surface map.
Project description
tessera-api
Turn messy curl commands and HTTP traces into a validated, secret-redacted API surface map.
tessera-api reads .curl / .sh files containing curl commands, parses each into a canonical ApiRequest, redacts every secret at parse time, profiles the API surface, and emits a catalog plus reports — including a redactions audit.
Scope (v0.1)
This pack parses and canonicalizes. It does not execute HTTP requests. Live calling, batch execution, and streaming response capture are runtime concerns with network side effects and are intentionally deferred to a later version. v0.1 is the offline, side-effect-free "what does this API surface look like, and does it leak secrets" pass.
Secret safety
Redaction happens before a value is ever written into an ApiRequest. The canonical records and every artifact hold only masked previews (a couple of leading characters plus a length, never the tail). Secrets are detected by:
- known secret header names (
Authorization,X-Api-Key,Cookie, ...) - known secret query parameter names (
api_key,token,access_token,signature, ...) -u user:passbasic-auth flags- secret-ish keys inside request bodies (
password,client_secret,token, ...) - secret shape (v0.2) — values that look like secrets regardless of field name: AWS keys (
AKIA…), GitHub tokens (ghp_…), Slack/Stripe/Google/OpenAI keys, JWTs, private-key blocks, and high-entropy token strings. This catches secrets hiding in custom auth headers, odd query params, or body fields, and raisessecret_in_nonstandard_locationso you know a credential is somewhere unexpected. UUIDs and other common identifiers are excluded to avoid false positives.
Compile an API pack
tessera api compile --input examples/api/ --output ./out/api_pack
Artifacts written:
index.jsonl canonical, redacted ApiRequest rows
index.md human-readable catalog (method, host, path, auth, redactions)
validation_report.md hygiene findings
coverage_report.md method / host / auth-kind distribution
redactions_report.md every redaction made, with masked previews (audit trail)
Validation rules
Per-request:
insecure_scheme— useshttp://(cleartext)missing_host— no host could be parsedsecret_in_url_query— a secret was found in the URL query (URLs get logged; prefer a header)no_auth_detected— no auth credential was found
Cross-request:
duplicate_request— identical method + url + body seen more than oncemultiple_hosts— requests span more than one host (visibility, not an error)
Plus parse_error for any curl command that cannot be tokenized or has no URL.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tesserakit_api-0.3.1.tar.gz.
File metadata
- Download URL: tesserakit_api-0.3.1.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
555ba5be799ceb232e28ed44bc17bc295a71508e8bec7c407c47da798a429d2e
|
|
| MD5 |
7d9cba322996626af93c389ea006adff
|
|
| BLAKE2b-256 |
adf827b6bd354ebedd499e29e8b538475a2a380b47a6eb2f913723c02be3c1a9
|
File details
Details for the file tesserakit_api-0.3.1-py3-none-any.whl.
File metadata
- Download URL: tesserakit_api-0.3.1-py3-none-any.whl
- Upload date:
- Size: 14.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6445f84d468c90c0b8fc4696ed7fcc7911696ebacafcac29f378c68f3e7118aa
|
|
| MD5 |
701f1e94ece7249089ed3597c1ccfb1f
|
|
| BLAKE2b-256 |
fad4279dcfdb2a4715f449fe03e2395114e450654333b580c2388e253322ffe3
|