Insforge Messages API

Inspect realtime message history and delivery stats.

OpenAPI Specification

insforge-messages-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Insforge AI Admin Messages API
  version: 1.0.0
  description: Model Gateway helper APIs for OpenRouter key provisioning, model discovery, and deprecated compatibility proxy routes
tags:
- name: Messages
  description: Inspect realtime message history and delivery stats.
paths:
  /api/realtime/messages:
    get:
      summary: List Messages
      description: Retrieve message history with optional filters
      tags:
      - Messages
      security:
      - bearerAuth: []
      - apiKey: []
      parameters:
      - name: channelId
        in: query
        required: false
        schema:
          type: string
          format: uuid
        description: Filter messages by channel ID
        example: 550e8400-e29b-41d4-a716-446655440000
      - name: eventName
        in: query
        required: false
        schema:
          type: string
        description: Filter messages by event name
        example: order.created
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
        description: Maximum number of messages to return
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
        description: Number of messages to skip
      responses:
        '200':
          description: List of messages
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Message'
              example:
              - id: 660e8400-e29b-41d4-a716-446655440000
                eventName: order.created
                channelId: 550e8400-e29b-41d4-a716-446655440000
                channelName: order:123
                payload:
                  orderId: '123'
                  status: pending
                senderType: user
                senderId: 770e8400-e29b-41d4-a716-446655440000
                wsAudienceCount: 5
                whAudienceCount: 1
                whDeliveredCount: 1
                createdAt: '2024-01-15T10:30:00Z'
        '400':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: INVALID_INPUT
                message: 'channelId: Invalid uuid'
                statusCode: 400
    delete:
      summary: Clear Messages
      description: Permanently delete all stored realtime messages
      tags:
      - Messages
      security:
      - bearerAuth: []
      - apiKey: []
      responses:
        '200':
          description: Messages cleared
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClearMessagesResponse'
              example:
                deleted: 42
  /api/realtime/messages/stats:
    get:
      summary: Get Message Statistics
      description: Retrieve aggregated statistics about messages
      tags:
      - Messages
      security:
      - bearerAuth: []
      - apiKey: []
      parameters:
      - name: channelId
        in: query
        required: false
        schema:
          type: string
          format: uuid
        description: Filter stats by channel ID
        example: 550e8400-e29b-41d4-a716-446655440000
      - name: since
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Filter stats since this timestamp
        example: '2024-01-01T00:00:00Z'
      responses:
        '200':
          description: Message statistics
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageStats'
              example:
                totalMessages: 1250
                whDeliveryRate: 0.98
                topEvents:
                - eventName: order.created
                  count: 450
                - eventName: order.updated
                  count: 380
                - eventName: order.completed
                  count: 220
                retentionDays: null
        '400':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: INVALID_INPUT
                message: 'since: Invalid datetime'
                statusCode: 400
components:
  schemas:
    ErrorResponse:
      type: object
      required:
      - error
      - message
      - statusCode
      properties:
        error:
          type: string
          description: Error code for programmatic handling
          example: INVALID_INPUT
        message:
          type: string
          description: Human-readable error message
          example: Invalid request
        statusCode:
          type: integer
          description: HTTP status code
          example: 400
        nextActions:
          type: string
          description: Suggested action to resolve the error
          example: Check your request parameters
    ClearMessagesResponse:
      type: object
      required:
      - deleted
      properties:
        deleted:
          type: integer
          minimum: 0
          description: Number of realtime messages deleted
          example: 42
    Message:
      type: object
      required:
      - id
      - eventName
      - channelName
      - payload
      - senderType
      - wsAudienceCount
      - whAudienceCount
      - whDeliveredCount
      - createdAt
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the message
          example: 660e8400-e29b-41d4-a716-446655440000
        eventName:
          type: string
          minLength: 1
          description: Name of the event
          example: order.created
        channelId:
          type: string
          format: uuid
          nullable: true
          description: ID of the channel this message belongs to
          example: 550e8400-e29b-41d4-a716-446655440000
        channelName:
          type: string
          minLength: 1
          description: Resolved channel name (instance of the pattern)
          example: order:123
        payload:
          type: object
          additionalProperties: true
          description: Message payload data
          example:
            orderId: '123'
            status: pending
        senderType:
          type: string
          enum:
          - system
          - user
          description: Type of sender that published the message
          example: user
        senderId:
          type: string
          format: uuid
          nullable: true
          description: ID of the user who sent the message (null for system messages)
          example: 770e8400-e29b-41d4-a716-446655440000
        wsAudienceCount:
          type: integer
          minimum: 0
          description: Number of WebSocket clients who received the message
          example: 5
        whAudienceCount:
          type: integer
          minimum: 0
          description: Number of webhooks that should receive the message
          example: 1
        whDeliveredCount:
          type: integer
          minimum: 0
          description: Number of webhooks that successfully received the message
          example: 1
        createdAt:
          type: string
          format: date-time
          description: Timestamp when the message was created
          example: '2024-01-15T10:30:00Z'
    MessageStats:
      type: object
      required:
      - totalMessages
      - whDeliveryRate
      - topEvents
      - retentionDays
      properties:
        totalMessages:
          type: integer
          minimum: 0
          description: Total number of messages
          example: 1250
        whDeliveryRate:
          type: number
          minimum: 0
          maximum: 1
          description: Webhook delivery success rate (0-1)
          example: 0.98
        topEvents:
          type: array
          description: Most frequent event types
          items:
            type: object
            required:
            - eventName
            - count
            properties:
              eventName:
                type: string
                description: Name of the event
                example: order.created
              count:
                type: integer
                minimum: 0
                description: Number of occurrences
                example: 450
        retentionDays:
          type: integer
          nullable: true
          minimum: 1
          description: Number of days messages are retained. Null means messages are kept indefinitely.
          example: null
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT