The Stats API is written in Python and is built on FastAPI and provides endpoints that can be used to query guest, host, location, panelist, scorekeeper, and show data from a copy of the Wait Wait Don't Tell Me! Stats database.
Please note that version 1.0 of the Stats API has now been deprecated.
- Python 3.12 or newer
- MySQL Server 8.0 or newer (or another MySQL Server distribution based on MySQL Server 8.0 or newer) or MariaDB Server 11.8 or newer (Provisional)
Note: Provisional support for MariaDB Server is only available starting with version 2.19.0 of the application. Older versions of MariaDB Server are not supported.
Stats API v2.0 not only brings a significant change on web frameworks, migrating from Flask to FastAPI, but also breaks compatibility with v1.0 and in terms of API documentation.
For additional details on the breaking changes that the new version brings, refer to the API-CHANGES.md document. The document details the new API response object format, changes in API endpoints, and migrating to OpenAPI-based documentation.
The application makes significant use of Optional, Union, and Tuple types in the properties for the various response models. This is a necessity due to the way objects are built and returned from wwdtm. Unfortunately, OpenAPI 3.0, the version of the specification that FastAPI supports, does not provide analogs for those types in its specification.
This issue doesn't come up when querying the API through Swagger UI or directly using Postman; but, if you've imported the generated OpenAPI JSON into Postman, then run queries and/or tests, it will result in warnings and/or errors being reported about type mismatches (i.e.: returns null instead of a string).
Refer to INSTALLING.md for information on how to set up an instance of this web application that can be served through Gunicorn and NGINX.
For changelogs, refer to CHANGELOG.md.
If you would like contribute to this project, please make sure to review both the Code of Conduct and the Contributing documents in this repository.
Please note that this project does not accept pull requests or bugfixes that include code that has been partially or wholly generated using AI.
If you would like to help sponsor the continued development and maintenance of the Wait Wait Stats project, please consider sponsoring me on GitHub.
This web application is licensed under the terms of the Apache License 2.0.
Although this project interfaces with MySQL Connector/Python, licensed under version 2 of the GNU General Public License (GPLv2) and is also subject to the terms included in Universal FOSS Exception, version 1.0. The exception permits this library to be licensed under an OSI-approved or a license categorized as "free" by the Free Software Foundation (FSF), such as Apache License 2.0.