{
  "status": "approved",
  "source_system": "cake",
  "environment": [
    "staging",
    "prod"
  ],
  "sharded": true,
  "shard_schema": "lucos_ro_cake",
  "id": "get_publisher_pixel_report",
  "mcp_tool": "get_publisher_pixel_report",
  "shard_view_prefix": "lucos_ro_pixel_fire",
  "connections": {
    "admin": "cake_admin_ro",
    "shorty": "cake_shorty_ro"
  },
  "objects": [
    "lucos_ro_cake.lucos_ro_pixel_fire_*",
    "Admin.lucos_ro_affiliate_directory"
  ],
  "parameters": {
    "publisher": {
      "type": "string",
      "required": true
    },
    "group_by": {
      "type": "enum",
      "required": false,
      "default": "day",
      "values": [
        "day",
        "campaign"
      ]
    },
    "date_from": {
      "type": "date",
      "required": false
    },
    "date_to": {
      "type": "date",
      "required": false
    },
    "limit": {
      "type": "int",
      "required": false,
      "default": 50
    }
  },
  "constraints": {
    "max_window_days": 31,
    "default_window_days": 7,
    "max_rows": 500,
    "timeout_ms": 60000
  },
  "allow_fields": [
    "date",
    "campaign_id",
    "pixels",
    "processed",
    "not_processed"
  ],
  "deny_fields": [
    "postback_url",
    "postback_url_base",
    "ip",
    "ip_prefix",
    "referrer",
    "referrer_host",
    "user_agent"
  ],
  "post_processing": [
    "Answers members.admedia.com Estimated Pixel Fire Report (reports/validated_report, affiliate_model.php getValidatedReport).",
    "The portal's filter is publisher_id = ? AND scrubbed = 0; the view applies scrubbed = 0 and the tool binds the publisher id.",
    "status 1 = Processed, 0 = Not processed, as the portal labels them.",
    "Counts only. The portal lists each postback with URL, IP and referrer; those columns exist in the view in redacted form but are denied here, because a per-postback listing is not needed to answer how many pixels fired.",
    "A day whose publisher_postback table has no scrubbed column gets no view (older tables) and is reported in shard_coverage.missing rather than counted as zero."
  ],
  "notes": "How many conversion pixels fired for a publisher, by day or campaign. Publisher is mandatory."
}
