{"endpoints":[{"description":"This help document","method":"GET","params":null,"path":"/"},{"description":"This help document","method":"GET","params":null,"path":"/help"},{"description":"Health check with uptime and database status","method":"GET","params":null,"path":"/health"},{"description":"List quotes, see list_endpoint_rules above for all parameter combinations","method":"GET","params":{"date_from":"Filter: date >= YYYY-MM-DD","date_to":"Filter: date <= YYYY-MM-DD","limit":"Pagination page size","n":"Most recent N entries (overrides limit/offset)","offset":"Pagination offset (default 0)","q":"Text search (ILIKE on quote content)"},"path":"/quotes"},{"description":"Random quotes","method":"GET","params":{"n":"Number of random entries (default 1)"},"path":"/quotes/random"},{"description":"Single quote by ID (404 if not found)","method":"GET","params":null,"path":"/quotes/{id}"},{"description":"List aninsi_names, see list_endpoint_rules above for all parameter combinations","method":"GET","params":{"date_from":"Filter: date >= YYYY-MM-DD","date_to":"Filter: date <= YYYY-MM-DD","limit":"Pagination page size","n":"Most recent N entries (overrides limit/offset)","offset":"Pagination offset (default 0)","q":"Text search (ILIKE on firstname, middlenames, surname)"},"path":"/names"},{"description":"Random aninsi_names","method":"GET","params":{"n":"Number of random entries (default 1)"},"path":"/names/random"},{"description":"Single aninsi_name by ID (404 if not found)","method":"GET","params":null,"path":"/names/{id}"},{"description":"List block_quotes, see list_endpoint_rules above for all parameter combinations","method":"GET","params":{"date_from":"Filter: date >= YYYY-MM-DD","date_to":"Filter: date <= YYYY-MM-DD","limit":"Pagination page size","n":"Most recent N entries (overrides limit/offset)","offset":"Pagination offset (default 0)","q":"Text search (ILIKE on blockquote content)"},"path":"/blockquotes"},{"description":"Random block_quotes","method":"GET","params":{"n":"Number of random entries (default 1)"},"path":"/blockquotes/random"},{"description":"Single block_quote by ID (404 if not found)","method":"GET","params":null,"path":"/blockquotes/{id}"},{"description":"Cross-table text search. Unlike /quotes?q= etc., this returns results from a single table determined by the type parameter.","method":"GET","params":{"q":"Search term (required)","type":"Table to search: quotes (default), names/aninsi_names, blockquotes/block_quotes"},"path":"/search"}],"list_endpoint_rules":{"applies_to":["/quotes","/names","/blockquotes"],"examples":["/quotes","/quotes?n=5","/quotes?limit=10&offset=20","/quotes?q=hello","/quotes?date_from=2024-01-01","/quotes?date_to=2024-06-30","/quotes?date_from=2024-01-01&date_to=2024-06-30","/quotes?q=hello&date_from=2024-01-01&n=5","/quotes?q=hello&date_from=2024-01-01&limit=10&offset=20","/names?q=Alice","/names?date_from=2024-01-01&n=10","/blockquotes?q=search&date_from=2023-01-01&date_to=2023-12-31"],"filtering":{"date_from":"Exclude rows with date before this value (date >= value). Value format: YYYY-MM-DD. Can be combined with q, date_to.","date_to":"Exclude rows with date after this value (date <= value). Value format: YYYY-MM-DD. Can be combined with q, date_from.","q":"Text search via ILIKE on the content column(s). Case-insensitive substring match. Can be combined with any other parameter."},"ordering":"Results are always ordered by id DESC (newest first).","param_precedence":"n takes precedence over limit/offset. If none of n, limit, or offset are given, all matching rows are returned.","result_control":{"limit":"Page size for explicit pagination. Requires offset (defaults to 0 if not given). Ignored if n is present.","n":"Return at most this many entries (most recent first). If present, limit and offset are ignored.","offset":"Number of rows to skip before returning results. Only meaningful with limit."}},"name":"Quotes API","query_string_usage":{"optional_params":"Unless marked (required), all parameters are optional. Omitting them skips that filter.","param_values":"All parameter values are strings. Booleans: true/false. Dates: YYYY-MM-DD.","syntax":"Append ?param=value to the URL. Combine multiple with &: /path?param1=value1&param2=value2"},"version":"0.1.0"}