Developer

API Reference

REST API documentation for DineSync — base path /api/v1

Full, always-current reference

Every endpoint in this API — request bodies, query params, response schemas, and error codes — is documented in an interactive Swagger UI generated directly from the server's route annotations, so it can never drift from what is deployed. The table below is a curated sample, not the full list.

Open Swagger UI

Authentication

Most API endpoints require authentication via a JWT access token. Include it in the Authorization header. Some endpoints additionally require a specific role (student / staff / admin) or a granular staff permission — these are called out per-endpoint below and in the Swagger UI.

Authorization: Bearer <your-jwt-access-token>

Sample Endpoints

GET/api/v1/menus/items
BearerList menu items (paginated, searchable)
GET/api/v1/menus/daily
BearerGet daily menus for a mess/date range
POST/api/v1/ratings
BearerSubmit a meal rating
GET/api/v1/ratings/stats
BearerGet aggregate rating stats for a mess
POST/api/v1/complaints
BearerFile a complaint (optionally anonymous)
GET/api/v1/complaints
Bearer + roleList complaints — students see only their own; staff/admin see all (requires manage_complaints permission)
GET/api/v1/rush-status
BearerGet current rush/crowd level and open/closed status for a mess
GET/api/v1/rush-status/history
BearerGet recent rush-status history for a mess
PUT/api/v1/rush-status
Bearer + roleUpdate rush status (staff/admin only)
GET/api/v1/polls
BearerGet active/past polls for a mess
POST/api/v1/polls/:id/vote
BearerCast a vote on a poll option
GET/api/v1/reports/summary
Bearer + roleCross-metric summary report for a mess (staff/admin)

For the complete set of endpoints — including menu items, complaints, ratings, polls, RSVPs, skip meals, payments, leaves, notifications, and mess administration — see the Swagger UI.

Rate Limiting

API requests are rate-limited per endpoint (a general API-wide limiter, plus stricter limits on write/auth-sensitive routes). Exceeding a limit returns a429 Too Many Requestsresponse.

© 2026 DineSync. All rights reserved.
API Reference | DineSync | DineSync