This document describes how to create, store, and rotate credentials for the fetchers in fetchers/<integration>/.
All fetchers in this folder require the following environment variables.
| Variable | Required | Description | Example |
|---|---|---|---|
VAR_NAME |
Yes | What it is used for | https://example.example |
script_one.pyscript_two.py
One row per fetcher script. This table is used to scope credentials to least-privilege access.
| Fetcher | Endpoint(s) | Method(s) | Notes |
|---|---|---|---|
script_one.py |
/api/v1/resource |
GET | Pagination via limit/cursor |
- Role: Viewer / Read-only (or minimum equivalent)
- Scope: Account / Organization / Project (minimum required)
- Notes: Call out anything that forces broader permissions than desired
- Log in to the vendor console.
- Navigate to <Menu → Submenu → ...>.
- Create a service user/app (recommended name:
paramify-evidence-fetchers). - Assign the role/scope above.
- Generate the credential and store it in your secrets manager.
- Navigate to <Menu → ...>.
- Regenerate/revoke and create a new credential (follow vendor guidance).
- Update the secret wherever it is stored (e.g., AWS Secrets Manager,
.env). - Verify with a quick smoke test:
# Prefer a single, fast, read-only request.
curl -s -H "Authorization: Bearer <token>" \
"https://example.example/api/v1/health" | python3 -m json.tool | head -20- 401/403: likely missing scope/role; confirm permissions for the endpoints listed above
- Base URL issues: confirm correct tenant/region and whether a trailing slash is allowed
- Rate limits: note recommended backoff / paging strategy if the API is throttling
Integration-specific quirks, such as:
- Multiple auth schemes across endpoints (but same underlying token value)
- Token expiration limits (and how to track/rotate before expiry)
- IP allowlisting requirements
- Links to vendor docs