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

# Customer activity trend

> Customers bucketed by the month of their last activity, trailing the requested number of months (default 6, max 24). Each point carries the lifetime value those customers represent, the customer count and the churned count, ascending by month.



## OpenAPI

````yaml /reference/openapi.json get /v1/customers/trend
openapi: 3.1.0
info:
  title: Campaign Assistant API
  version: v1
  summary: Campaign drafting over a shared, runtime-validated contract.
  description: >-
    Every endpoint below is described by the shared contract package: the
    request and response schemas served here are the ones the web app validates
    against at runtime.


    Authentication is a bearer access token obtained from `auth.signIn`. Errors
    are always an RFC 9457 problem document. Chat replies can be streamed as
    server-sent events; see `chat.messages.stream`.
  license:
    name: UNLICENSED
    identifier: UNLICENSED
servers:
  - url: http://localhost:4000/api/v1
    description: This deployment
security:
  - bearerAuth: []
tags:
  - name: Authentication
    description: Sign-in, token rotation and sign-out.
  - name: Customers
    description: 'The customer base: records, aggregates and bulk import.'
  - name: Segments
    description: Saved audience definitions and live audience counts.
  - name: Campaigns
    description: Model-assisted campaign drafting and its review workflow.
  - name: Chat
    description: Assistant threads, including server-sent streaming of replies.
paths:
  /v1/customers/trend:
    get:
      tags:
        - Customers
      summary: Customer activity trend
      description: >-
        Customers bucketed by the month of their last activity, trailing the
        requested number of months (default 6, max 24). Each point carries the
        lifetime value those customers represent, the customer count and the
        churned count, ascending by month.
      operationId: customers.activityTrend
      parameters:
        - name: months
          in: query
          required: false
          schema:
            default: 6
            type: integer
            minimum: 3
            maximum: 24
      responses:
        '200':
          description: OK
          headers:
            x-api-version:
              $ref: '#/components/headers/ApiVersion'
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    month:
                      type: string
                      pattern: ^\d{4}-\d{2}$
                    value:
                      type: number
                      minimum: 0
                    customers:
                      type: integer
                      minimum: 0
                      maximum: 9007199254740991
                    churned:
                      type: integer
                      minimum: 0
                      maximum: 9007199254740991
                  required:
                    - month
                    - value
                    - customers
                    - churned
                  additionalProperties: false
        '401':
          description: Unauthorized
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - bearerAuth: []
components:
  headers:
    ApiVersion:
      description: The API version that answered this request.
      schema:
        type: string
        const: v1
        examples:
          - v1
  schemas:
    Problem:
      type: object
      properties:
        type:
          type: string
        title:
          type: string
        status:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        detail:
          type: string
        code:
          type: string
          enum:
            - validation_failed
            - invalid_credentials
            - unauthenticated
            - session_expired
            - forbidden
            - not_found
            - conflict
            - rate_limited
            - llm_unavailable
            - llm_error
            - internal_error
        errors:
          type: object
          propertyNames:
            type: string
          additionalProperties:
            type: array
            items:
              type: string
        traceId:
          type: string
      required:
        - type
        - title
        - status
        - detail
        - code
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Access token issued by `auth.signIn`. Expires; refresh it with
        `auth.refresh`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.