{
  "type": "object",
  "description": "Definition of an analytics report request",
  "properties": {
    "rsid": {
      "type": "string",
      "description": "The report suite ID to run the report against",
      "example": "examplersid"
    },
    "locale": {
      "type": "string",
      "description": "Locale for response labels",
      "example": "en_US"
    },
    "globalFilters": {
      "type": "array",
      "description": "List of global filters applied to the entire report",
      "example": [],
      "items": {
        "type": "object",
        "description": "A filter applied to a report",
        "properties": {
          "type": {
            "type": "string",
            "description": "Filter type",
            "example": "dateRange",
            "enum": [
              "dateRange",
              "breakdown",
              "segment"
            ]
          },
          "dateRange": {
            "type": "string",
            "description": "ISO 8601 date range (e.g. 2024-01-01T00:00:00/2024-01-31T23:59:59)",
            "example": "example_value"
          },
          "segmentId": {
            "type": "string",
            "description": "ID of an existing segment to apply as a filter",
            "example": "500123"
          },
          "dimension": {
            "type": "string",
            "description": "Dimension for breakdown filter",
            "example": "example_value"
          },
          "itemId": {
            "type": "string",
            "description": "Dimension item ID for breakdown filter",
            "example": "500123"
          }
        },
        "required": [
          "type"
        ]
      }
    },
    "metricContainer": {
      "type": "object",
      "description": "Container defining the metrics to include in a report",
      "properties": {
        "metrics": {
          "type": "array",
          "example": [],
          "items": {
            "type": "object",
            "description": "A metric included in a report request",
            "properties": {
              "id": {
                "type": "string",
                "description": "The metric ID (e.g. metrics/visits)",
                "example": "abc123"
              },
              "columnId": {
                "type": "string",
                "description": "Column identifier for this metric in the response",
                "example": "500123"
              },
              "filters": {
                "type": "array",
                "description": "Metric-level filter IDs referencing metricFilters",
                "example": [],
                "items": {
                  "type": "string"
                }
              },
              "sort": {
                "type": "string",
                "description": "Sort direction for this metric",
                "example": "ASC",
                "enum": [
                  "ASC",
                  "DESC"
                ]
              }
            },
            "required": [
              "id"
            ]
          }
        },
        "metricFilters": {
          "type": "array",
          "description": "Filters applied at the metric level",
          "example": [],
          "items": {
            "type": "object",
            "description": "A filter applied to a report",
            "properties": {
              "type": {
                "type": "string",
                "description": "Filter type",
                "example": "dateRange",
                "enum": [
                  "dateRange",
                  "breakdown",
                  "segment"
                ]
              },
              "dateRange": {
                "type": "string",
                "description": "ISO 8601 date range (e.g. 2024-01-01T00:00:00/2024-01-31T23:59:59)",
                "example": "example_value"
              },
              "segmentId": {
                "type": "string",
                "description": "ID of an existing segment to apply as a filter",
                "example": "500123"
              },
              "dimension": {
                "type": "string",
                "description": "Dimension for breakdown filter",
                "example": "example_value"
              },
              "itemId": {
                "type": "string",
                "description": "Dimension item ID for breakdown filter",
                "example": "500123"
              }
            },
            "required": [
              "type"
            ]
          }
        }
      },
      "required": [
        "metrics"
      ]
    },
    "dimension": {
      "type": "string",
      "description": "The primary dimension ID for the report (e.g. variables/page)",
      "example": "variables/page"
    },
    "settings": {
      "type": "object",
      "description": "Settings that control report output behavior",
      "properties": {
        "limit": {
          "type": "integer",
          "description": "Maximum number of rows to return",
          "example": 10
        },
        "page": {
          "type": "integer",
          "description": "Page number (zero-indexed)",
          "example": 10
        },
        "nonesBehavior": {
          "type": "string",
          "description": "How to handle None values",
          "example": "exclude-nones",
          "enum": [
            "exclude-nones",
            "return-nones"
          ]
        }
      }
    },
    "statistics": {
      "type": "object",
      "description": "Statistical settings for the report",
      "example": "example_value"
    }
  },
  "required": [
    "rsid",
    "globalFilters",
    "metricContainer"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "ReportRequest"
}