Phasio Manufacturer Analytics Controller API

Programmatic analytics endpoints for retrieving manufacturer dashboard metrics, funnel performance, revenue, production, customer and material insights.

Operations 7

GET /api/manufacturer/v1/analytics/operator/website-visits Get website visit statistics for the current month #
GET /api/manufacturer/v1/analytics/operator/revenue Get revenue analytics for the current month #
GET /api/manufacturer/v1/analytics/operator/overview Get overview analytics for the current month #
GET /api/manufacturer/v1/analytics/operator/orders/payment-status Get orders by payment status for the current month #
GET /api/manufacturer/v1/analytics/operator/metrics Get time series metrics for the operator #
GET /api/manufacturer/v1/analytics/operator/generated-quotes Get quotes generated in the current month #
GET /api/manufacturer/v1/analytics/dashboard Get dashboard analytics #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/phasio-manufacturer-analytics-controller-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

phasio-manufacturer-analytics-controller-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Phasio Activity Internal Manufacturer Analytics Controller API
  description: This is the API documentation for the Phasio application.
  version: '1.0'
servers:
- url: https://m-api.eu.phas.io
  description: Generated server url
security:
- Phasio API Bearer Token: []
tags:
- name: Manufacturer Analytics Controller
  description: Programmatic analytics endpoints for retrieving manufacturer dashboard metrics, funnel performance, revenue, production, customer and material insights.
