Message contracts
Use the queue contract explorer for the six queues published by core: schemas, required fields and placeholder examples. The maintained source is core's AsyncAPI spec; this page describes consumers, queue ownership and worker-only messages.
waiver_actions also carries INJURY_STATUS_CHANGE alerts from player sync. Those use Sleeper player IDs and have no tracking or trace context. API claims use ESPN player IDs.
Which queues exist?
| Queue | Publisher | Consumer | Declared by | KEDA trigger |
|---|---|---|---|---|
lineup_updates | Core /v1/trigger/lineup | Lineup | Broker | Yes |
waiver_actions | Core /v1/trigger/waiver, player sync | Waiver sniper | Broker | Yes |
draft_targets | Core /v1/trigger/draft-pick | Draft clicker | Broker | Yes |
trade_evaluations | None scheduled | Trade evaluation | Worker | Yes |
trade_negotiations | Core trade inbox service | Trade negotiation | Worker | Yes |
trade_proposals | None | Trade proposal | Worker | No |
trade_submissions | Core trade offer service | Trade builder | Worker | Yes |
trade_responses | Core trade inbox service | Trade response | Worker | Yes |
llm_requests | The worker (requestLlmAsync) | Async LLM | Worker | Yes |
"Broker" queues are declared by the broker's definitions and policy. The worker only checks that they exist. "Worker" queues are declared durable by whoever connects first.
How are deliveries handled?
Worker processing and result reporting are described in How bots run. Core trigger messages arrive through a durable outbox; trade publications use durable claims and require reconciliation when delivery is uncertain. See Core delivery, idempotency and retries.
trade_evaluations
| Field | Type | Required | Notes |
|---|---|---|---|
incoming_player_ids | string[] | Yes | Non-empty. Core's internal ids. |
outgoing_player_ids | string[] | Yes | Non-empty. No id on both sides. |
season, week | integer | Yes | |
tracking_id | string | No |
trade_proposals
| Field | Type | Required | Notes |
|---|---|---|---|
season | integer | Yes | 2000 or later. |
week | integer | Yes | 1 to 18. |
exclude_team_ids | string[] | No | ESPN team ids. |
tracking_id | string | No |
Nothing publishes here and no trigger wakes a worker for it. Use the trade scan CronJob.
llm_requests
| Field | Type | Required | Notes |
|---|---|---|---|
request_id | string | Yes | UUID matching the llm_async_requests row. |
prompt | string | Yes | |
opts | object | No | Passed to completeWithFallback, for example systemPrompt and callSite. |
Not queues
Two bots take no queue message.
| Job | Input |
|---|---|
| Trade inbox | CLI flags. |
| Rumor digest | Database rows. |
Draft sync and the draft clicker also talk over Redis. See Draft sync for those keys.