Repository navigation
v1.56.0
What's Changed
- feat(x402): Add the x402 reservation counter by @osmarluz in #6611
- feat(account-tree): carry attribution_labels through the events_enriched queue and view by @lovrocolic in #6615
- fix(billing): unique count timestamp by @tiagolupepic in #6612
- chore(billable_metric): Mark custom_agg deprecated by @groyoh in #6608
- perf(usage): aggregate charge filters in one scan by @jdenquin in #6483
- fix(billing): Correct duplicate unique fees by @tiagolupepic in #6609
- perf(usage): cache the usage pre-filter for 5s by @jdenquin in #6621
- fix(roles): resolve custom role permissions by code, not name by @mikeh-lago in #6619
- fix(invites): restrict pending invite listing and token visibility by @mikeh-lago in #6622
- fix(security): require permissions on updateOrganization by @mikeh-lago in #6623
- fix(billing): reset advance graduated tiers at rate changes by @tiagolupepic in #6594
- feat(billing): reconcile advance segment fees by @tiagolupepic in #6595
- perf(usage): read the pre-filter incrementally by @jdenquin in #6633
- Show billing entity logo in customer portal by @lago-claude-ai-agent[bot] in #6610
- perf(usage): cache the usage pre-filter for 15s by @jdenquin in #6639
- fix(payments): cancel open payment on void or paid by @annvelents in #6616
- fix(logs): Keep API logs over the Kafka payload limit by @mikeh-lago in #6641
- feat(x402): Add the x402 connections API by @osmarluz in #6628
- feat(x402): Verify x402 connections against CDP on save by @osmarluz in #6636
- feat(x402): Resolve agent customers and subscriptions by @osmarluz in #6614
- feat(x402): Grant credits for settled purchases by @osmarluz in #6617
- perf(specs): Clean up factories usage in spec/queries by @vankiru in #6254
- perf(specs): Clean up factories usage in spec/models by @vankiru in #6243
- perf(specs): Clean up factories usage in spec/specs in directories k-o by @vankiru in #6250
- perf(specs): Clean up factories usage in spec/requests by @vankiru in #6246
- perf(specs): Clean up factories usage in spec/serializers by @vankiru in #6247
- perf(specs): Clean up factories usage in spec/jobs by @vankiru in #6253
- perf(specs): Clean up factories usage in spec/specs in directories p-r by @vankiru in #6251
- perf(specs): Clean up factories usage in spec/graphql by @vankiru in #6245
- perf(specs): Clean up factories usage in spec/specs in directories a-e by @vankiru in #6248
- perf(specs): Clean up factories usage in spec/specs in directories s-w by @vankiru in #6252
- perf(specs): Clean up factories usage in spec/specs in directories f-j by @vankiru in #6249
- chore(deps) Update dependency bullet to v8.1.3 by @renovate[bot] in #6242
- test(fixed-charges): freeze time in emit events spec by @annvelents in #6569
- fix(security): members can only grant permissions they hold by @mikeh-lago in #6624
- fix(stripe): skip and recover refunds stripe cannot accept by @toommz in #6443
- fix(stripe): scope dispute webhooks and retry api errors by @toommz in #6444
- test(stripe): isolate dispute closed spec org by @vincent-pochet in #6655
- fix(diagnostics): Mask RPC endpoint variables by @groyoh in #6653
- docs: Rewrite AGENTS.md against the current codebase by @groyoh in #6647
- refactor(billing): share effective card selection by @brunomiguelpinto in #6632
- perf(usage): keep scan rows between usage reads by @jdenquin in #6643
- test(payment): Fix flaky Stripe payment url spec by @groyoh in #6662
- feat(wallets): keep the per-metric billing split by @toommz in #6582
- feat(wallets): keep the per-metric ongoing split by @toommz in #6583
- feat(streaming): split charge usage per wallet by @toommz in #6584
- chore(deps): upgrade Rails to 8.1.4 by @vincent-pochet in #6620
- perf(events): add ClickHouse lookup indexes by @lago-claude-ai-agent[bot] in #6215
- fix(i18n): Add missing translations by @groyoh in #6659
- chore(config): load Rails 8.1 framework defaults by @vincent-pochet in #6627
- feat(events): route catalog events to dedicated topics by @jdenquin in #6509
- chore(config): disable Active Storage variant processor by @vincent-pochet in #6666
- fix(security): require permissions on tax and customer portal mutations by @mikeh-lago in #6671
- feat(x402): Let merchants turn x402 on for a wallet by @osmarluz in #6661
- fix(security): hold customer locks for the whole locked block by @mikeh-lago in #6670
- feat(x402): Reconcile pending x402 settlements from the chain by @osmarluz in #6651
- feat(x402): Grant reconciled credit purchases and retry failed grants by @osmarluz in #6664
- feat(events): rename catalog events tables and topics to product by @jdenquin in #6669
- feat(webhooks): Add catalog event definitions by @tiagolupepic in #6640
- fix(security): return validation errors instead of 500s on unchecked input by @mikeh-lago in #6683
- fix(events): escape colons in quoted query values by @vincent-pochet in #6696
- chore(db): drop unused flat_filters view by @vincent-pochet in #6638
- fix(security): require customer write to generate portal URLs by @jdenquin in #6676
- fix(security): escape spreadsheet formulas in CSV exports by @mikeh-lago in #6675
- test(billing): Cover recurring charge removal by @groyoh in #6657
- feat(roles): let the finance role update customers by @mikeh-lago in #6694
- fix(security): require permissions on organization-scoped GraphQL resolvers by @mikeh-lago in #6672
- fix(security): throttle auth mutations and stop password reset email enumeration by @mikeh-lago in #6673
- fix(invitation): handle existing users by @endenis in #6146
- fix(auth): Stop login lockout from other IPs by @groyoh in #6705
- fix(graphql): Align auth checks and their specs by @groyoh in #6704
- refactor(events): remove clickhouse_deduplication_enabled flag by @vincent-pochet in #6668
- feat(x402): Show x402 payments in the API and e-invoice receipts by @osmarluz in #6678
- feat(x402): Pay x402 credit invoices with the settled payment by @osmarluz in #6677
- fix(rate-cards): filter GraphQL list by currency by @tiagolupepic in #6707
- feat(x402): Refuse invalid x402 credit purchases by @osmarluz in #6645
- fix(security): disable GraphQL introspection outside development and test by @mikeh-lago in #6695
- feat(invoices): void contract invoices through API v2 by @brunomiguelpinto in #6715
- feat(x402): Add the x402 credit purchases endpoint by @osmarluz in #6648
- test(sum_service): Fix flaky running total specs by @groyoh in #6719
- fix(billing): scope prorated carry-over per group by @vincent-pochet in #6722
- fix(invoices): support drafts for product catalog by @endenis in #6532
- docs(agents): Add review checklist and spec habits by @groyoh in #6712
- fix(db): Load the schema into POSTGRES_SCHEMA by @groyoh in #6663
- fix(auth): Bind Okta and Entra ID sessions to their identity provider by @jdenquin in #6700
- fix(auth): Limit Okta and Entra ID logins to their organization's users by @jdenquin in #6706
- fix(auth): Require the authentication methods permission for SSO integrations by @jdenquin in #6714
- fix(events): ING-749 group missing and blank values together on Postgres by @vincent-pochet in #6725
- fix(billing): Start segments pending by @tiagolupepic in #6602
- feat(x402): Add x402 payment links for invoices by @osmarluz in #6703
- test(billing): cover advance pricing changes by @tiagolupepic in #6679
- feat(account-tree): remove deduplication by @lovrocolic in #6658
- Revert "fix(auth): Limit Okta and Entra ID logins to their organization's users" by @jdenquin in #6749
- Revert "fix(auth): Bind Okta and Entra ID sessions to their identity provider" by @jdenquin in #6750
- fix(security): require audit_logs:view on nested activity logs by @mikeh-lago in #6753
- fix(security): escape backslashes in values sent to ClickHouse by @mikeh-lago in #6751
- fix(security): remove the unused gRPC token endpoint by @mikeh-lago in #6754
- feat(add_ons): Add lifecycle webhooks by @avanish-garg in #6308
- feat(coupons): Add lifecycle webhooks by @avanish-garg in #6306
- fix(alerts): Do not re-fire a reached recurring threshold by @groyoh in #6656
- docs(agents): Document worktree specs and webhook payload checks by @groyoh in #6730
- Add contract identity to cached aggregations by @tiagolupepic in #6680
- fix(billing): use full anchored cycle duration by @tiagolupepic in #6681
- feat(credit-notes): cover product fees and unblock GraphQL by @tiagolupepic in #6743
- feat(auth): Add SSO claims to Okta and Entra ID tokens by @vincent-pochet in #6779
- fix(auth): Refuse SSO sessions on admin endpoints by @vincent-pochet in #6778
- fix(auth): Validate the Okta host and organization name by @vincent-pochet in #6777
- perf(graphql): Batch plan counts with Dataloader by @lago-claude-ai-agent[bot] in #6216
- docs(agents): Run worktree spec DB drop under test env by @groyoh in #6782
- fix(graphql): Authenticate nested field resolvers by @groyoh in #6710
- fix(security): mask payment provider credentials returned by GraphQL by @mikeh-lago in #6752
- perf(events): ING-208 add enriched_at index by @vincent-pochet in #6697
- Correct weighted usage boundary precision by @tiagolupepic in #6682
- fix(auth): Bind SSO sessions to their provider behind a flag by @vincent-pochet in #6770
- fix(auth): Limit SSO logins to users their integration vouches for by @vincent-pochet in #6780
- feat(taxes): add product integration mappings by @endenis in #6210
- feat: resolve taxes for product fees by @endenis in #6256
- feat(taxes): use product mappings for tax providers by @endenis in #6271
- feat(taxes): support catalog plan taxes by @endenis in #6454
- fix(taxes): use tax providers for segment invoices by @endenis in #6519
- fix(webhooks): Align credit note refund failure event type by @vincent-pochet in #6756
- fix(webhooks): Enqueue the current refund failure event name by @vincent-pochet in #6806
- fix(auth): Fall back to the default Okta host when blank by @vincent-pochet in #6808
- feat(credit-notes): render contract product fees in documents by @tiagolupepic in #6793
- test(credit-notes): associate rates with product fee fixtures by @tiagolupepic in #6810
- fix(auth): Ignore email casing in Okta logins by @vincent-pochet in #6813
- feat(billing): ING-208 add recurring agg snapshots by @vincent-pochet in #6567
- fix(webhooks): include taxes in catalog plan.deleted by @toommz in #6812
- feat(graphql): Query a single applied rate card by @ansmonjol in #6789
- feat(billing): ING-208 add recurring snapshot services by @vincent-pochet in #6568
- feat(contracts): bill recurring usage and persist advance state by @tiagolupepic in #6783
- fix(security): check the origin of ActionCable connections by @mikeh-lago in #6785
- fix(webhooks): keep alert webhook retries on the high priority queue by @vincent-pochet in #6822
- feat(billing): close card schedules at contract termination by @brunomiguelpinto in #6792
- feat(contracts): bill the open period when a contract terminates by @brunomiguelpinto in #6787
- feat(contracts): terminate contracts at their planned end by @brunomiguelpinto in #6794
- feat(invoices): add contract invoice type by @annvelents in #6684
- feat(invoices): group catalog fees for invoices by @annvelents in #6685
- feat(invoices): render product-catalog PDF by @annvelents in #6686
- feat(invoices): show credits on catalog PDF by @annvelents in #6690
- feat(payments): resolve contract payment method by @annvelents in #6687
- feat(invoices): finalize contract invoices by @annvelents in #6688
- feat(billing): publish finalized contract invoices by @annvelents in #6689
- fix(integrations): skip catalog invoice accounting syncs by @annvelents in #6691
- feat(invoices): apply plan v2 design to catalog PDF by @annvelents in #6701
- feat(taxes): add v2 endpoints by @endenis in #6823
- fix(wallets): Ignore top-up rules without a Premium license by @anhtho-lago in #6747
- fix(account-tree): count search matches in attributed usage pagination by @lovrocolic in #6836
- test(billing_entities): compare manage taxes results without order by @toommz in #6847
- feat(catalog): Emit product catalog events by @tiagolupepic in #6799
- fix(billing_entities): dedupe tax codes after normalizing case by @toommz in #6848
- feat(api): add contract current usage endpoint by @brunomiguelpinto in #6660
- feat(api): expand v2 products through serializable_with [BIL-230] by @toommz in #6811
- feat(api): render deleted_at on v2 records [BIL-230] by @toommz in #6815
- feat(api): expand v2 product billable metrics [BIL-230] by @toommz in #6820
- feat(api): flatten v2 rate cards and expand them [BIL-230] by @toommz in #6824
- feat(api): flatten v2 contracts and expand them [BIL-230] by @toommz in #6825
- feat(webhooks): prioritize usage threshold and depletion webhooks by @vincent-pochet in #6853
- refactor(api): render contract current usage through serializable_with by @toommz in #6856
- fix(api): tax contract current usage through the tax provider by @brunomiguelpinto in #6858
- perf(invoices): Preload invoice amount calculations by @vankiru in #5588
- perf(invoices): Preload the voidable credit-note check by @vankiru in #5590
- refactor(invoices): Stop routing list reads through the :direct role by @groyoh in #6840
- fix(billing): ING-208 carry weighted sum breakdowns at period end by @vincent-pochet in #6859
- feat(billing): ING-208 persist recurring snapshots by @vincent-pochet in #6570
- test(invoices): Stabilize the payment-overdue index-usage spec by @groyoh in #6866
- fix(billing): bill non-prorating cards whole when a contract ends by @brunomiguelpinto in #6861
- feat(fees): persist billing timing and filter values on product fees by @annvelents in #6744
- feat(fees): add the v2 fee serializer by @annvelents in #6745
- feat(fees): expand the v2 fee by @annvelents in #6830
- feat(fees): add the product fees query by @annvelents in #6760
- feat(fees): serve product fees on API v2 by @annvelents in #6761
- feat(webhooks): send the v2 fee body in fee.created by @annvelents in #6832
- fix(wallets): restrict privileged top-up parameters by @lago-claude-ai-agent[bot] in #6758
- fix(billing): ING-750 group missing and blank values together in advance by @vincent-pochet in #6868
- fix(api): Cap the page size of v1 lists by @groyoh in #6736
- feat(billing): ING-208 audit recurring snapshots by @vincent-pochet in #6849
- feat(x402): Store sign-in nonces and allowed origins by @osmarluz in #6772
- feat(api): drop record counts from v2 payloads [BIL-230] by @toommz in #6826
- feat(api): move v2 controllers onto serializable_with [BIL-230] by @toommz in #6829
- fix(api): Accept page=0 on v1 lists again by @groyoh in #6885
- fix(payments): preserve selected manual payment date by @lago-claude-ai-agent[bot] in #6781
- fix(auth): match user emails case-insensitively by @lago-claude-ai-agent[bot] in #6757
- feat(api): add v2 microsecond timestamps to product categories [BIL-231] by @toommz in #6871
- feat(api): render v2 product timestamps to the microsecond [BIL-231] by @toommz in #6872
- feat(api): render v2 tax timestamps to the microsecond [BIL-231] by @toommz in #6873
- feat(api): render v2 rate card timestamps to the microsecond [BIL-231] by @toommz in #6874
- feat(api): render v2 plan timestamps to the microsecond [BIL-231] by @toommz in #6875
- feat(api): render v2 contract timestamps to the microsecond [BIL-231] by @toommz in #6876
- feat(api): render v2 fee timestamps to the microsecond [BIL-231] by @toommz in #6877
- feat(webhooks): add a dedicated worker for usage alert webhooks by @jdenquin in #6857
- test(api): check v2 timestamp formats in specs and RuboCop [BIL-231] by @toommz in #6878
- feat(credit-notes): apply contract credits to later invoices by @tiagolupepic in #6819
- feat(x402): Verify sign-in-with-x proofs by @osmarluz in #6773
- feat(x402): Require allowed origins on x402 connections by @osmarluz in #6774
- feat(x402): Verify agent sign-ins at the gate check by @osmarluz in #6775
- feat(logs): Add native v2 activity logs API with parsed JSON fields by @groyoh in #6843
- feat(logs): Add native v2 API logs API with parsed JSON fields by @groyoh in #6844
- fix(ai-agent): Mark tool results as untrusted data by @groyoh in #6771
- feat(logs): Add native v2 security logs API by @groyoh in #6845
- perf(usage): Add triggered_at index to triggered alerts by @groyoh in #6891
- fix(billing): serialize contract advance aggregation state by @brunomiguelpinto in #6851
- feat: add v2 customer endpoints by @endenis in #6852
- feat(alerts): detect and record recoveries by @aquinofb in #6131
- fix(alerts): re-arm current usage alerts at renewal by @aquinofb in #6132
- feat(alerts): send the alert.resolved webhook by @claude[bot] in #6373
- feat(alerts): accept and return notify_on over REST by @claude[bot] in #6379
- feat(credit-notes): validate manual contract note issuance by @tiagolupepic in #6818
- fix(invoices): return credit note failures when voiding an invoice by @toommz in #6894
- fix(billing): recompute usage on Lifetime Usage check retry by @vincent-pochet in #6905
- feat(billing): fetch recurring snapshots by @vincent-pochet in #6574
- docs: Suggest documenting newly noticed patterns by @groyoh in #6865
- fix(api): return plan and permission gates as forbidden by @toommz in #6896
- feat(x402): Return subscription_started_at on credit purchases and gate checks by @osmarluz in #6897
- fix(integrations): raise RequestLimitError on provider request limits by @toommz in #6908
- feat(billing): read recurring sums from a snapshot by @vincent-pochet in #6575
- test(billing): cover the snapshot read guards by @vincent-pochet in #6909
- fix(contracts): return 429 when a tax provider throttles current usage by @toommz in #6907
- feat(billing): read recurring sum from snapshots by @vincent-pochet in #6708
- feat(account-tree): page through the filters of a split charge by @lovrocolic in #6910
- fix(webhooks): group plan rate card and contract events in their own categories by @tiagolupepic in #6916
- fix(fees): answer 422 to a payment_status that is not a string by @toommz in #6918
- fix(customers): reject unknown integration types before writing by @toommz in #6919
- feat: add v2 organization endpoints by @endenis in #6912
- fix(ai-agent): Restrict AI conversations to the member who owns them by @mikeh-lago in #6755
- feat: add v2 billing entity endpoints by @endenis in #6870
- docs(agents): explain hand-computed spec expectations by @vincent-pochet in #6934
- feat(invoices): add the v2 invoice serializer by @annvelents in #6759
- feat(api): support issuing date and mixed directions in cursor pagination by @annvelents in #6762
- feat(invoices): serve catalog invoices on API v2 by @annvelents in #6763
- feat(invoices): list a customer's catalog invoices on API v2 by @annvelents in #6764
- feat(invoices): serve catalog invoice actions on API v2 by @annvelents in #6765
- feat(invoices): serve catalog invoice payments and drafts on API v2 by @annvelents in #6766
- fix(invoices): answer 404 to v1-only invoice routes on API v2 by @annvelents in #6767
- feat(webhooks): send the v2 body for catalog invoices by @annvelents in #6768
- test(invoices): bill a contract invoice and drive it through API v2 by @annvelents in #6769
- feat(invoices): serve invoice update, delete and disputes on API v2 by @annvelents in #6790
- feat(customers): serve customer payment methods and checkout URL on API v2 by @annvelents in #6791
- feat(customers): serve customer payments on API v2 by @annvelents in #6889
- feat(customers): serve customer payment requests on API v2 by @annvelents in #6890
- fix(usage-monitoring): Accept null recurring in alert thresholds by @lago-claude-ai-agent[bot] in #6939
- fix(payments): avoid timeout when filtering payments by invoice by @lago-claude-ai-agent[bot] in #6940
- feat(taxes): keep custom taxes on non EU customers without tax ID by @Antoinep2808 in #6837
- feat(x402): Use x402 on testnet or on mainnet, never both by @osmarluz in #6914
- fix(account-tree): return the total units of a split charge by @lovrocolic in #6936
- feat(api): render v2 errors as a code and a details array [BIL-229] by @toommz in #6895
- fix(x402): Answer a credit purchase replay only under its request's key by @osmarluz in #6911
- feat(billing): read prorated sum from snapshots by @vincent-pochet in #6709
- security: crass 1.0.7 -> 1.0.8 by @lago-claude-ai-agent[bot] in #6944
- fix(specs): make rate card rates query spec independent of the time of day by @mikeh-lago in #6906
- fix(cable): Pass the Redis password to ActionCable by @mikeh-lago in #6928
- test(x402): Give the mainnet replay spec its request key by @osmarluz in #6948
- feat(graphql): hide priced rate cards with rateCards filters by @ansmonjol in #6862
- feat(billing): read weighted sum from snapshots by @vincent-pochet in #6711
- fix(security): expire invoice, credit note and receipt download links by @mikeh-lago in #6842
- misc(analytics): Stop sending the invoice_created Segment event by @claude[bot] in #6892
- feat(account-tree): implement attributed usage caching for the read path by @lovrocolic in #6881
- fix(wallets): flag wallet refresh when a draft invoice is finalized or deleted by @lago-claude-ai-agent[bot] in #6953
- fix(fixed-charges): answer 422 when a fixed charge has no add-on by @lago-claude-ai-agent[bot] in #6933
- fix(events): group whitespace-only values with missing ones by @vincent-pochet in #6942
- fix(invoices): check trial at billing time on draft refresh by @endenis in #6951
- feat(api): filter native v2 lists on created_at [BIL-740] by @toommz in #6893
- perf(api): index invoices on organization and created_at [BIL-740] by @toommz in #6937
- fix(deps): Bump ransack to 4.4.4 by @groyoh in #6955
- feat(billing): read pay in advance from snapshots by @vincent-pochet in #6716
- feat(alerts): evaluate wallet alerts from a Kafka consumer by @jdenquin in #6860
- fix(wallets): require wallets:update for privileged wallet creation params by @mikeh-lago in #6827
- fix(vies): keep retrying VIES checks after network errors by @mikeh-lago in #6946
- fix(wallets): flag wallet refresh when a draft gets provider taxes by @lago-claude-ai-agent[bot] in #6954
- fix(payments): scope webhook payable lookups to the webhook organization by @mikeh-lago in #6957
- feat(account-tree): add fixes based on QA returns by @lovrocolic in #6963
- refactor(webhooks): declare webhook expansions on serializers [BIL-973] by @toommz in #6952
- chore(ruby): Bump Ruby to 4.0.9 by @groyoh in #6959
- feat(billing): reuse previous subscription snapshots by @vincent-pochet in #6809
- refactor(webhooks): default webhook bodies to webhook: true [BIL-973] by @toommz in #6961
- feat: add v2 payments endpoints by @endenis in #6935
- feat: add v2 payment requests endpoints by @endenis in #6947
- refactor(api): declare v2 serializer timestamps with a macro [BIL-231] by @toommz in #6965
- refactor(api): require the timestamps macro for v2 datetimes [BIL-231] by @toommz in #6967
- fix(events): compare pay-in-advance group values as text by @vincent-pochet in #6956
- fix(customer-portal): let organizations choose the portal-editable customer fields [BIL-838] by @mikeh-lago in #6863
- test(payments): cover organization scoping in webhook event handlers by @mikeh-lago in #6958
- fix(ci): build and migrate on ubuntu-26.04 by @vincent-pochet in #6977
- fix(usage-monitoring): Trigger usage alerts created above a threshold by @lago-claude-ai-agent[bot] in #6970
- feat(realtime-usage): add organization-wide real-time usage reports by @jdenquin in #6817
- chore(webhooks): deprecate fee.tax_provider_error webhook by @lovrocolic in #6920
- feat(realtime-usage): Expose the aggregation type on billable metric reports by @jdenquin in #6982
- feat(api): carry metadata on validation failures [BIL-229] by @toommz in #6898
- fix(api_keys): keep the API key lookup retryable on connection loss by @iamksm in #6975
- perf(billing): load previous subscription snapshots once by @vincent-pochet in #6732
- perf(billing): fetch snapshots once, lazily by @vincent-pochet in #6887
- test(billing): cover recurring snapshots per flag by @vincent-pochet in #6984
- fix(fees): keep product details on fees of a deleted product by @brunomiguelpinto in #6976
- fix(payment_receipts): render receipt PDF for catalog invoices by @brunomiguelpinto in #6921
- feat(payment_receipts): serve a payment receipt on API v2 by @brunomiguelpinto in #6922
- feat(payment_receipts): list payment receipts on API v2 by @brunomiguelpinto in #6923
- feat(payment_receipts): resend a payment receipt email on API v2 by @brunomiguelpinto in #6924
- feat(payment_receipts): expand the payment of a v2 payment receipt by @brunomiguelpinto in #6971
- feat(credit-notes): render product-catalog credit note PDFs by @tiagolupepic in #6915
- fix(filters): align product matching with charge precedence by @tiagolupepic in #6886
- feat(api): add native v2 credit note endpoints by @tiagolupepic in #6904
- perf(billing): load only the event group's snapshots by @vincent-pochet in #6941
- chore(realtime-usage): remove the subscriptionHourlyUsage query by @jdenquin in #6988
- feat(api): send allowed values on v2 closed-list refusals [BIL-229] by @toommz in #6917
- feat(api): index list elements in v2 error fields [BIL-229] by @toommz in #6985
- refactor(billing): share snapshot fetch arguments by @vincent-pochet in #6989
- fix(deps): Bump graphql and rack for security advisories by @groyoh in #6990
New Contributors
- @avanish-garg made their first contribution in #6308
- @claude[bot] made their first contribution in #6373
- @Antoinep2808 made their first contribution in #6837
- @iamksm made their first contribution in #6975
Full Changelog: v1.55.0...v1.56.0