> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cardapioweb.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Resumo de pedidos agrupado

> Retorna as mesmas métricas do resumo de pedidos, quebradas por uma dimensão: quantidade de pedidos, soma dos valores totais e valor médio do pedido.

O parâmetro `group_by` é obrigatório. Período e filtros seguem as mesmas regras de `GET /orders/summary`.

`group_by=hour` não é permitido quando `date_field=scheduled_date` (agendamento, campo `schedule`).

Agrupamentos temporais usam o fuso horário do estabelecimento. Cada grupo traz `key` (identificador), `label` (rótulo de exibição) e as métricas. Ao agrupar por `driver_id`, `key` contém o ID público do entregador e `label` contém o nome. Pedidos sem entregador usam `key: null` e `label: "Não informado"`.

**Autenticação:** OAuth 2.0 com escopo `orders`. Não aceita API Key.

**Rate limit:** 5 requisições por minuto.

### Valores de `group_by`

Temporais: `hour`, `day`, `day_of_week`, `week`, `month`.

Categóricos, com os mesmos nomes do pedido: `order_type`, `order_timing`, `sales_channel`, `customer_origin`, `payment_method_id`, `driver_id`, `status`.



## OpenAPI

````yaml /reference/api-pedidos.json get /api/partner/v1/orders/summary/grouped
openapi: 3.1.0
info:
  title: API Pedidos
  version: '1.0'
  contact:
    email: integracao@cardapioweb.com
    name: Cardápio Web
    url: https://cardapioweb.com
  description: >-
    A API de pedidos acompanha pedidos de um estabelecimento, permite alterações
    de status e consulta resumos e rankings de vendas.


    ## Autenticação


    Apps da CW App Store usam `Authorization: Bearer <access_token>` (OAuth 2.0)
    com escopo `orders`. A associação e a remoção de entregadores também exigem
    o escopo `drivers`.


    Integrações legadas usam `X-API-KEY`. A criação de pedidos (`POST /orders`)
    também exige `X-PARTNER-KEY`. Os endpoints de resumo, rankings de vendas e
    gestão do entregador exigem OAuth 2.0 e não aceitam API Key.


    Consulte a documentação em /autenticacao/modelos-de-autenticacao.


    ## Rate Limits


    Histórico de pedidos (`GET /orders/history`), resumos e rankings de vendas
    (`GET /orders/summary`, `GET /orders/summary/*`): **5 requisições por minuto
    por endpoint**. Demais endpoints: **300 requisições a cada 3 minutos**.
    Consulte /sobre-a-api#rate-limits.
servers:
  - url: https://integracao.sandbox.cardapioweb.com
    description: Sandbox
  - url: https://integracao.cardapioweb.com
    description: Produção
security:
  - bearerAuth: []
  - apiKey: []
paths:
  /api/partner/v1/orders/summary/grouped:
    get:
      summary: Resumo de pedidos agrupado
      description: >-
        Retorna as mesmas métricas do resumo de pedidos, quebradas por uma
        dimensão: quantidade de pedidos, soma dos valores totais e valor médio
        do pedido.


        O parâmetro `group_by` é obrigatório. Período e filtros seguem as mesmas
        regras de `GET /orders/summary`.


        `group_by=hour` não é permitido quando `date_field=scheduled_date`
        (agendamento, campo `schedule`).


        Agrupamentos temporais usam o fuso horário do estabelecimento. Cada
        grupo traz `key` (identificador), `label` (rótulo de exibição) e as
        métricas. Ao agrupar por `driver_id`, `key` contém o ID público do
        entregador e `label` contém o nome. Pedidos sem entregador usam `key:
        null` e `label: "Não informado"`.


        **Autenticação:** OAuth 2.0 com escopo `orders`. Não aceita API Key.


        **Rate limit:** 5 requisições por minuto.


        ### Valores de `group_by`


        Temporais: `hour`, `day`, `day_of_week`, `week`, `month`.


        Categóricos, com os mesmos nomes do pedido: `order_type`,
        `order_timing`, `sales_channel`, `customer_origin`, `payment_method_id`,
        `driver_id`, `status`.
      operationId: orders-summary-grouped
      parameters:
        - name: start_date
          in: query
          required: true
          schema:
            type: string
            example: '2025-06-01T00:00:00-03:00'
          description: >-
            Início do período. Com `date_field=created_at`, use datetime ISO
            8601 com offset. Com `date_field=scheduled_date` (agendamento, campo
            `schedule`), use `YYYY-MM-DD`.
        - name: end_date
          in: query
          required: true
          schema:
            type: string
            example: '2025-06-30T23:59:59-03:00'
          description: >-
            Fim do período. O intervalo em relação a `start_date` não pode
            ultrapassar 6 meses.
        - name: date_field
          in: query
          required: false
          schema:
            type: string
            enum:
              - created_at
              - scheduled_date
            default: created_at
          description: >-
            Data do pedido usada no recorte. `created_at` é a data de criação.
            `scheduled_date` é a data de agendamento (`schedule`).
        - name: group_by
          in: query
          required: true
          schema:
            type: string
            enum:
              - hour
              - day
              - day_of_week
              - week
              - month
              - order_type
              - order_timing
              - sales_channel
              - customer_origin
              - payment_method_id
              - driver_id
              - status
          description: Dimensão usada para agrupar as métricas. Envie um único valor.
        - name: filters
          in: query
          required: false
          style: deepObject
          explode: true
          schema:
            type: object
            additionalProperties: true
          description: >-
            Filtros no formato `filters[campo_operador]`. Mesmas regras de `GET
            /orders/summary`.
      responses:
        '200':
          description: Métricas agrupadas retornadas com sucesso.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdersSummaryGrouped'
              example:
                group_by: order_type
                groups:
                  - key: delivery
                    label: Delivery
                    total_order_count: 1
                    total_revenue: 60
                    average_order_value: 60
                  - key: takeout
                    label: Retirada
                    total_order_count: 1
                    total_revenue: 40
                    average_order_value: 40
        '400':
          description: Algum parâmetro enviado é inválido.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
              examples:
                group_by ausente:
                  value:
                    code: 4000
                    message: Parâmetros inválidos.
                    details: group_by é obrigatório.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
        - bearerAuth: []