paths:
  /api/manufacturer/v1/analytics/operator/website-visits:
    get:
      tags:
      - Manufacturer Analytics Controller
      summary: Get website visit statistics for the current month
      description: Retrieves website traffic and visitor data for the current month
      operationId: getWebsiteVisitsOfCurrentMonth
      responses:
        '200':
          description: Website visit statistics retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebsiteVisitsDto'
        '401':
          description: Unauthorized - missing operator context
  /api/manufacturer/v1/analytics/operator/revenue:
    get:
      tags:
      - Manufacturer Analytics Controller
      summary: Get revenue analytics for the current month
      description: Retrieves revenue data for the current month
      operationId: getRevenueOfCurrentMonth
      responses:
        '200':
          description: Revenue data retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RevenueDto'
        '401':
          description: Unauthorized - missing operator context
  /api/manufacturer/v1/analytics/operator/overview:
    get:
      tags:
      - Manufacturer Analytics Controller
      summary: Get overview analytics for the current month
      description: Retrieves a comprehensive overview of key analytics metrics for the current month
      operationId: getOverviewOfCurrentMonth
      responses:
        '200':
          description: Overview analytics retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnalyticsOverviewDto'
        '401':
          description: Unauthorized - missing operator context
  /api/manufacturer/v1/analytics/operator/orders/payment-status:
    get:
      tags:
      - Manufacturer Analytics Controller
      summary: Get orders by payment status for the current month
      description: Retrieves order information categorized by payment status for the current month
      operationId: getOrdersOfCurrentMonthByPaymentStatus
      responses:
        '200':
          description: Orders by payment status retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdersByPaymentStatusDto'
        '401':
          description: Unauthorized - missing operator context
  /api/manufacturer/v1/analytics/operator/metrics:
    get:
      tags:
      - Manufacturer Analytics Controller
      summary: Get time series metrics for the operator
      description: Retrieves a collection of time-based metrics for the operator
      operationId: getOperatorMetrics
      responses:
        '200':
          description: Operator metrics retrieved successfully
          content:
            application/json: {}
        '401':
          description: Unauthorized - missing operator context
        '429':
          description: Too many requests - per-operator analytics rate limit exceeded
  /api/manufacturer/v1/analytics/operator/generated-quotes:
    get:
      tags:
      - Manufacturer Analytics Controller
      summary: Get quotes generated in the current month
      description: Retrieves data on quotes generated during the current month
      operationId: getGeneratedQuotesOfCurrentMonth
      responses:
        '200':
          description: Quote generation data retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneratedQuotesDto'
        '401':
          description: Unauthorized - missing operator context
  /api/manufacturer/v1/analytics/dashboard:
    get:
      tags:
      - Manufacturer Analytics Controller
      summary: Get dashboard analytics
      description: Returns the manufacturer analytics dashboard in one call, including revenue, funnel, production, customer and material insights. Use this endpoint for reporting dashboards and external BI syncs that need the same aggregates shown in the manufacturer app. The response is scoped to the authenticated operator. Supply a `period` preset or an explicit `from`/`to` range, which wins over `period`. Aggregation is computed at the database level. All period math is in UTC. The `funnel` section returns three stage lists over the quotes-created-in-window cohort - `acquisition` (visits -> sign-ups -> first order), `quoteToOrder` (quote opened -> accepted -> order created) and `fulfillment` (order created -> production started -> production completed -> order completed) - each stage carrying drop-off counts/conversions and median/p95 days from the previous stage, so you can see where flow is lost and where it slows down. Transition times come from the audit trail, so later edits do not rewrite history; order completion is a kanban state and is reported count-only.
      operationId: getDashboard
      parameters:
      - name: period
        in: query
        description: Preset reporting window. Defaults to `last_30_days` when omitted. Ignored when both `from` and `to` are supplied.
        required: false
        schema:
          type: string
          enum:
          - today
          - last_7_days
          - last_30_days
          - last_90_days
          - this_month
          - last_month
          - this_year
          - last_year
          - all_time
        example: last_30_days
      - name: from
        in: query
        description: Explicit reporting window start date in `yyyy-MM-dd` format. Together with `to`, overrides `period`.
        required: false
        schema:
          type: string
          format: date
        example: '2026-01-01'
      - name: to
        in: query
        description: Explicit reporting window end date in `yyyy-MM-dd` format, inclusive. Together with `from`, overrides `period`.
        required: false
        schema:
          type: string
          format: date
        example: '2026-01-31'
      - name: granularity
        in: query
        description: Time-series bucket granularity. Auto-derived from the requested window when omitted.
        required: false
        schema:
          type: string
          enum:
          - day
          - week
          - month
        example: day
      - name: sections
        in: query
        description: Dashboard sections to compute. Repeat the query parameter for multiple sections, e.g. `sections=revenue&sections=funnel`. All sections are returned when omitted.
        required: false
        schema:
          type: string
          enum:
          - revenue
          - funnel
          - production
          - customers
          - materials
        example: revenue
      - name: customerType
        in: query
        description: Optional dimension filter by customer type.
        required: false
        schema:
          type: string
          enum:
          - PRO_FORMA
          - ACCOUNT
        example: ACCOUNT
      - name: source
        in: query
        description: Optional dimension filter by order source.
        required: false
        schema:
          type: string
          enum:
          - INBOUND
          - OUTBOUND
        example: INBOUND
      - name: compare
        in: query
        description: When true, include a compact `previous` block (equal-length prior window) of KPI scalars for period-over-period deltas. Ignored for all_time.
        required: false
        schema:
          type: boolean
          default: false
      - name: includeArchived
        in: query
        description: When true, include archived orders in every count/sum. Defaults to false so the dashboard reflects only live, active orders.
        required: false
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Dashboard analytics retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DashboardAnalyticsDto'
        '400':
          description: Invalid range (e.g. too many buckets, or `to` before `from`)
        '401':
          description: Unauthorized - missing operator context
        '429':
          description: Too many requests - per-operator analytics rate limit exceeded
