{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/PurchaseRequest",
  "title": "PurchaseRequest",
  "type": "object",
  "description": "Request body for tracking a purchase event",
  "required": [
    "user",
    "items",
    "total"
  ],
  "properties": {
    "user": {
      "type": "object",
      "description": "The user who made the purchase",
      "properties": {
        "email": {
          "type": "string",
          "format": "email",
          "description": "Email address of the user"
        },
        "userId": {
          "type": "string",
          "description": "UserId of the user"
        },
        "dataFields": {
          "type": "object",
          "description": "Additional user data fields to update",
          "additionalProperties": true
        }
      }
    },
    "items": {
      "type": "array",
      "description": "Array of items purchased",
      "items": {
        "$ref": "#/components/schemas/CommerceItem"
      }
    },
    "total": {
      "type": "number",
      "description": "Total value of the purchase"
    },
    "createdAt": {
      "type": "integer",
      "description": "Unix timestamp of the purchase"
    },
    "dataFields": {
      "type": "object",
      "description": "Additional purchase data fields",
      "additionalProperties": true
    },
    "campaignId": {
      "type": "integer",
      "description": "Campaign ID to attribute the purchase to"
    },
    "templateId": {
      "type": "integer",
      "description": "Template ID to attribute the purchase to"
    }
  }
}