Skip to content

revel-backend

v1.68.0 Breaking

This release includes 1 breaking change for platform teams planning a safe upgrade.

Published 17d Productivity & Wikis
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Affected surfaces

breaking_upgrade

ReleasePort's take

Moderate signal
editorial:auto 11d

The check‑in endpoint now uses a ticket code (UUID or series:<uuid>) instead of the ticket ID. This breaking change requires updating any client paths that call /event-admin/{event_id}/tickets/{ticket_id}/check-in.

Why it matters: Affects all integrations calling the check‑in API; update endpoint URLs to match the new path format before upgrade, as version v1.68.0 enforces the change immediately.

Summary

AI summary

Updates de/fr/it, events, and feat across a mixed release.

Changes in this release

Breaking High

check-in endpoint path renamed to use ticket code (UUID or series:<uuid>) instead of ticket ID.

check-in endpoint path renamed to use ticket code (UUID or series:<uuid>) instead of ticket ID.

Source: llm_adapter@2026-07-16

Confidence: low

Feature Low

Adds Series Passes (season tickets) with pro‑rata pricing, API endpoints for purchase and management, automatic ticket materialization per event, and pass‑level PDF/Apple Wallet support.

Adds Series Passes (season tickets) with pro‑rata pricing, API endpoints for purchase and management, automatic ticket materialization per event, and pass‑level PDF/Apple Wallet support.

Source: llm_adapter@2026-07-16

Confidence: high

Bugfix Medium

waitlist_cutoff_date now shifts correctly when duplicating an event or its recurring series occurrences.

waitlist_cutoff_date now shifts correctly when duplicating an event or its recurring series occurrences.

Source: llm_adapter@2026-07-16

Confidence: low

Full changelog

Added

  • Series Passes (season tickets): organizers can sell a single pass covering every event in an event series, with pro-rata pricing — price − passed_events × pro_rata_discount (clamped at 0), purchasable while at least 2 covered events remain.
    • SeriesPass product on an event series (price, pro-rata discount, online/offline/free payment methods, visibility, sales window, optional holder cap), linked to one existing ticket tier per covered event; pass purchases consume that tier's capacity.
    • Purchase materializes a per-event ticket for every future covered event, all-or-nothing under capacity locks; online passes use a single Stripe checkout with the price split penny-exact across events, honoring each tier's VAT rate.
    • Public API: /series-passes/* (list, quote, checkout, my-passes, PDF and Apple Wallet downloads). Admin API: /event-series-admin/{series_id}/passes/* (CRUD, tier links, holders, offline confirmation, cancellation).
    • Organizers can extend a pass to later-added events (endpoint or inline series_pass_links on event create/update); active holders get the new event's ticket free of charge.
    • Cancelling a covered event refunds each holder's share of that event; cancelling a whole pass refunds all remaining events and releases capacity. Holders cannot self-cancel individual pass tickets.
    • Pass-level PDF and Apple Wallet pass with the covered-events list; new series_pass_purchased / series_pass_extended notifications (de/fr/it), replacing per-ticket emails for pass purchases.
    • Attendee/ticket listings can filter by origin (?source=pass|direct) and ticket schemas expose the originating series_pass.

Changed

  • Breaking: check-in endpoint path renamed from POST /event-admin/{event_id}/tickets/{ticket_id}/check-in to .../tickets/{code}/check-in — the parameter is now a string code accepting either a plain ticket UUID or a series:<uuid> series-pass QR payload.

Fixed

  • Duplicating an event (and materializing recurring-series occurrences) now shifts waitlist_cutoff_date along with the other date fields instead of copying the template's absolute timestamp — copies no longer start with an already-closed waitlist or fail validation when duplicated to an earlier date.

What's Changed

  • docs: sync USER_JOURNEYS with v1.66.0–v1.67.1 and record E2E test strategy by @biagiodistefano in https://github.com/letsrevel/revel-backend/pull/643
  • fix(events): shift waitlist_cutoff_date in duplicate_event (#645) by @biagiodistefano in https://github.com/letsrevel/revel-backend/pull/646
  • feat: series passes (season tickets) with pro-rata pricing (#644) by @biagiodistefano in https://github.com/letsrevel/revel-backend/pull/647
  • chore(release): v1.68.0 by @biagiodistefano in https://github.com/letsrevel/revel-backend/pull/648

Full Changelog: https://github.com/letsrevel/revel-backend/compare/v1.67.1...v1.68.0

Breaking Changes

  • Check‑in endpoint path renamed from `/event-admin/{event_id}/tickets/{ticket_id}/check-in` to `/.../tickets/{code}/check-in`, using a string code that accepts either a ticket UUID or a `series:` series‑pass QR payload.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track revel-backend

Get notified when new releases ship.

Sign up free

About revel-backend

The Django backend of the Revel event platform project

All releases →

Related context

Earlier breaking changes

  • v1.72.1 Makes payment base fields (`amount`, `currency`, `platform_fee`) read-only
  • v1.72.1 Restricts organization ownership transfer to superusers only
  • v1.71.0 Checkout flow now uses a two-step reserve then session creation process.

Beta — feedback welcome: [email protected]