Skip to content

feat(products): add is_current filter to list products - #16156

Draft
strandhvilliam wants to merge 1 commit into
villiam/product-version-labelfrom
villiam/product-is-current-filter
Draft

strandhvilliam wants to merge 1 commit into
villiam/product-version-labelfrom
villiam/product-is-current-filter

Conversation

@strandhvilliam

@strandhvilliam strandhvilliam commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Adds an is_current filter to GET /v1/products/ (2027-01 only), so previous product versions can be listed.

I guess it technically would be cleaner if is_current is omitted ment = all products would be returned, no matter if current or not. But don't want to break existing logic and you probably expect the current ones to be returned anyway, even if it is an implicit query filter

So with this PR instead it would mean:

  • Omitted: unchanged, current versions only (unless filtering by id)
  • true: current versions only
  • false: previous versions only

View guided diff Turn on auto-fix

@vercel

vercel Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
orbit Ready Ready Preview Oct 30, 2026 3:10pm UTC
polar-test Ready Ready Preview Oct 30, 2026 3:10pm UTC

Request Review

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 4 files

Confidence score: 5/5

  • Automated review surfaced no issues in the provided summaries.
  • No files require special attention.

Requires human review: Adds an optional is_current query filter to the public GET /v1/products/ (2027-01) endpoint, letting clients list previous product versions while keeping the default current-only behavior. This changes a public API contract, so human review is required.

View guided diff | Turn on auto-fix | Re-trigger cubic

@github-actions

github-actions Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Migration Isolation Check Failed

This PR contains database migrations along with other code changes. To ensure safe deployments, please split this into separate PRs,
or verify that your changes will not break. Keep in mind that the API is deployed before the workers.

  1. Migration PR: Only model changes and the migration file
  2. Code PR: All other changes (can be merged after migration PR)

