AhaSend · JSON Structure

Openapi V2 Message Summary Structure

MessageSummary schema from AhaSend API

Type: object Properties: 23 Required: 19
EmailTransactional EmailDeveloper ToolsSMTPWebhook

MessageSummary is a JSON Structure definition published by AhaSend, describing 23 properties, of which 19 are required. It conforms to the https://json-structure.org/meta/core/v0/# meta-schema.

Properties

object created_at updated_at sent_at delivered_at retain_until direction is_bounce_notification bounce_classification delivery_attempts message_id id subject tags sender recipient status num_attempts click_count open_count reference_message_id domain_id account_id

Meta-schema: https://json-structure.org/meta/core/v0/#

JSON Structure

Raw ↑
{
  "$schema": "https://json-structure.org/meta/core/v0/#",
  "$id": "https://raw.githubusercontent.com/api-evangelist/ahasend/refs/heads/main/json-structure/openapi-v2-message-summary-structure.json",
  "name": "MessageSummary",
  "description": "MessageSummary schema from AhaSend API",
  "type": "object",
  "properties": {
    "object": {
      "type": "string",
      "enum": [
        "message"
      ],
      "description": "Object type identifier",
      "example": "message"
    },
    "created_at": {
      "type": "datetime",
      "description": "When the message was created",
      "example": "2025-03-15T14:30:00Z"
    },
    "updated_at": {
      "type": "datetime",
      "description": "When the message was last updated",
      "example": "2025-03-15T14:30:00Z"
    },
    "sent_at": {
      "type": "datetime",
      "nullable": true,
      "description": "When the message was sent",
      "example": "2025-03-15T14:30:00Z"
    },
    "delivered_at": {
      "type": "datetime",
      "nullable": true,
      "description": "When the message was delivered",
      "example": "2025-03-15T14:30:00Z"
    },
    "retain_until": {
      "type": "datetime",
      "description": "When the message data will be purged",
      "example": "2025-03-15T14:30:00Z"
    },
    "direction": {
      "type": "string",
      "enum": [
        "incoming",
        "outgoing"
      ],
      "description": "Message direction",
      "example": "incoming"
    },
    "is_bounce_notification": {
      "type": "boolean",
      "description": "Whether this is a bounce notification",
      "example": true
    },
    "bounce_classification": {
      "type": "string",
      "description": "Classification of bounce if applicable",
      "example": "example_value"
    },
    "delivery_attempts": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/DeliveryEvent"
      },
      "description": "List of delivery attempts for this message",
      "example": [
        {
          "time": "2025-03-15T14:30:00Z",
          "log": "example_value",
          "status": "example_value"
        }
      ]
    },
    "message_id": {
      "type": "string",
      "description": "Message-ID header value",
      "example": "500123"
    },
    "id": {
      "type": "uuid",
      "description": "API-generated message ID",
      "example": "500123"
    },
    "subject": {
      "type": "string",
      "description": "Message subject",
      "example": "example_value"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Tags associated with the message",
      "example": [
        "example_value"
      ]
    },
    "sender": {
      "type": "string",
      "description": "Sender email address",
      "example": "example_value"
    },
    "recipient": {
      "type": "string",
      "description": "Recipient email address",
      "example": "example_value"
    },
    "status": {
      "type": "string",
      "description": "Current message status",
      "example": "example_value"
    },
    "num_attempts": {
      "type": "int32",
      "description": "Number of delivery attempts",
      "example": 1
    },
    "click_count": {
      "type": "int32",
      "description": "Number of clicks tracked for this message",
      "example": 1
    },
    "open_count": {
      "type": "int32",
      "description": "Number of opens tracked for this message",
      "example": 1
    },
    "reference_message_id": {
      "type": "int64",
      "description": "ID of the original message (for bounce messages)",
      "example": 1
    },
    "domain_id": {
      "type": "uuid",
      "description": "Domain ID this message was sent from",
      "example": "500123"
    },
    "account_id": {
      "type": "uuid",
      "description": "Account ID this message belongs to",
      "example": "500123"
    }
  },
  "required": [
    "object",
    "created_at",
    "updated_at",
    "retain_until",
    "direction",
    "is_bounce_notification",
    "delivery_attempts",
    "message_id",
    "id",
    "subject",
    "tags",
    "sender",
    "recipient",
    "status",
    "num_attempts",
    "click_count",
    "open_count",
    "domain_id",
    "account_id"
  ]
}

Work with this as data

Every JSON Structure 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 json structure

4 MCP tools reach this
  • find_json_structuresBrowse and filter every JSON Structure in the catalog.
  • 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 JSON Structure
curl "https://apis.io/api/v1/json-structures/openapi-v2-message-summary-structure"
All json structure
curl "https://apis.io/api/v1/json-structures?limit=25"

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

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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