components:
  schemas:
    CartConversionDto:
      type: object
      description: Cart conversion metrics.
      properties:
        carts:
          type: integer
          format: int64
          description: Carts created in the reporting window.
          example: 96
        converted:
          type: integer
          format: int64
          description: Carts converted into orders.
          example: 34
        abandoned:
          type: integer
          format: int64
          description: Carts not converted into orders.
          example: 62
        conversionRate:
          type: number
          format: double
          description: Cart conversion rate, returned as a ratio from 0 to 1.
          example: '0.354'
      required:
      - abandoned
      - carts
      - conversionRate
      - converted
    FunnelStageDto:
      type: object
      description: One stage in a funnel sequence.
      properties:
        stage:
          type: string
          description: Stable machine-readable stage key.
          example: order_created
        label:
          type: string
          description: Human-readable stage label.
          example: Order created
        count:
          type: integer
          format: int64
          description: Number of records that reached this stage.
          example: 48
        dropOff:
          type: integer
          format: int64
          description: Number of records lost between the previous stage and this stage.
          example: 12
        conversionFromPrevious:
          type: number
          format: double
          description: Conversion from the previous stage, returned as a ratio from 0 to 1.
          example: '0.8'
        conversionFromStart:
          type: number
          format: double
          description: Conversion from the first stage, returned as a ratio from 0 to 1.
          example: '0.4'
        medianDaysFromPrevious:
          type: number
          format: double
          description: Median number of days from the previous stage to this stage.
          example: '2.0'
        p95DaysFromPrevious:
          type: number
          format: double
          description: 95th percentile number of days from the previous stage to this stage.
          example: '7.5'
      required:
      - count
      - label
      - stage
    PreviousTotalsDto:
      type: object
      description: Prior-window KPI totals used for period-over-period comparisons.
      properties:
        from:
          type: string
          format: date
          description: Inclusive start date of the prior comparison window.
          example: '2025-12-01'
        to:
          type: string
          format: date
          description: Inclusive end date of the prior comparison window.
          example: '2025-12-31'
        revenue:
          $ref: '#/components/schemas/PreviousRevenueDto'
          description: Prior-window revenue KPI totals.
        funnel:
          $ref: '#/components/schemas/PreviousFunnelDto'
          description: Prior-window funnel KPI totals.
        customers:
          $ref: '#/components/schemas/PreviousCustomersDto'
          description: Prior-window customer KPI totals.
        production:
          $ref: '#/components/schemas/PreviousProductionDto'
          description: Prior-window production KPI totals.
      required:
      - from
      - to
    RetentionDto:
      type: object
      description: Customer retention metrics.
      properties:
        customersWithOrders:
          type: integer
          format: int64
          description: Customers with at least one order.
          example: 80
        repeatCustomers:
          type: integer
          format: int64
          description: Customers with more than one order.
          example: 22
        repeatRate:
          type: number
          format: double
          description: Repeat-customer rate, returned as a ratio from 0 to 1.
          example: '0.275'
        atRiskCustomers:
          type: integer
          format: int64
          description: Customers considered at risk based on inactivity threshold.
          example: 9
        churnedCustomers:
          type: integer
          format: int64
          description: Customers considered churned based on inactivity threshold.
          example: 4
        atRiskThresholdDays:
          type: integer
          format: int32
          description: Inactivity threshold in days used for at-risk classification.
          example: 90
      required:
      - atRiskCustomers
      - atRiskThresholdDays
      - churnedCustomers
      - customersWithOrders
      - repeatCustomers
      - repeatRate
    RevenueDto:
      type: object
      properties:
        earnedRevenue:
          type: integer
        unearnedRevenue:
          type: integer
        currency:
          type: string
      required:
      - currency
      - earnedRevenue
      - unearnedRevenue
    MaterialsSectionDto:
      type: object
      description: Material and manufacturing-process analytics section.
      properties:
        topMaterials:
          type: array
          description: Most-used materials ranked by requisition and quantity.
          items:
            $ref: '#/components/schemas/MaterialUsageDto'
        topTechnologies:
          type: array
          description: Most-used technologies ranked by requisition and quantity.
          items:
            $ref: '#/components/schemas/TechnologyUsageDto'
        materialProcessMatrix:
          type: array
          description: Revenue grouped by material and technology.
          items:
            $ref: '#/components/schemas/MaterialProcessDto'
        postProcessing:
          type: array
          description: Most-used post-processing options.
          items:
            $ref: '#/components/schemas/PostProcessingUsageDto'
        scrapByMaterial:
          type: array
          description: Scrapped units grouped by material.
          items:
            $ref: '#/components/schemas/ScrapByMaterialDto'
      required:
      - materialProcessMatrix
      - postProcessing
      - scrapByMaterial
      - topMaterials
      - topTechnologies
    PreviousFunnelDto:
      type: object
      description: Prior-window funnel KPI totals.
      properties:
        conversion:
          type: number
          format: double
          description: Prior-window quote-to-order conversion rate, returned as a ratio from 0 to 1.
          example: '0.38'
        completionRate:
          type: number
          format: double
          description: Prior-window fulfillment completion rate, returned as a ratio from 0 to 1.
          example: '0.72'
        medianDaysToCompletion:
          type: number
          format: double
          description: Median number of days from order creation to completion in the prior window.
          example: '6.5'
      required:
      - completionRate
    RevenueBucketDto:
      type: object
      description: Bucketed revenue total for a date and currency.
      properties:
        bucket:
          type: string
          format: date
          description: Start date of the bucket.
          example: '2026-01-01'
        currency:
          type: string
          description: ISO 4217 currency code.
          example: USD
        paid:
          type: number
          description: Paid revenue in this bucket.
          example: '1200.00'
        confirmed:
          type: number
          description: Confirmed but unpaid revenue in this bucket.
          example: '450.00'
        orders:
          type: integer
          format: int64
          description: Order count in this bucket.
          example: 5
      required:
      - bucket
      - confirmed
      - currency
      - orders
      - paid
    RevenueSectionDto:
      type: object
      description: Revenue analytics section.
      properties:
        byCurrency:
          type: array
          description: Revenue totals split by order currency.
          items:
            $ref: '#/components/schemas/CurrencyRevenueDto'
        byBucket:
          type: array
          description: Paid and confirmed revenue grouped by date bucket and currency.
          items:
            $ref: '#/components/schemas/RevenueBucketDto'
        byPaymentStatus:
          type: object
          additionalProperties:
            type: integer
            format: int64
          description: Order counts keyed by payment status name.
          example:
            PAID: 12
            CONFIRMED: 8
      required:
      - byBucket
      - byCurrency
      - byPaymentStatus
    AcquisitionSourceDto:
      type: object
      description: Customer acquisition source metrics.
      properties:
        source:
          type: string
          description: Acquisition source label.
          example: STORE_FRONT
        customers:
          type: integer
          format: int64
          description: Customer count for this source.
          example: 18
        paid:
          type: number
          description: Paid revenue from customers in this source.
          example: '5200.00'
        confirmed:
          type: number
          description: Confirmed but unpaid revenue from customers in this source.
          example: '1400.00'
      required:
      - confirmed
      - customers
      - paid
      - source
    PreviousCustomersDto:
      type: object
      description: Prior-window customer KPI totals.
      properties:
        new:
          type: integer
          format: int64
          description: New customers created in the prior window.
          example: 12
        payingCustomers:
          type: integer
          format: int64
          description: Customers with at least one paid or confirmed order in the prior window.
          example: 31
        avgOrderValue:
          type: number
          description: Average order value for the prior window.
          example: '395.50'
        repeatRate:
          type: number
          format: double
          description: Prior-window repeat-customer rate, returned as a ratio from 0 to 1.
          example: '0.24'
      required:
      - avgOrderValue
      - new
      - payingCustomers
      - repeatRate
    CurrencyRevenueDto:
      type: object
      description: Revenue totals for a single currency.
      properties:
        currency:
          type: string
          description: ISO 4217 currency code.
          example: USD
        total:
          type: number
          description: Total paid, confirmed and outstanding revenue for this currency.
          example: '18850.00'
        paid:
          type: number
          description: Revenue from paid orders.
          example: '12500.00'
        confirmed:
          type: number
          description: Revenue from confirmed but unpaid orders.
          example: '4100.00'
        outstanding:
          type: number
          description: Outstanding revenue not yet paid or confirmed.
          example: '2250.00'
        orders:
          type: integer
          format: int64
          description: Number of orders contributing to this currency total.
          example: 42
      required:
      - confirmed
      - currency
      - orders
      - outstanding
      - paid
      - total
    OrdersByPaymentStatusDto:
      type: object
      properties:
        numberOfOrders:
          type: integer
          format: int32
        numberOfPaidOrders:
          type: integer
          format: int32
        numberOfUnpaidOrders:
          type: integer
          format: int32
      required:
      - numberOfOrders
      - numberOfPaidOrders
      - numberOfUnpaidOrders
    CustomerValueDto:
      type: object
      description: Customer value metrics grouped by currency.
      properties:
        currency:
          type: string
          description: ISO 4217 currency code.
          example: USD
        totalPaid:
          type: number
          description: Total paid revenue.
          example: '25000.00'
        totalConfirmed:
          type: number
          description: Total confirmed but unpaid revenue.
          example: '8000.00'
        payingCustomers:
          type: integer
          format: int64
          description: Customers with paid or confirmed orders.
          example: 31
        orders:
          type: integer
          format: int64
          description: Order count for this currency.
          example: 68
        avgOrderValue:
          type: number
          description: Average order value.
          example: '485.29'
        avgLifetimeValue:
          type: number
          description: Average lifetime value per paying customer.
          example: '1064.52'
      required:
      - avgLifetimeValue
      - avgOrderValue
      - currency
      - orders
      - payingCustomers
      - totalConfirmed
      - totalPaid
    PostProcessingUsageDto:
      type: object
      description: Post-processing usage count.
      properties:
        name:
          type: string
          description: Post-processing option name.
          example: Anodising
        count:
          type: integer
          format: int64
          description: Number of times this option was used.
          example: 14
      required:
      - count
      - name
    TopCustomerDto:
      type: object
      description: Customer revenue ranking row.
      properties:
        customerOrganisationId:
          type: integer
          format: int64
          description: Customer organisation ID.
          example: 123
        name:
          type: string
          description: Customer organisation name.
          example: Acme Manufacturing
        currency:
          type: string
          description: ISO 4217 currency code.
          example: USD
        paid:
          type: number
          description: Paid revenue for this customer.
          example: '8200.00'
        confirmed:
          type: number
          description: Confirmed but unpaid revenue for this customer.
          example: '1500.00'
      required:
      - confirmed
      - currency
      - customerOrganisationId
      - paid
    CountryRevenueDto:
      type: object
      description: Revenue grouped by customer country.
      properties:
        country:
          type: string
          description: ISO country code or country label.
          example: US
        orders:
          type: integer
          format: int64
          description: Order count for this country.
          example: 17
        paid:
          type: number
          description: Paid revenue for this country.
          example: '6200.00'
        confirmed:
          type: number
          description: Confirmed but unpaid revenue for this country.
          example: '2100.00'
      required:
      - confirmed
      - country
      - orders
      - paid
    KanbanStageDto:
      type: object
      description: Current order count for a kanban stage.
      properties:
        name:
          type: string
          description: Kanban column name.
          example: In Production
        sequence:
          type: integer
          format: int32
          description: Kanban column sequence order.
          example: 3
        count:
          type: integer
          format: int64
          description: Orders currently in this column.
          example: 14
      required:
      - count
      - name
      - sequence
    PreviousProductionDto:
      type: object
      description: Prior-window production KPI totals.
      properties:
        openRequisitions:
          type: integer
          format: int64
          description: Open requisitions at the end of the prior window.
          example: 18
        avgLeadTimeDays:
          type: number
          format: double
          description: Average lead time in days for completed production in the prior window.
          example: '5.8'
        onTimePct:
          type: number
          format: double
          description: On-time completion percentage. Currently null until requisition due-date signal is available.
        scrapRate:
          type: number
          format: double
          description: Prior-window scrap rate, returned as a ratio from 0 to 1.
          example: '0.03'
      required:
      - openRequisitions
      - scrapRate
    PreviousRevenueDto:
      type: object
      description: Prior-window revenue KPI totals.
      properties:
        paid:
          type: number
          description: Revenue from paid orders in the prior window.
          example: '12500.00'
        confirmed:
          type: number
          description: Revenue from confirmed but unpaid orders in the prior window.
          example: '4100.00'
        outstanding:
          type: number
          description: Outstanding revenue in the prior window.
          example: '2250.00'
        orders:
          type: integer
          format: int64
          description: Number of orders in the prior window.
          example: 42
      required:
      - confirmed
      - orders
      - outstanding
      - paid
    MaterialProcessDto:
      type: object
      description: Revenue grouped by material and technology.
      properties:
        material:
          type: string
          description: Material name.
          example: Aluminium 6061
        technology:
          type: string
          description: Technology name.
          example: CNC
        requisitions:
          type: integer
          format: int64
          description: Requisitions for this material/technology pair.
          example: 8
        revenue:
          type: number
          description: Revenue for this material/technology pair.
          example: '3200.00'
      required:
      - material
      - requisitions
      - revenue
      - technology
    FunnelSectionDto:
      type: object
      description: Funnel analytics section for quote, order and fulfillment conversion.
      properties:
        quotesGenerated:
          type: integer
          format: int64
          description: Non-draft quotes created in the reporting window. Customer type and source filters apply.
          example: 120
        ordersCreated:
          type: integer
          format: int64
          description: Orders created from the reporting-window quote cohort.
          example: 48
        accepted:
          type: integer
          format: int64
          description: Quotes accepted from the reporting-window quote cohort.
          example: 51
        confirmed:
          type: integer
          format: int64
          description: Orders confirmed by the manufacturer, usually pay-by-PO or invoice outcomes.
          example: 30
        paid:
          type: integer
          format: int64
          description: Orders paid directly by the customer.
          example: 18
        conversion:
          type: number
          format: double
          description: Quote-to-order conversion rate for the cohort, returned as a ratio from 0 to 1.
          example: '0.4'
        acquisition:
          type: array
          description: Acquisition stages from visit to sign-up to first order.
          items:
            $ref: '#/components/schemas/FunnelStageDto'
        quoteToOrder:
          type: array
          description: Combined quote-to-order stage list for the reporting-window quote cohort.
          items:
            $ref: '#/components/schemas/FunnelStageDto'
        quoteToOrderInbound:
          type: array
          description: Inbound/storefront quote-to-order funnel. Present only when no source filter is active.
          items:
            $ref: '#/components/schemas/FunnelStageDto'
        quoteToOrderOutbound:
          type: array
          description: Outbound/manufacturer-sent quote-to-order funnel. Present only when no source filter is active.
          items:
            $ref: '#/components/schemas/FunnelStageDto'
        fulfillment:
          type: array
          description: Fulfillment stages from order creation to production and completion.
          items:
            $ref: '#/components/schemas/FunnelStageDto'
      required:
      - accepted
      - confirmed
      - ordersCreated
      - paid
      - quotesGenerated
    ScrapSummaryDto:
      type: object
      description: Scrap analytics summary.
      properties:
        scrappedUnits:
          type: integer
          format: int64
          description: Total scrapped units in the reporting window.
          example: 7
        producedUnits:
          type: integer
          format: int64
          description: Total produced units in the reporting window.
          example: 240
        scrapRate:
          type: number
          format: double
          description: Scrap rate, returned as a ratio from 0 to 1.
          example: '0.029'
        byOperation:
          type: array
          description: Scrapped units grouped by operation.
          items:
            $ref: '#/components/schemas/ScrapOperationDto'
      required:
      - byOperation
      - producedUnits
      - scrapRate
      - scrappedUnits
    WebsiteVisitsDto:
      type: object
      properties:
        numberOfWebsiteVisits:
          type: integer
          format: int64
      required:
      - numberOfWebsiteVisits
    RangeDto:
      type: object
      description: Resolved analytics reporting window.
      properties:
        period:
          type: string
          description: Resolved period preset. `custom` is returned when explicit `from` and `to` dates are used.
          example: last_30_days
        from:
          type: string
          format: date
          description: Inclusive start date of the resolved reporting window.
          example: '2026-01-01'
        to:
          type: string
          format: date
          description: Inclusive end date of the resolved reporting window.
          example: '2026-01-31'
        granularity:
          type: string
          description: Resolved bucket granularity used by time-series arrays.
          enum:
          - day
          - week
          - month
          example: day
        primaryCurrency:
          type: string
          description: Operator primary currency used as the default dashboard currency.
          example: USD
      required:
      - from
      - granularity
      - period
      - primaryCurrency
      - to
    GeneratedQuotesDto:
      type: object
      properties:
        numberOfGeneratedQuotes:
          type: integer
          format: int64
      required:
      - numberOfGeneratedQuotes
    AnalyticsOverviewDto:
      type: object
      properties:
        earnedRevenue:
          type: integer
        unearnedRevenue:
          type: integer
        currency:
          type: string
        numberOfOrders:
          type: integer
          format: int32
        numberOfPaidOrders:
          type: integer
          format: int32
        numberOfUnpaidOrders:
          type: integer
          format: int32
        numberOfGeneratedQuotes:
          type: integer
          format: int64
        numberOfWebsiteVisits:
          type: integer
          format: int64
      required:
      - currency
      - earnedRevenue
      - numberOfGeneratedQuotes
      - numberOfOrders
      - numberOfPaidOrders
      - numberOfUnpaidOrders
      - numberOfWebsiteVisits
      - unearnedRevenue
    ProductionSectionDto:
      type: object
      description: Production analytics section.
      properties:
        openRequisitions:
          type: integer
          format: int64
          description: Number of open requisitions.
          example: 24
        avgLeadTimeDays:
          type: number
          format: double
          description: Average lead time in days for completed 

# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/phasio/refs/heads/main/openapi/phasio-manufacturer-analytics-controller-api-openapi.yml