Files that should be in a separate PR:

  • server/AGENTS.md
  • server/benchmarks/test_event.py
  • server/polar/account/repository.py
  • server/polar/auth/dependencies.py
  • server/polar/authz/repository.py
  • server/polar/backoffice/components/_alert.py
  • server/polar/backoffice/customers/endpoints.py
  • server/polar/backoffice/organizations_v2/endpoints.py
  • server/polar/backoffice/organizations_v2/views/list_view.py
  • server/polar/backoffice/support_cases/queries.py
  • server/polar/benefit/endpoints.py
  • server/polar/benefit/grant/endpoints.py
  • server/polar/benefit/grant/repository.py
  • server/polar/benefit/repository.py
  • server/polar/benefit/schemas.py
  • server/polar/billing_entry/repository.py
  • server/polar/billing_entry/service.py
  • server/polar/catalog/endpoints.py
  • server/polar/catalog/repository.py
  • server/polar/catalog/schemas.py
  • server/polar/checkout/endpoints.py
  • server/polar/checkout/repository.py
  • server/polar/checkout/schemas.py
  • server/polar/checkout_link/endpoints.py
  • server/polar/checkout_link/repository.py
  • server/polar/checkout_link/schemas.py
  • server/polar/checkout_link/service.py
  • server/polar/custom_field/endpoints.py
  • server/polar/custom_field/schemas.py
  • server/polar/custom_field/service.py
  • server/polar/customer/endpoints.py
  • server/polar/customer/repository.py
  • server/polar/customer/schemas/customer.py
  • server/polar/customer/service.py
  • server/polar/customer_meter/endpoints.py
  • server/polar/customer_meter/repository.py
  • server/polar/customer_meter/schemas.py
  • server/polar/customer_meter/service.py
  • server/polar/customer_meter/tasks.py
  • server/polar/customer_portal/endpoints/benefit_grant.py
  • server/polar/customer_portal/endpoints/customer_meter.py
  • server/polar/customer_portal/endpoints/customer_seat.py
  • server/polar/customer_portal/endpoints/downloadables.py
  • server/polar/customer_portal/endpoints/license_keys.py
  • server/polar/customer_portal/endpoints/order.py
  • server/polar/customer_portal/endpoints/subscription.py
  • server/polar/customer_portal/repository/customer_meter.py
  • server/polar/customer_portal/repository/downloadable.py
  • server/polar/customer_portal/repository/order.py
  • server/polar/customer_portal/repository/payment_method.py
  • server/polar/customer_portal/repository/wallet.py
  • server/polar/customer_portal/schemas/benefit_grant.py
  • server/polar/customer_portal/schemas/customer_meter.py
  • server/polar/customer_portal/schemas/downloadables.py
  • server/polar/customer_portal/schemas/license_key.py
  • server/polar/customer_portal/schemas/order.py
  • server/polar/customer_portal/schemas/seat.py
  • server/polar/customer_portal/schemas/subscription.py
  • server/polar/customer_portal/service/benefit_grant.py
  • server/polar/customer_portal/service/order.py
  • server/polar/customer_portal/service/subscription.py
  • server/polar/customer_seat/endpoints.py
  • server/polar/customer_seat/repository.py
  • server/polar/customer_seat/schemas.py
  • server/polar/declarative_config/endpoints.py
  • server/polar/declarative_config/export.py
  • server/polar/declarative_config/schemas.py
  • server/polar/discount/endpoints.py
  • server/polar/discount/schemas.py
  • server/polar/discount/service.py
  • server/polar/dispute/endpoints.py
  • server/polar/dispute/repository.py
  • server/polar/dispute/schemas.py
  • server/polar/event/endpoints.py
  • server/polar/event/repository.py
  • server/polar/event/schemas.py
  • server/polar/event/system.py
  • server/polar/event_type/endpoints.py
  • server/polar/event_type/repository.py
  • server/polar/event_type/schemas.py
  • server/polar/eventstream/endpoints.py
  • server/polar/exception_handlers.py
  • server/polar/feedback/repository.py
  • server/polar/file/endpoints.py
  • server/polar/file/repository.py
  • server/polar/file/schemas.py
  • server/polar/integrations/slack/endpoints.py
  • server/polar/integrations/slack/schemas.py
  • server/polar/integrations/tinybird/service.py
  • server/polar/kit/db/locking.py
  • server/polar/kit/extensions/sqlalchemy/__init__.py
  • server/polar/kit/extensions/sqlalchemy/storage.py
  • server/polar/kit/metadata.py
  • server/polar/kit/pagination.py
  • server/polar/kit/repository/base.py
  • server/polar/kit/versioning.py
  • server/polar/license_key/endpoints.py
  • server/polar/license_key/repository.py
  • server/polar/license_key/schemas.py
  • server/polar/license_key/service.py
  • server/polar/member/endpoints.py
  • server/polar/member/query.py
  • server/polar/member/repository.py
  • server/polar/member/service.py
  • server/polar/merchant_migration/endpoints.py
  • server/polar/merchant_migration/repository.py
  • server/polar/merchant_migration/schemas.py
  • server/polar/meter/endpoints.py
  • server/polar/meter/repository.py
  • server/polar/meter/schemas.py
  • server/polar/meter/service.py
  • server/polar/metrics/endpoints.py
  • server/polar/metrics/fx.py
  • server/polar/metrics/queries.py
  • server/polar/metrics/repository.py
  • server/polar/metrics/schemas.py
  • server/polar/notifications/endpoints.py
  • server/polar/notifications/schemas.py
  • server/polar/oauth2/exception_handlers.py
  • server/polar/oauth2/grants/agent.py
  • server/polar/order/endpoints.py
  • server/polar/order/export.py
  • server/polar/order/repository.py
  • server/polar/order/schemas.py
  • server/polar/organization/endpoints.py
  • server/polar/organization/repository.py
  • server/polar/organization/schemas.py
  • server/polar/organization_access_token/endpoints.py
  • server/polar/organization_access_token/repository.py
  • server/polar/organization_access_token/schemas.py
  • server/polar/organization_access_token/service.py
  • server/polar/organization_domain/repository.py
  • server/polar/organization_review/repository.py
  • server/polar/outpost/auth.py
  • server/polar/outpost/endpoints.py
  • server/polar/outpost/service.py
  • server/polar/payment/endpoints.py
  • server/polar/payment/repository.py
  • server/polar/payment/schemas.py
  • server/polar/payment_method/repository.py
  • server/polar/payout/endpoints.py
  • server/polar/payout/repository.py
  • server/polar/payout/schemas.py
  • server/polar/payout_account/repository.py
  • server/polar/personal_access_token/service.py
  • server/polar/product/endpoints.py
  • server/polar/product/repository.py
  • server/polar/product/schemas.py
  • server/polar/product/service.py
  • server/polar/reducer/bucket_repository.py
  • server/polar/reducer/redis_store.py
  • server/polar/reducer/repository.py
  • server/polar/reducer/service.py
  • server/polar/reducer/tasks.py
  • server/polar/refund/endpoints.py
  • server/polar/refund/repository.py
  • server/polar/refund/schemas.py
  • server/polar/search/endpoints.py
  • server/polar/search/schemas.py
  • server/polar/search/service.py
  • server/polar/sso/repository.py
  • server/polar/subscription/endpoints.py
  • server/polar/subscription/export.py
  • server/polar/subscription/repository.py
  • server/polar/subscription/scheduler.py
  • server/polar/subscription/schemas.py
  • server/polar/support_case/endpoints.py
  • server/polar/support_case/repository.py
  • server/polar/support_case/schemas.py
  • server/polar/tax/endpoints.py
  • server/polar/tax/repository.py
  • server/polar/tax/schemas.py
  • server/polar/transaction/endpoints.py
  • server/polar/transaction/export.py
  • server/polar/transaction/repository.py
  • server/polar/transaction/schemas.py
  • server/polar/transaction/service/transaction.py
  • server/polar/user_organization/service.py
  • server/polar/wallet/endpoints.py
  • server/polar/wallet/repository.py
  • server/polar/wallet/schemas.py
  • server/polar/webhook/endpoints.py
  • server/polar/webhook/repository.py
  • server/polar/webhook/schemas.py
  • server/pyproject.toml
  • server/tests/backoffice/customers/test_endpoints.py
  • server/tests/customer_meter/test_repository.py
  • server/tests/customer_meter/test_service.py
  • server/tests/discount/test_endpoints.py
  • server/tests/eventstream/test_subscribe.py
  • server/tests/kit/db/test_locking.py
  • server/tests/kit/repository/test_base.py
  • server/tests/kit/test_versioning.py
  • server/tests/openapi.2026-04.json
  • server/tests/order/test_repository.py
  • server/tests/organization/test_service.py
  • server/tests/outpost/test_endpoints.py
  • server/tests/product/test_service.py
  • server/tests/reducer/test_service.py
  • server/tests/reducer/test_tasks.py
  • server/tests/subscription/test_service.py
  • server/uv.lock

Why?

Migrations are deployed separately and run before code changes. Mixing them can cause deployment issues if the new code depends on the migration.

Previous product versions were only reachable by id. The filter still
defaults to current versions, and false returns only previous ones.

This branch was successfully deployed

2 active deployments
Preview – polar-test — bc6b6a03 Deployed Oct 30, 2026 by vercel[bot]
Preview – orbit — bc6b6a03 Deployed Oct 30, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant