Compresr Dashboard API

The Dashboard API from Compresr — 1 operation(s) for dashboard.

OpenAPI Specification

compresr-dashboard-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Compresr Platform Admin Dashboard API
  version: 1.0.0
tags:
- name: Dashboard
paths:
  /api/dashboard/stats:
    get:
      tags:
      - Dashboard
      summary: Get Dashboard Stats
      description: 'Get dashboard statistics for authenticated user.


        Returns comprehensive dashboard data including:

        - Current balance

        - Usage statistics

        - API key summaries

        - Recent activity


        Query params:

        - skip_cache: Force fresh data from database, bypassing Redis cache'
      operationId: get_dashboard_stats_api_dashboard_stats_get
      security:
      - HTTPBearer: []
      parameters:
      - name: skip_cache
        in: query
        required: false
        schema:
          type: boolean
          description: Force refresh, bypassing cache
          default: false
          title: Skip Cache
        description: Force refresh, bypassing cache
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DashboardStatsResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal Server Error
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    AccountType:
      type: string
      enum:
      - user
      - enterprise
      title: AccountType
      description: 'Account type: determines billing mode and allowed API key scopes.


        - USER: Prepaid wallet billing, can create user-scope keys

        - ENTERPRISE: Postpaid invoice billing, can create enterprise-scope keys'
    DashboardStatsResponse:
      properties:
        success:
          type: boolean
          title: Success
          default: true
        message:
          anyOf:
          - type: string
          - type: 'null'
          title: Message
        data:
          anyOf:
          - $ref: '#/components/schemas/DashboardStats'
          - type: 'null'
      type: object
      title: DashboardStatsResponse
    EnterpriseKeyUsage:
      properties:
        api_key_id:
          type: string
          title: Api Key Id
          description: API key UUID
        api_key_name:
          type: string
          title: Api Key Name
          description: API key name
          default: Enterprise Key
        scope:
          $ref: '#/components/schemas/APIKeyScope'
          description: Key scope
          default: enterprise
        billing_mode:
          type: string
          const: postpaid
          title: Billing Mode
          description: Billing mode (postpaid)
          default: postpaid
        current_balance_usd:
          type: number
          title: Current Balance Usd
          description: Current balance/debt (USD)
          default: 0.0
        current_month_usage_usd:
          type: number
          title: Current Month Usage Usd
          description: Current month usage (USD)
          default: 0.0
        credit_limit_usd:
          type: number
          title: Credit Limit Usd
          description: Credit limit (USD)
          default: 10000.0
        credit_remaining_usd:
          type: number
          title: Credit Remaining Usd
          description: Remaining credit (USD)
          default: 0.0
        monthly_budget_usd:
          anyOf:
          - type: number
          - type: 'null'
          title: Monthly Budget Usd
          description: Monthly spending budget
        budget_utilization_percent:
          anyOf:
          - type: number
          - type: 'null'
          title: Budget Utilization Percent
          description: Budget usage percentage
        is_over_budget:
          type: boolean
          title: Is Over Budget
          description: Whether over budget
          default: false
        total_requests:
          type: integer
          title: Total Requests
          description: Total requests (lifetime)
          default: 0
        current_month_requests:
          type: integer
          title: Current Month Requests
          description: Requests in the current billing month
          default: 0
        last_used_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Last Used At
          description: Last used timestamp
      type: object
      required:
      - api_key_id
      title: EnterpriseKeyUsage
      description: 'Usage summary for enterprise (postpaid) API keys.


        Enterprise keys use a different billing model:

        - Prepaid (regular): User pays upfront, balance deducted from user_wallets

        - Postpaid (enterprise): Usage accumulated on key, invoiced monthly


        For postpaid keys, current_balance_usd is negative (representing debt/usage).

        Monthly usage resets at the start of each month and is stored in history for invoicing.'
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    TierName:
      type: string
      enum:
      - tier1
      - tier2
      - tier3
      - tier4
      - tier5
      title: TierName
    ApiKeyUsageSummary:
      properties:
        api_key_id:
          type: string
          title: Api Key Id
          description: API key UUID
        api_key_name:
          type: string
          title: Api Key Name
          description: API key name
        requests_this_month:
          type: integer
          title: Requests This Month
          description: Requests made this month (resets monthly)
          default: 0
        money_used_this_month:
          type: number
          title: Money Used This Month
          description: Money used via this key this month (USD)
          default: 0.0
        budget_limit:
          anyOf:
          - type: number
          - type: 'null'
          title: Budget Limit
          description: Budget limit for this key (USD)
        budget_remaining:
          anyOf:
          - type: number
          - type: 'null'
          title: Budget Remaining
          description: Budget remaining for this key (USD)
      type: object
      required:
      - api_key_id
      - api_key_name
      title: ApiKeyUsageSummary
      description: 'Summary of usage for a single API key (dashboard view).


        Note: requests_this_month uses current_month_requests from DB which resets monthly.'
    ErrorResponse:
      properties:
        success:
          type: boolean
          title: Success
          default: false
        error:
          type: string
          title: Error
        code:
          type: string
          title: Code
        detail:
          anyOf:
          - type: string
          - type: 'null'
          title: Detail
        retry_after:
          anyOf:
          - type: integer
          - type: 'null'
          title: Retry After
        field:
          anyOf:
          - type: string
          - type: 'null'
          title: Field
      type: object
      required:
      - error
      - code
      title: ErrorResponse
    DashboardStats:
      properties:
        total_uploaded_money:
          type: number
          title: Total Uploaded Money
          description: Total money uploaded to account (USD)
          default: 0.0
        total_used_money:
          type: number
          title: Total Used Money
          description: Total money consumed via API usage (USD)
          default: 0.0
        wallet_balance_usd:
          type: number
          title: Wallet Balance Usd
          description: Wallet balance from Stripe deposits (USD)
          default: 0.0
        total_available_usd:
          type: number
          title: Total Available Usd
          description: Total spendable balance (wallet_balance_usd)
          default: 0.0
        usage_percentage:
          type: number
          title: Usage Percentage
          description: Percentage of uploaded money used
          default: 0.0
        monthly_budget:
          anyOf:
          - type: number
          - type: 'null'
          title: Monthly Budget
          description: User's monthly budget limit (USD, None for admin/unlimited)
        budget_used_this_month:
          type: number
          title: Budget Used This Month
          description: Money used this month (USD)
          default: 0.0
        budget_remaining_this_month:
          anyOf:
          - type: number
          - type: 'null'
          title: Budget Remaining This Month
          description: Budget remaining this month (USD, None for unlimited)
        budget_percentage:
          type: number
          title: Budget Percentage
          description: Percentage of monthly budget used
          default: 0.0
        spend_this_month:
          type: number
          title: Spend This Month
          description: Total money spent this month (USD)
          default: 0.0
        total_api_calls:
          type: integer
          title: Total Api Calls
          description: Total API calls (all time)
          default: 0
        api_calls_this_month:
          type: integer
          title: Api Calls This Month
          description: API calls in current month
          default: 0
        active_api_keys:
          type: integer
          title: Active Api Keys
          description: Number of active API keys
          default: 0
        cloud_calls_this_month:
          type: integer
          title: Cloud Calls This Month
          description: API calls this month sourced from cloud SDK / direct API
          default: 0
        onprem_calls_this_month:
          type: integer
          title: Onprem Calls This Month
          description: API calls this month sourced from on-prem instances
          default: 0
        days_until_month_reset:
          type: integer
          title: Days Until Month Reset
          description: Days until current month ends
          default: 0
        current_month:
          type: string
          title: Current Month
          description: Current month (YYYY-MM format)
          default: ''
        avg_compression_ratio:
          type: number
          title: Avg Compression Ratio
          description: Average compression ratio (last 30 days)
          default: 0.0
        total_tokens_saved:
          type: integer
          title: Total Tokens Saved
          description: Total tokens saved (all time)
          default: 0
        tokens_saved_this_month:
          type: integer
          title: Tokens Saved This Month
          description: Tokens saved this month
          default: 0
        total_input_tokens_this_month:
          type: integer
          title: Total Input Tokens This Month
          description: Total input tokens processed this month
          default: 0
        tier:
          $ref: '#/components/schemas/TierName'
          description: Current rate-limit tier (tier1, tier2, etc.)
          default: tier1
        account_type:
          $ref: '#/components/schemas/AccountType'
          description: 'Account type: user (prepaid wallet) or enterprise (postpaid invoicing)'
          default: user
        is_admin:
          type: boolean
          title: Is Admin
          description: Whether user is admin (infinite usage)
          default: false
        account_created_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Account Created At
          description: Account creation date
        api_key_usage:
          items:
            $ref: '#/components/schemas/ApiKeyUsageSummary'
          type: array
          title: Api Key Usage
          description: Usage breakdown per API key
        enterprise_keys:
          items:
            $ref: '#/components/schemas/EnterpriseKeyUsage'
          type: array
          title: Enterprise Keys
          description: Usage for enterprise (postpaid) API keys
        has_unpaid_invoices:
          type: boolean
          title: Has Unpaid Invoices
          description: Whether user has any unpaid enterprise invoices
          default: false
        unpaid_invoice_amount_usd:
          type: number
          title: Unpaid Invoice Amount Usd
          description: Total amount of unpaid enterprise invoices (USD)
          default: 0.0
        top_models:
          items:
            $ref: '#/components/schemas/ModelStatsItem'
          type: array
          title: Top Models
          description: Top 3 most used models with usage stats
      type: object
      title: DashboardStats
    ModelStatsItem:
      properties:
        model:
          type: string
          title: Model
          description: Model name
        requests:
          type: integer
          title: Requests
          description: Number of requests
          default: 0
        input_tokens:
          type: integer
          title: Input Tokens
          description: Original input tokens
          default: 0
        compressed_input_tokens:
          type: integer
          title: Compressed Input Tokens
          description: Compressed input tokens
          default: 0
        output_tokens:
          type: integer
          title: Output Tokens
          description: Output tokens
          default: 0
        cost_usd:
          type: number
          title: Cost Usd
          description: Cost in USD
          default: 0.0
      type: object
      required:
      - model
      title: ModelStatsItem
    APIKeyScope:
      type: string
      enum:
      - demo
      - user
      - enterprise
      title: APIKeyScope
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer