Skip to content

Changelog

v1.14.0

  • Contribution center endpoints allow authenticated users to list their own submitted libraries, reports, and community photos with moderation status via GET /api/v1/libraries/mine, GET /api/v1/libraries/mine/reports, and GET /api/v1/libraries/mine/photos.

v1.13.0

  • Auth device endpoints allow iOS clients to register and unregister APNs tokens with POST /api/v1/auth/devices and DELETE /api/v1/auth/devices/{token}.
  • Approval, rejection, and moderation-work events now queue APNs push notifications when APNs credentials are configured.
  • Invalid APNs tokens are removed when delivery returns an inactive or bad-token response.

v1.12.0

  • Auth profile endpoint (GET /api/v1/auth/me) now includes is_staff so clients can detect staff users after login.
  • Staff moderation endpoints allow staff users to load dashboard counts, list all libraries across moderation statuses, view pending/rejected library details, and set library status via GET /api/v1/libraries/moderation, GET /api/v1/libraries/moderation/{slug}, and PATCH /api/v1/libraries/moderation/{slug}. Authenticated non-staff users receive a structured 403 response.
  • Staff report moderation endpoints allow listing user reports and setting report status via GET /api/v1/libraries/moderation/reports and PATCH /api/v1/libraries/moderation/reports/{report_id}.
  • Staff photo moderation endpoints allow listing community photo submissions and setting photo status via GET /api/v1/libraries/moderation/photos and PATCH /api/v1/libraries/moderation/photos/{photo_id}.

v1.11.0

  • Library update endpoint (PATCH /api/v1/libraries/{slug}) allows authenticated submitters to edit their own pending or approved library submissions. Successful edits return the library to pending moderation, and replacement photos are optional.

v1.10.0

  • Library list endpoint (GET /api/v1/libraries/) accepts a new search query parameter for a global simple search across name, description, city, address, and postal code. It supports substring matches (useful for partial addresses and postal codes) and ranks name matches above other field matches when full-text search is available. The existing q parameter is unchanged and remains a focused name/description search with full-text ranking. When both parameters are provided, search takes precedence.

v1.9.0

  • Library submit endpoint (POST /api/v1/libraries/): the address field is now conditionally optional. It may be empty only when coordinates (latitude and longitude) are provided, which supports libraries located in places without a classic street address (e.g. inside a park). Coordinates remain mandatory; an empty address with no coordinates is rejected. The address field in library response payloads may now be an empty string.

v1.8.0

  • Favourites: authenticated users can mark (POST /libraries/{slug}/favourite) and unmark (DELETE /libraries/{slug}/favourite) approved libraries as favourites.
  • Favourites list endpoint (GET /api/v1/libraries/favourites) returns the user's favourited libraries with pagination, ordered by when they were favourited.
  • Library detail, list, and latest endpoints now include an is_favourited field indicating whether the authenticated user has favourited the library.

v1.7.0

  • Change email endpoint (PATCH /auth/me/email) allows authenticated users to update their email address with uniqueness validation.
  • Change password endpoint (PUT /auth/me/password) allows authenticated users to change their password with current password verification and Django password policy validation.
  • Delete account endpoint (DELETE /auth/me) allows authenticated users to permanently delete their account with password confirmation.

v1.6.0

  • Library submissions are now enriched with AI-generated name and description when the user leaves those fields blank. The description is also used as image alt text for improved accessibility.

v1.5.0

  • Social login endpoint (POST /auth/social) exchanges native Apple or Google identity tokens for JWT token pairs. Supports automatic account creation, email-based account linking, and Apple first sign-in name capture.

v1.4.0

  • Country list endpoint (GET /api/v1/libraries/countries/) returns all countries with approved libraries and counts, ordered by count descending

v1.3.0

  • Community photo endpoint (POST /api/v1/libraries/{slug}/photo) is now documented
  • Fixed q search parameter description: searches name and description (not address)
  • Fixed image format documentation: JPEG/PNG/WEBP accepted (not just JPEG/PNG)
  • Fixed GET /api/v1/statistics/ path in docs (was missing /api/v1/ prefix)
  • Added POST /libraries/{slug}/photo and GET /statistics/ to rate-limiting documentation

v1.2.0

  • Login endpoint (POST /auth/login) now accepts email address in the username field, matching the web login flow. Email lookup is case-insensitive and the identifier is trimmed before authentication.

v1.1.0

  • Public statistics endpoint (GET /api/v1/statistics/) with totals, top countries, and cumulative growth series
  • Community photo submissions count towards the "libraries with photos" statistic

v1.0.0

Initial release

  • JWT authentication (register, login, refresh, me)
  • Library listing with text search, city/country/postal code filtering, and proximity search
  • Library detail by slug with owner visibility for pending submissions
  • Library submission with photo upload and moderation workflow
  • Issue reporting with reason categories and optional photo
  • Paginated responses with navigation metadata
  • Rate limiting for read, write, and auth endpoints
  • Consistent error response format across all endpoints