components:
  schemas:
    OrdersSummaryGrouped:
      type: object
      title: OrdersSummaryGrouped
      description: Métricas de pedidos agrupadas por uma dimensão.
      required:
        - group_by
        - groups
      properties:
        group_by:
          type: string
          description: Dimensão usada no agrupamento.
        groups:
          type: array
          description: Grupos retornados para a dimensão informada.
          items:
            $ref: '#/components/schemas/OrdersSummaryGroup'
    BadRequest:
      type: object
      examples:
        - code: 4000
          message: Parâmetros inválidos
          details: updated_since não é uma data válida
        - code: 4000
          message: Parâmetros inválidos
          details: status contém valores inválidos
      properties:
        code:
          type: integer
          description: Código interno de identificação do erro.
        message:
          type: string
          description: Mensagem de resumo do erro.
        details:
          type: string
          description: Informações adicionais sobre o erro.
      required:
        - code
        - message
      title: BadRequest
      x-internal: false
    OrdersSummaryGroup:
      type: object
      title: OrdersSummaryGroup
      description: Métricas de um grupo do resumo de pedidos.
      required:
        - key
        - label
        - total_order_count
        - total_revenue
        - average_order_value
      properties:
        key:
          type:
            - string
            - 'null'
          description: >-
            Identificador do grupo. Pode ser nulo quando a dimensão não tem
            valor, por exemplo em `customer_origin`.
        label:
          type: string
          description: Rótulo de exibição do grupo.
        total_order_count:
          type: integer
          description: Quantidade de pedidos no grupo.
        total_revenue:
          type: number
          description: Soma dos valores totais (`total`) do grupo.
        average_order_value:
          type: number
          description: Valor médio do pedido no grupo.
    Unauthorized:
      type: object
      x-stoplight:
        id: 5cdf37ldhxqd8
      examples:
        - code: 4010
          message: Token inválido
      title: Unauthorized
      x-internal: false
      properties:
        code:
          type: integer
          description: Código interno de identificação do erro.
        message:
          type: string
          description: Mensagem de resumo do erro.
      required:
        - code
        - message
  responses:
    Unauthorized:
      description: >-
        Não autorizado. Token OAuth inválido ou ausente, ou X-API-KEY
        inválido/ausente no modelo legado.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Unauthorized'
    TooManyRequests:
      description: >-
        Muitas requisições foram feitas em um curto período. Verifique nossas
        regras de rate limit.
      content: {}
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: OAuth2
      description: >-
        Access token OAuth 2.0 de app instalado na CW App Store. Escopo
        principal: orders. A gestão do entregador também exige drivers.
    apiKey:
      name: X-API-KEY
      type: apiKey
      in: header
      description: >-
        Token específico do estabelecimento integrado. Disponível na seção de
        integrações do Portal do estabelecimento.

````