litellm/tests/proxy_behavior/management
ryan-crabbe-berri 9ec0145986
feat(proxy): add /team/daily/activity/aggregated and switch the Usage team tab to it (#36562)
* feat(proxy): add /team/daily/activity/aggregated and use it in the Usage UI

The Team Usage tab drained row-paginated pages client side, which painted
newest days first and drew duplicate bars when a day's rows straddled a
page boundary. Serve the whole range in one SQL GROUPING SETS pass instead:
the aggregated query gains optional per-entity rollup levels (entity as the
most-significant GROUPING bit) so breakdown.entities keeps per-team spend,
aliases, and per-key splits. The endpoint shares the paginated route's
scoping via _resolve_team_daily_activity_scope, accepts the timezone the UI
already sends, and the api_key filter now takes a list so non-admin member
scoping works. The dashboard tries the aggregated endpoint first and falls
back to page draining on failure.

* chore: ratchet B008 budget down by the endpoint converted to Annotated Depends

* chore: keep mutable-ok suppressions on their annotation lines after formatting

* fix(proxy): reject malformed or over-wide ranges on team aggregated activity

The aggregated endpoint has no pagination bounding its work, so validate
start_date and end_date as real dates and cap the span at 400 days. The
dashboard's widest presets fit well inside the cap, and an over-cap range
falls back to the paginated flow. Also trim implementation comments that
restated the grouping-set code.

* fix(proxy): parse aggregated range bounds as UTC to satisfy DTZ007

* refactor(proxy): fetch entity rollups with a companion query instead of extending the main one

The entity-as-extra-GROUPING-bit approach made the bitmask layout
mode-dependent: the same constant meant (date) for normal rows and
(date, entity) for entity rows, disambiguated by masking. Split it out:
the shared WHERE builder feeds both the untouched main query and a small
per-entity rollup query keyed by GROUPING(api_key), run concurrently, and
a fold writes breakdown.entities onto the built response.

* refactor(proxy): share the daily-activity error and entity-metadata shapes

The type-discipline ceiling for LIT002 ratcheted down on staging, so the new
aggregated endpoint had to stop hand-rolling collections the codebase already
builds elsewhere. Funnel the `{"error": ...}` detail through one construction
site, turn the range validator into an error-as-value, reuse a single
entity-metadata lookup for both breakdown paths, and widen
get_api_key_metadata to any set so callers stop copying frozensets.
2026-08-18 11:29:57 -07:00
..
__init__.py feat(tests): behavior-pinning harness + Key Tier-1 matrix (#28321) 2026-05-20 19:27:44 -07:00
actors.py test(proxy): behavior-pinning matrix for team management endpoints (#28441) 2026-05-21 16:57:25 -07:00
conftest.py test(proxy): separate the member_add permission gate from the provisioning gate 2026-08-01 14:39:47 -07:00
test_credential_migration_endpoint.py feat(proxy): add AES-256-GCM at-rest credential encryption with versioned format and re-encryption migration (#31215) 2026-06-29 20:14:22 +02:00
test_f7_coverage_closeout.py test(proxy): phase-4 payload behavior pinning for tier-2/3 key + team management endpoints (#28681) 2026-05-23 12:16:29 -07:00
test_f7_key_coverage_push.py test(proxy): phase-4 payload behavior pinning for tier-2/3 key + team management endpoints (#28681) 2026-05-23 12:16:29 -07:00
test_key_aliases.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_key_block_unblock.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_key_budget_limits.py test(proxy): phase-4 payload behavior pinning for tier-2/3 key + team management endpoints (#28681) 2026-05-23 12:16:29 -07:00
test_key_bulk_update.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_key_delete.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_key_generate.py feat(tests): behavior-pinning harness + Key Tier-1 matrix (#28321) 2026-05-20 19:27:44 -07:00
test_key_health.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_key_info.py feat(tests): behavior-pinning harness + Key Tier-1 matrix (#28321) 2026-05-20 19:27:44 -07:00
test_key_info_v2.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_key_list.py chore: litellm oss staging (#30745) 2026-06-18 13:55:35 -07:00
test_key_regenerate.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_key_reset_spend.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_key_service_account_generate.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_key_team_change.py test(proxy): phase-4 payload behavior pinning for tier-2/3 key + team management endpoints (#28681) 2026-05-23 12:16:29 -07:00
test_key_update.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_no_management_imports.py feat(tests): behavior-pinning harness + Key Tier-1 matrix (#28321) 2026-05-20 19:27:44 -07:00
test_route_coverage.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_scratch_teardown.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_smoke.py feat(tests): behavior-pinning harness + Key Tier-1 matrix (#28321) 2026-05-20 19:27:44 -07:00
test_team_available.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_team_block_unblock.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_team_budget_limits.py feat(teams): apply default organization to new teams from default team settings (#35540) 2026-08-03 12:57:12 -07:00
test_team_bulk_member_add.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_team_daily_activity.py feat(proxy): add /team/daily/activity/aggregated and switch the Usage team tab to it (#36562) 2026-08-18 11:29:57 -07:00
test_team_delete.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_team_filter_ui.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_team_info.py test(proxy): phase-4 payload behavior pinning for tier-2/3 key + team management endpoints (#28681) 2026-05-23 12:16:29 -07:00
test_team_key_bulk_update.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_team_list.py test(proxy): behavior-pinning matrix for team management endpoints (#28441) 2026-05-21 16:57:25 -07:00
test_team_list_v2.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_team_member_add.py test(proxy): separate the member_add permission gate from the provisioning gate 2026-08-01 14:39:47 -07:00
test_team_member_delete.py test(proxy): behavior-pinning matrix for team management endpoints (#28441) 2026-05-21 16:57:25 -07:00
test_team_member_info_validation.py test(proxy): separate the member_add permission gate from the provisioning gate 2026-08-01 14:39:47 -07:00
test_team_member_me.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_team_member_update.py test(proxy): behavior-pinning matrix for team management endpoints (#28441) 2026-05-21 16:57:25 -07:00
test_team_metadata_schema.py test: repair three failing suites on litellm_internal_staging 2026-08-04 16:07:02 -07:00
test_team_model.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_team_new.py feat(teams): apply default organization to new teams from default team settings (#35540) 2026-08-03 12:57:12 -07:00
test_team_permissions.py test(proxy): behavior-pinning matrix for tier-2/3 key + team management endpoints (#28620) 2026-05-22 11:24:41 -07:00
test_team_permissions_bulk_update.py test(proxy): phase-4 payload behavior pinning for tier-2/3 key + team management endpoints (#28681) 2026-05-23 12:16:29 -07:00
test_team_update.py fix(proxy): resolve team org from team_id so org admins can update team budgets 2026-07-08 19:10:35 -07:00
test_world_seed.py feat(tests): behavior-pinning harness + Key Tier-1 matrix (#28321) 2026-05-20 19:27:44 -07:00