PostHog · Schema
EvaluationReport
A/B TestingAnalyticsFeature FlagsOpen SourceProduct AnalyticsSession Recording
Properties
| Name | Type | Description |
|---|---|---|
| id | string | |
| evaluation | string | UUID of the evaluation this report config belongs to. |
| frequency | object | How report generation is triggered. 'every_n' fires once N new evaluation results have accumulated (subject to cooldown_minutes and daily_run_cap). 'scheduled' fires on the cadence defined by rrule + |
| rrule | string | RFC 5545 recurrence rule string (e.g. 'FREQ=WEEKLY;BYDAY=MO'). Must not contain DTSTART — the anchor is set via starts_at. Required when frequency is 'scheduled'; ignored otherwise. |
| starts_at | string | Anchor datetime for the rrule (ISO 8601, UTC — must end in 'Z'). Local-time interpretation is controlled by timezone_name. Required when frequency is 'scheduled'; ignored otherwise. |
| timezone_name | string | IANA timezone name used to expand the rrule in local time so e.g. '9am' stays at 9am across DST transitions (e.g. 'America/New_York'). Defaults to 'UTC'. |
| next_delivery_date | string | |
| delivery_targets | object | List of delivery targets. Each entry is either {type: 'email', value: '[email protected]'} or {type: 'slack', integration_id: |
| max_sample_size | integer | Maximum number of evaluation runs included in each report. Defaults to 200. |
| enabled | boolean | Whether report delivery is active. Disabled configs do not fire. |
| deleted | boolean | Set to true to soft-delete this report config. |
| last_delivered_at | string | |
| report_prompt_guidance | string | Optional custom instructions appended to the AI report prompt to steer focus, scope, or section choices without modifying the base prompt. |
| trigger_threshold | integer | Number of new evaluation results that triggers a report (every_n mode only). Min 10, max 10000. Defaults to 100. Required when frequency is 'every_n'. |
| cooldown_minutes | integer | Minimum minutes between count-triggered reports to prevent spam (every_n mode only). Min 60, max 1440 (24 hours). Defaults to 60. |
| daily_run_cap | integer | Maximum count-triggered report runs per calendar day (UTC). Min 1, max 24 (one per cooldown window). Defaults to 10. |
| created_by | integer | |
| created_at | string |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "#/components/schemas/EvaluationReport",
"title": "EvaluationReport",
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"readOnly": true
},
"evaluation": {
"type": "string",
"format": "uuid",
"description": "UUID of the evaluation this report config belongs to."
},
"frequency": {
"allOf": [
{
"$ref": "#/components/schemas/EvaluationReportFrequencyEnum"
}
],
"description": "How report generation is triggered. 'every_n' fires once N new evaluation results have accumulated (subject to cooldown_minutes and daily_run_cap). 'scheduled' fires on the cadence defined by rrule + starts_at + timezone_name.\n\n* `scheduled` - Scheduled\n* `every_n` - Every N"
},
"rrule": {
"type": "string",
"description": "RFC 5545 recurrence rule string (e.g. 'FREQ=WEEKLY;BYDAY=MO'). Must not contain DTSTART \u2014 the anchor is set via starts_at. Required when frequency is 'scheduled'; ignored otherwise."
},
"starts_at": {
"type": "string",
"format": "date-time",
"nullable": true,
"description": "Anchor datetime for the rrule (ISO 8601, UTC \u2014 must end in 'Z'). Local-time interpretation is controlled by timezone_name. Required when frequency is 'scheduled'; ignored otherwise."
},
"timezone_name": {
"type": "string",
"description": "IANA timezone name used to expand the rrule in local time so e.g. '9am' stays at 9am across DST transitions (e.g. 'America/New_York'). Defaults to 'UTC'.",
"maxLength": 64
},
"next_delivery_date": {
"type": "string",
"format": "date-time",
"readOnly": true,
"nullable": true
},
"delivery_targets": {
"description": "List of delivery targets. Each entry is either {type: 'email', value: '[email protected]'} or {type: 'slack', integration_id: <int>, channel: '<channel>'}. Slack integration_id must belong to this team."
},
"max_sample_size": {
"type": "integer",
"maximum": 2147483647,
"minimum": -2147483648,
"description": "Maximum number of evaluation runs included in each report. Defaults to 200."
},
"enabled": {
"type": "boolean",
"description": "Whether report delivery is active. Disabled configs do not fire."
},
"deleted": {
"type": "boolean",
"description": "Set to true to soft-delete this report config."
},
"last_delivered_at": {
"type": "string",
"format": "date-time",
"readOnly": true,
"nullable": true
},
"report_prompt_guidance": {
"type": "string",
"description": "Optional custom instructions appended to the AI report prompt to steer focus, scope, or section choices without modifying the base prompt."
},
"trigger_threshold": {
"type": "integer",
"maximum": 10000,
"minimum": 10,
"nullable": true,
"description": "Number of new evaluation results that triggers a report (every_n mode only). Min 10, max 10000. Defaults to 100. Required when frequency is 'every_n'."
},
"cooldown_minutes": {
"type": "integer",
"maximum": 1440,
"minimum": 60,
"description": "Minimum minutes between count-triggered reports to prevent spam (every_n mode only). Min 60, max 1440 (24 hours). Defaults to 60."
},
"daily_run_cap": {
"type": "integer",
"maximum": 24,
"minimum": 1,
"description": "Maximum count-triggered report runs per calendar day (UTC). Min 1, max 24 (one per cooldown window). Defaults to 10."
},
"created_by": {
"type": "integer",
"readOnly": true,
"nullable": true
},
"created_at": {
"type": "string",
"format": "date-time",
"readOnly": true
}
},
"required": [
"created_at",
"created_by",
"evaluation",
"id",
"last_delivered_at",
"next_delivery_date"
]
}