rooster

Describe Issue Intake Images

Actually look at what the reporter attached, and say what is in it.

ISS-570. tools/rooster_worker/worker.py is a synchronous poll loop that talks to this API over httpx and holds no database connection of its own -- app.core.model_client's credential resolution needs one (vault first, per CLAUDE.md's "AI model registry"), so the vision call has to happen HERE, in the API process, not in the worker. Same gate as the sibling GET /images above: this is a Rooster-agent-only route, not a UI surface.

describe_screenshot_attachments (app/modules/issues/intake_service.py) does the actual work: fetch the screenshots, call Surface. BUG_INTAKE_VISION through the registry, return the description or None. Never raises past a missing conversation -- a failed vision pass is not a 500, it is {"description": None}, so the worker's own contract ("a screenshot we could not read must leave Rooster saying so, never inventing") holds all the way through this route.

post/api/rooster/issues/intake/{conversation_id}/describe-images

Request

  • Base URL: https://api.pigeonly.com (the document declares no server; this is the origin it was published from)
  • URL: https://api.pigeonly.com/api/rooster/issues/intake/{conversation_id}/describe-images
  • Auth: none declared

Path parameters

conversation_idstring uuid required

Response

Successful Response

object required

Changes

No recorded changes to this operation across all 1 revision of this API.