dograh/api/routes
Amaan Javed 9471041b8b
fix(api): validate pagination bounds on run-list endpoints (#553) (#554)
* fix(api): validate pagination bounds on run-list endpoints (#553)

GET /workflow/{id}/runs and GET /campaign/{id}/runs declared bare
`page: int = 1` / `limit: int = 50` params, then computed
`total_pages = (total_count + limit - 1) // limit`. A `?limit=0` raised an
unhandled ZeroDivisionError (HTTP 500), and negative limit/page produced a
negative offset and nonsensical pagination.

Add `Query(ge=1, le=100)` / `Query(1, ge=1)` bounds to both endpoints,
matching the sibling list endpoints (/usage/runs and the superuser runs
endpoint) that already validate these. Out-of-range values now return 422.

Adds a regression test covering limit=0/-5/101 and page=0 on both endpoints.

Fixes #553

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* chore(docs): regenerate openapi.json for run-list pagination bounds (#553)

The added Query(ge/le) bounds on the workflow-run and campaign-run list
endpoints changed the OpenAPI schema; regenerate the committed spec via
`python -m scripts.dump_docs_openapi` so the drift-check passes. Only the
limit/page parameter schemas for those two endpoints change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Abhishek Kumar <abhishek@a6k.me>
2026-07-18 16:29:28 +05:30
..
__init__.py Initial Commit 🚀 🚀 2025-09-09 14:37:32 +05:30
agent_stream.py fix: scope workflow run to org rather than user 2026-07-10 16:52:43 +05:30
auth.py feat(auth): gate OSS signup behind ENABLE_SIGNUP flag (#514) 2026-07-13 14:08:25 +05:30
campaign.py fix(api): validate pagination bounds on run-list endpoints (#553) (#554) 2026-07-18 16:29:28 +05:30
credentials.py feat: refactor node spec and add mcp tools (#244) 2026-04-21 07:56:16 +05:30
folder.py feat: add google stt and tts. add folders to organize agents 2026-05-22 14:36:50 +05:30
knowledge_base.py fix: fix org scoped access for resources (#517) 2026-07-09 23:04:33 +05:30
main.py feat(auth): gate OSS signup behind ENABLE_SIGNUP flag (#514) 2026-07-13 14:08:25 +05:30
node_types.py feat: refactor node spec and add mcp tools (#244) 2026-04-21 07:56:16 +05:30
organization.py feat: show model pricing in configuration UI (#528) 2026-07-13 14:20:24 +05:30
organization_usage.py fix: fix org scoped access for resources (#517) 2026-07-09 23:04:33 +05:30
public_agent.py fix: scope workflow run to org rather than user 2026-07-10 16:52:43 +05:30
public_download.py feat: persist split user and bot audio 2026-06-16 15:19:49 +05:30
public_embed.py fix: fix org scoped access for resources (#517) 2026-07-09 23:04:33 +05:30
reports.py Initial Commit 🚀 🚀 2025-09-09 14:37:32 +05:30
s3_signed_url.py feat: persist split user and bot audio 2026-06-16 15:19:49 +05:30
service_keys.py Initial Commit 🚀 🚀 2025-09-09 14:37:32 +05:30
superuser.py fix: fix superadmin impersonation 2026-07-11 15:51:36 +05:30
telephony.py fix: scope workflow run to org rather than user 2026-07-10 16:52:43 +05:30
tool.py feat: add tool test panel for HTTP API tools (#547) 2026-07-18 16:00:50 +05:30
turn_credentials.py feat: add coturn configurations (#143) 2026-02-03 13:52:50 +05:30
user.py fix: fix org scoped access for resources (#517) 2026-07-09 23:04:33 +05:30
webrtc_signaling.py fix: fix org scoped access for resources (#517) 2026-07-09 23:04:33 +05:30
workflow.py fix(api): validate pagination bounds on run-list endpoints (#553) (#554) 2026-07-18 16:29:28 +05:30
workflow_embed.py feat: add posthog events (#231) 2026-04-10 17:52:21 +05:30
workflow_recording.py feat: refactor node spec and add mcp tools (#244) 2026-04-21 07:56:16 +05:30
workflow_text_chat.py fix: fix org scoped access for resources (#517) 2026-07-09 23:04:33 +05:30