{
    "openapi": "3.1.0",
    "info": {
        "title": "LogZuno API",
        "version": "1.0.0",
        "description": "The LogZuno API: send events (ingestion) and read and manage projects (REST).\n\n**Ingestion** (`\/v1\/log`, `\/v1\/batch`, `\/v1\/identity`, `\/v1\/group`, `\/v1\/insight`, `\/v1\/track`) takes a project API key with the *ingest* scope and is payload-compatible with Palzin Track.\n\n**REST** takes either a project API key (*read*, or *admin* to also write) for one project, or a personal access token (*read*, *write*) that acts as you, within your role in each organisation. Get a token from `POST \/v1\/auth\/token` or create one under Settings \u2192 API tokens.\n\nSend credentials as `Authorization: Bearer <key or token>`. Requests are limited per key or token (HTTP 429 with `Retry-After`). History covers the last 90 days."
    },
    "servers": [
        {
            "url": "https:\/\/platform.logzuno.app\/v1"
        }
    ],
    "security": [
        {
            "http": []
        }
    ],
    "paths": {
        "\/me": {
            "get": {
                "operationId": "me",
                "description": "The signed-in user with their organisations (and role) and projects,\nor, for a project API key, its project.",
                "summary": "The caller",
                "tags": [
                    "Account",
                    "Me"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "user": {
                                            "type": [
                                                "object",
                                                "null"
                                            ],
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "email": {
                                                    "type": "string"
                                                }
                                            },
                                            "required": [
                                                "id",
                                                "name",
                                                "email"
                                            ]
                                        },
                                        "organizations": {
                                            "anyOf": [
                                                {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    },
                                                    "minItems": 0,
                                                    "maxItems": 0
                                                },
                                                {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "id": {
                                                                "type": "string"
                                                            },
                                                            "name": {
                                                                "type": "string"
                                                            },
                                                            "slug": {
                                                                "type": "string"
                                                            },
                                                            "role": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "id",
                                                            "name",
                                                            "slug",
                                                            "role"
                                                        ]
                                                    }
                                                }
                                            ]
                                        },
                                        "projects": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "name": {
                                                        "type": "string"
                                                    },
                                                    "slug": {
                                                        "type": "string"
                                                    },
                                                    "timezone": {
                                                        "type": "string"
                                                    },
                                                    "paused": {
                                                        "type": "boolean"
                                                    },
                                                    "firstEventAt": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "organization": {
                                                        "type": "object",
                                                        "properties": {
                                                            "id": {
                                                                "type": "integer"
                                                            },
                                                            "name": {
                                                                "type": "string"
                                                            },
                                                            "slug": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "id",
                                                            "name",
                                                            "slug"
                                                        ]
                                                    }
                                                },
                                                "required": [
                                                    "id",
                                                    "name",
                                                    "slug",
                                                    "timezone",
                                                    "paused",
                                                    "firstEventAt",
                                                    "organization"
                                                ]
                                            }
                                        },
                                        "scopes": {
                                            "type": "array",
                                            "items": {}
                                        }
                                    },
                                    "required": [
                                        "user",
                                        "organizations",
                                        "projects",
                                        "scopes"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/projects\/{project}\/destinations": {
            "get": {
                "operationId": "destinations.index",
                "description": "Where alerts can be sent (names and types only; settings stay in the app).",
                "summary": "List destinations",
                "tags": [
                    "Alerts",
                    "Alert"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "name": {
                                                        "type": "string"
                                                    },
                                                    "type": {
                                                        "type": "string"
                                                    },
                                                    "ready": {
                                                        "type": "boolean"
                                                    }
                                                },
                                                "required": [
                                                    "id",
                                                    "name",
                                                    "type",
                                                    "ready"
                                                ]
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/projects\/{project}\/alerts": {
            "get": {
                "operationId": "alerts.index",
                "summary": "List alerts",
                "tags": [
                    "Alerts",
                    "Alert"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "name": {
                                                        "type": "string"
                                                    },
                                                    "type": {
                                                        "type": "string"
                                                    },
                                                    "settings": {
                                                        "type": "object",
                                                        "additionalProperties": {}
                                                    },
                                                    "enabled": {
                                                        "type": "boolean"
                                                    },
                                                    "mutedUntil": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "conditionMet": {
                                                        "type": "boolean"
                                                    },
                                                    "lastTriggeredAt": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "nextRunAt": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "destinations": {
                                                        "type": "array",
                                                        "items": {
                                                            "type": "object",
                                                            "properties": {
                                                                "id": {
                                                                    "type": "integer"
                                                                },
                                                                "name": {
                                                                    "type": "string"
                                                                },
                                                                "type": {
                                                                    "type": "string"
                                                                }
                                                            },
                                                            "required": [
                                                                "id",
                                                                "name",
                                                                "type"
                                                            ]
                                                        }
                                                    }
                                                },
                                                "required": [
                                                    "id",
                                                    "name",
                                                    "type",
                                                    "settings",
                                                    "enabled",
                                                    "mutedUntil",
                                                    "conditionMet",
                                                    "lastTriggeredAt",
                                                    "nextRunAt",
                                                    "destinations"
                                                ]
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            },
            "post": {
                "operationId": "alerts.store",
                "description": "`type` event: settings {event, filters, message}; threshold: {spec (a\nnumber chart), operator (above, below, increase_by, decrease_by),\nvalue, frequency (hourly, daily), hour}; digest: {spec, frequency\n(daily, weekly, monthly), hour}.",
                "summary": "Create an alert",
                "tags": [
                    "Alerts",
                    "Alert"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "maxLength": 200
                                    },
                                    "type": {
                                        "type": "string",
                                        "enum": [
                                            "event",
                                            "threshold",
                                            "digest",
                                            "ai"
                                        ]
                                    },
                                    "settings": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "minItems": 1
                                    },
                                    "destination_ids": {
                                        "type": "array",
                                        "items": {
                                            "type": "integer"
                                        },
                                        "maxItems": 20
                                    }
                                },
                                "required": [
                                    "name",
                                    "type",
                                    "settings",
                                    "destination_ids"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string"
                                                },
                                                "settings": {
                                                    "type": "object",
                                                    "additionalProperties": {}
                                                },
                                                "enabled": {
                                                    "type": "boolean"
                                                },
                                                "mutedUntil": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "conditionMet": {
                                                    "type": "boolean"
                                                },
                                                "lastTriggeredAt": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "nextRunAt": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "destinations": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "id": {
                                                                "type": "integer"
                                                            },
                                                            "name": {
                                                                "type": "string"
                                                            },
                                                            "type": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "id",
                                                            "name",
                                                            "type"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "id",
                                                "name",
                                                "type",
                                                "settings",
                                                "enabled",
                                                "mutedUntil",
                                                "conditionMet",
                                                "lastTriggeredAt",
                                                "nextRunAt",
                                                "destinations"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/projects\/{project}\/alerts\/{alert}": {
            "put": {
                "operationId": "alerts.update",
                "summary": "Update an alert",
                "tags": [
                    "Alerts",
                    "Alert"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "alert",
                        "in": "path",
                        "required": true,
                        "description": "The alert ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "maxLength": 200
                                    },
                                    "settings": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "destination_ids": {
                                        "type": "array",
                                        "items": {
                                            "type": "integer"
                                        },
                                        "maxItems": 20
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string"
                                                },
                                                "settings": {
                                                    "type": "object",
                                                    "additionalProperties": {}
                                                },
                                                "enabled": {
                                                    "type": "boolean"
                                                },
                                                "mutedUntil": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "conditionMet": {
                                                    "type": "boolean"
                                                },
                                                "lastTriggeredAt": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "nextRunAt": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "destinations": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "id": {
                                                                "type": "integer"
                                                            },
                                                            "name": {
                                                                "type": "string"
                                                            },
                                                            "type": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "id",
                                                            "name",
                                                            "type"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "id",
                                                "name",
                                                "type",
                                                "settings",
                                                "enabled",
                                                "mutedUntil",
                                                "conditionMet",
                                                "lastTriggeredAt",
                                                "nextRunAt",
                                                "destinations"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            },
            "delete": {
                "operationId": "alerts.destroy",
                "summary": "Delete an alert",
                "tags": [
                    "Alerts",
                    "Alert"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "alert",
                        "in": "path",
                        "required": true,
                        "description": "The alert ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/projects\/{project}\/alerts\/{alert}\/snooze": {
            "post": {
                "operationId": "alerts.snooze",
                "description": "For `hours` (1, 8, 24 or 168), or without `hours` to unsnooze.",
                "summary": "Snooze an alert",
                "tags": [
                    "Alerts",
                    "Alert"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "alert",
                        "in": "path",
                        "required": true,
                        "description": "The alert ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "hours": {
                                        "type": [
                                            "integer",
                                            "null"
                                        ],
                                        "enum": [
                                            "1",
                                            "8",
                                            "24",
                                            "168",
                                            null
                                        ]
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string"
                                                },
                                                "settings": {
                                                    "type": "object",
                                                    "additionalProperties": {}
                                                },
                                                "enabled": {
                                                    "type": "boolean"
                                                },
                                                "mutedUntil": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "conditionMet": {
                                                    "type": "boolean"
                                                },
                                                "lastTriggeredAt": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "nextRunAt": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "destinations": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "id": {
                                                                "type": "integer"
                                                            },
                                                            "name": {
                                                                "type": "string"
                                                            },
                                                            "type": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "id",
                                                            "name",
                                                            "type"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "id",
                                                "name",
                                                "type",
                                                "settings",
                                                "enabled",
                                                "mutedUntil",
                                                "conditionMet",
                                                "lastTriggeredAt",
                                                "nextRunAt",
                                                "destinations"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/projects\/{project}\/alerts\/{alert}\/toggle": {
            "post": {
                "operationId": "alerts.toggle",
                "summary": "Turn an alert on or off",
                "tags": [
                    "Alerts",
                    "Alert"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "alert",
                        "in": "path",
                        "required": true,
                        "description": "The alert ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "enabled": {
                                        "type": "boolean"
                                    }
                                },
                                "required": [
                                    "enabled"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string"
                                                },
                                                "settings": {
                                                    "type": "object",
                                                    "additionalProperties": {}
                                                },
                                                "enabled": {
                                                    "type": "boolean"
                                                },
                                                "mutedUntil": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "conditionMet": {
                                                    "type": "boolean"
                                                },
                                                "lastTriggeredAt": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "nextRunAt": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "destinations": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "id": {
                                                                "type": "integer"
                                                            },
                                                            "name": {
                                                                "type": "string"
                                                            },
                                                            "type": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "id",
                                                            "name",
                                                            "type"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "id",
                                                "name",
                                                "type",
                                                "settings",
                                                "enabled",
                                                "mutedUntil",
                                                "conditionMet",
                                                "lastTriggeredAt",
                                                "nextRunAt",
                                                "destinations"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/projects\/{project}\/ask": {
            "post": {
                "operationId": "ask",
                "description": "A question in plain language becomes a chart, which is run; the\nanswer carries the chart spec, its result and an explanation.",
                "summary": "Ask a question",
                "tags": [
                    "Ask LogZuno",
                    "Ask"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "question": {
                                        "type": "string",
                                        "maxLength": 1000
                                    }
                                },
                                "required": [
                                    "question"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "503": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "anyOf": [
                                                {
                                                    "type": "object",
                                                    "properties": {
                                                        "answerable": {
                                                            "type": "boolean"
                                                        },
                                                        "explanation": {
                                                            "type": "string"
                                                        },
                                                        "spec": {
                                                            "type": "array",
                                                            "items": {}
                                                        },
                                                        "result": {
                                                            "type": "object",
                                                            "additionalProperties": {}
                                                        }
                                                    },
                                                    "required": [
                                                        "answerable",
                                                        "explanation",
                                                        "spec",
                                                        "result"
                                                    ]
                                                },
                                                {
                                                    "type": "object",
                                                    "properties": {
                                                        "answerable": {
                                                            "type": "boolean"
                                                        },
                                                        "explanation": {
                                                            "type": "string"
                                                        },
                                                        "spec": {
                                                            "type": "null"
                                                        },
                                                        "result": {
                                                            "type": "null"
                                                        }
                                                    },
                                                    "required": [
                                                        "answerable",
                                                        "explanation",
                                                        "spec",
                                                        "result"
                                                    ]
                                                }
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/auth\/token": {
            "post": {
                "operationId": "auth.token",
                "description": "Exchanges an email and password (and the two-factor code, when turned\non) for a personal access token with the read and write scopes, as the\nmobile app does. Send it as `Authorization: Bearer <token>`.",
                "summary": "Sign in",
                "tags": [
                    "Authentication",
                    "Auth"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "email": {
                                        "type": "string",
                                        "format": "email",
                                        "maxLength": 255
                                    },
                                    "password": {
                                        "type": "string",
                                        "maxLength": 255
                                    },
                                    "device_name": {
                                        "type": "string",
                                        "description": "A name for this sign-in, shown in the user's token list, such as \"Ann's iPhone\".",
                                        "maxLength": 100
                                    },
                                    "code": {
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "The authenticator code or a recovery code, when two-factor authentication is on.",
                                        "maxLength": 64
                                    }
                                },
                                "required": [
                                    "email",
                                    "password",
                                    "device_name"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "token": {
                                            "type": "string"
                                        },
                                        "tokenType": {
                                            "type": "string",
                                            "const": "Bearer"
                                        },
                                        "expiresAt": {
                                            "type": [
                                                "string",
                                                "null"
                                            ]
                                        },
                                        "user": {
                                            "type": "object",
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "email": {
                                                    "type": "string"
                                                }
                                            },
                                            "required": [
                                                "id",
                                                "name",
                                                "email"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "token",
                                        "tokenType",
                                        "expiresAt",
                                        "user"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                },
                "security": []
            },
            "delete": {
                "operationId": "auth.revoke",
                "description": "Revokes the token used for this request.",
                "summary": "Sign out",
                "tags": [
                    "Authentication",
                    "Auth"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "const": "Signed out."
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "An error",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Error overview.",
                                            "examples": [
                                                "Project API keys are revoked in the app."
                                            ]
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/projects\/{project}\/charts\/run": {
            "post": {
                "operationId": "charts.run",
                "description": "Runs any chart spec (trends, number, table, users, frequency,\nfunnel, retention) and returns its result with a written summary.",
                "summary": "Run a chart",
                "tags": [
                    "Charts",
                    "Chart"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "spec": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "minItems": 1
                                    }
                                },
                                "required": [
                                    "spec"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": {}
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/projects\/{project}\/charts": {
            "get": {
                "operationId": "charts.index",
                "summary": "List saved charts",
                "tags": [
                    "Charts",
                    "Chart"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "name": {
                                                        "type": "string"
                                                    },
                                                    "description": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "spec": {
                                                        "type": "object",
                                                        "additionalProperties": {}
                                                    },
                                                    "createdAt": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "updatedAt": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    }
                                                },
                                                "required": [
                                                    "id",
                                                    "name",
                                                    "description",
                                                    "spec",
                                                    "createdAt",
                                                    "updatedAt"
                                                ]
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            },
            "post": {
                "operationId": "charts.store",
                "summary": "Save a chart",
                "tags": [
                    "Charts",
                    "Chart"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "maxLength": 200
                                    },
                                    "description": {
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "maxLength": 2000
                                    },
                                    "spec": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "minItems": 1
                                    }
                                },
                                "required": [
                                    "name",
                                    "spec"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "description": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "spec": {
                                                    "type": "object",
                                                    "additionalProperties": {}
                                                },
                                                "createdAt": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "updatedAt": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "id",
                                                "name",
                                                "description",
                                                "spec",
                                                "createdAt",
                                                "updatedAt"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/projects\/{project}\/charts\/{chart}": {
            "get": {
                "operationId": "charts.show",
                "description": "With `run=1`, also its current result.",
                "summary": "Get a saved chart",
                "tags": [
                    "Charts",
                    "Chart"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "chart",
                        "in": "path",
                        "required": true,
                        "description": "The chart ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "description": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "spec": {
                                                    "type": "object",
                                                    "additionalProperties": {}
                                                },
                                                "createdAt": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "updatedAt": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "result": {
                                                    "type": "object",
                                                    "additionalProperties": {}
                                                }
                                            },
                                            "required": [
                                                "id",
                                                "name",
                                                "description",
                                                "spec",
                                                "createdAt",
                                                "updatedAt",
                                                "result"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            },
            "put": {
                "operationId": "charts.update",
                "summary": "Update a saved chart",
                "tags": [
                    "Charts",
                    "Chart"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "chart",
                        "in": "path",
                        "required": true,
                        "description": "The chart ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "maxLength": 200
                                    },
                                    "description": {
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "maxLength": 2000
                                    },
                                    "spec": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "description": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "spec": {
                                                    "type": "object",
                                                    "additionalProperties": {}
                                                },
                                                "createdAt": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "updatedAt": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "id",
                                                "name",
                                                "description",
                                                "spec",
                                                "createdAt",
                                                "updatedAt"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            },
            "delete": {
                "operationId": "charts.destroy",
                "summary": "Delete a saved chart",
                "tags": [
                    "Charts",
                    "Chart"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "chart",
                        "in": "path",
                        "required": true,
                        "description": "The chart ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/projects\/{project}\/dashboards": {
            "get": {
                "operationId": "dashboards.index",
                "summary": "List dashboards",
                "tags": [
                    "Dashboards",
                    "Dashboard"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "name": {
                                                        "type": "string"
                                                    },
                                                    "description": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "template": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "tiles": {
                                                        "type": "integer"
                                                    },
                                                    "updatedAt": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    }
                                                },
                                                "required": [
                                                    "id",
                                                    "name",
                                                    "description",
                                                    "template",
                                                    "tiles",
                                                    "updatedAt"
                                                ]
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/projects\/{project}\/dashboards\/{dashboard}": {
            "get": {
                "operationId": "dashboards.show",
                "description": "The dashboard's own date range, filters and refresh interval, and its\ntiles with their grid positions (12 columns).",
                "summary": "Get a dashboard",
                "tags": [
                    "Dashboards",
                    "Dashboard"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "dashboard",
                        "in": "path",
                        "required": true,
                        "description": "The dashboard ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "description": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "dateRange": {
                                                    "type": [
                                                        "object",
                                                        "null"
                                                    ],
                                                    "additionalProperties": {
                                                        "type": "string"
                                                    }
                                                },
                                                "filters": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "additionalProperties": {}
                                                    }
                                                },
                                                "refreshSeconds": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "tiles": {
                                                    "type": "array",
                                                    "items": {}
                                                }
                                            },
                                            "required": [
                                                "id",
                                                "name",
                                                "description",
                                                "dateRange",
                                                "filters",
                                                "refreshSeconds",
                                                "tiles"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/projects\/{project}\/dashboards\/{dashboard}\/tiles\/{tile}": {
            "get": {
                "operationId": "dashboards.tile",
                "description": "The tile's chart result (with the dashboard's range and filters,\nor the ones given here), a insight with history, or nothing for a note.",
                "summary": "A tile's data",
                "tags": [
                    "Dashboards",
                    "Dashboard"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "dashboard",
                        "in": "path",
                        "required": true,
                        "description": "The dashboard ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "tile",
                        "in": "path",
                        "required": true,
                        "description": "The tile ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "date_range[]",
                        "in": "query",
                        "schema": {
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "filters[]",
                        "in": "query",
                        "schema": {
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "anyOf": [
                                                {
                                                    "type": "object",
                                                    "properties": {
                                                        "error": {}
                                                    },
                                                    "required": [
                                                        "error"
                                                    ]
                                                },
                                                {
                                                    "type": "object",
                                                    "additionalProperties": {}
                                                },
                                                {
                                                    "type": "object",
                                                    "properties": {
                                                        "error": {
                                                            "type": "string",
                                                            "const": "This chart was deleted."
                                                        }
                                                    },
                                                    "required": [
                                                        "error"
                                                    ]
                                                },
                                                {
                                                    "type": "object",
                                                    "properties": {
                                                        "kind": {
                                                            "type": "string",
                                                            "const": "insight"
                                                        },
                                                        "title": {
                                                            "type": "string"
                                                        },
                                                        "value": {
                                                            "type": "string"
                                                        },
                                                        "prefix": {
                                                            "type": [
                                                                "string",
                                                                "null"
                                                            ]
                                                        },
                                                        "suffix": {
                                                            "type": [
                                                                "string",
                                                                "null"
                                                            ]
                                                        },
                                                        "color": {
                                                            "type": [
                                                                "string",
                                                                "null"
                                                            ]
                                                        },
                                                        "icon": {
                                                            "type": [
                                                                "string",
                                                                "null"
                                                            ]
                                                        },
                                                        "updatedAt": {
                                                            "type": [
                                                                "string",
                                                                "null"
                                                            ]
                                                        },
                                                        "history": {
                                                            "type": "array",
                                                            "items": {}
                                                        }
                                                    },
                                                    "required": [
                                                        "kind",
                                                        "title",
                                                        "value",
                                                        "prefix",
                                                        "suffix",
                                                        "color",
                                                        "icon",
                                                        "updatedAt",
                                                        "history"
                                                    ]
                                                },
                                                {
                                                    "type": "object",
                                                    "properties": {
                                                        "error": {
                                                            "type": "string",
                                                            "const": "This insight was deleted."
                                                        }
                                                    },
                                                    "required": [
                                                        "error"
                                                    ]
                                                },
                                                {
                                                    "type": "object",
                                                    "properties": {
                                                        "kind": {
                                                            "type": "string",
                                                            "const": "text"
                                                        }
                                                    },
                                                    "required": [
                                                        "kind"
                                                    ]
                                                }
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/devices": {
            "get": {
                "operationId": "devices.index",
                "summary": "List my devices",
                "tags": [
                    "Devices",
                    "Device"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "platform": {
                                                        "type": "string"
                                                    },
                                                    "name": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "lastSeenAt": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    }
                                                },
                                                "required": [
                                                    "id",
                                                    "platform",
                                                    "name",
                                                    "lastSeenAt"
                                                ]
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "operationId": "devices.store",
                "description": "The LogZuno app calls this after signing in, with its Firebase Cloud\nMessaging registration token or installation id.",
                "summary": "Register a device for push notifications",
                "tags": [
                    "Devices",
                    "Device"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "platform": {
                                        "type": "string",
                                        "enum": [
                                            "ios",
                                            "android"
                                        ]
                                    },
                                    "token": {
                                        "type": "string",
                                        "maxLength": 500
                                    },
                                    "token_type": {
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "\"token\" (an FCM registration token) or \"fid\" (a Firebase installation id).",
                                        "enum": [
                                            "token",
                                            "fid",
                                            null
                                        ]
                                    },
                                    "name": {
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "maxLength": 200
                                    }
                                },
                                "required": [
                                    "platform",
                                    "token"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "platform": {
                                                    "type": "string"
                                                },
                                                "name": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "id",
                                                "platform",
                                                "name"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/devices\/{device}": {
            "delete": {
                "operationId": "devices.destroy",
                "summary": "Remove a device",
                "tags": [
                    "Devices",
                    "Device"
                ],
                "parameters": [
                    {
                        "name": "device",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No content"
                    }
                }
            }
        },
        "\/projects\/{project}\/notification-settings": {
            "get": {
                "operationId": "notification-settings.show",
                "description": "Whether events sent with notify: true push to me, and the channels I\nmuted (channels muted for everyone never push).",
                "summary": "My push settings for a project",
                "tags": [
                    "Devices",
                    "NotificationSettings"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "pushEvents": {
                                                    "type": "boolean"
                                                },
                                                "mutedChannels": {
                                                    "type": "array",
                                                    "items": {}
                                                },
                                                "channels": {
                                                    "type": "array",
                                                    "description": "Channels muted for everyone (in project settings) never push.",
                                                    "items": {}
                                                }
                                            },
                                            "required": [
                                                "pushEvents",
                                                "mutedChannels",
                                                "channels"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "An error",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Error overview.",
                                            "examples": [
                                                "Push settings belong to users; use a personal access token."
                                            ]
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            },
            "put": {
                "operationId": "notification-settings.update",
                "summary": "Change my push settings for a project",
                "tags": [
                    "Devices",
                    "NotificationSettings"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "push_events": {
                                        "type": "boolean"
                                    },
                                    "muted_channels": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "maxLength": 200
                                        },
                                        "maxItems": 500
                                    }
                                },
                                "required": [
                                    "push_events",
                                    "muted_channels"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "pushEvents": {
                                                    "type": "boolean"
                                                },
                                                "mutedChannels": {
                                                    "type": "array",
                                                    "items": {}
                                                },
                                                "channels": {
                                                    "type": "array",
                                                    "description": "Channels muted for everyone (in project settings) never push.",
                                                    "items": {}
                                                }
                                            },
                                            "required": [
                                                "pushEvents",
                                                "mutedChannels",
                                                "channels"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "An error",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Error overview.",
                                            "examples": [
                                                "Push settings belong to users; use a personal access token."
                                            ]
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/projects\/{project}\/events": {
            "get": {
                "operationId": "events.index",
                "description": "Newest first, 50 per page, from the last 90 days. Pass `next` back as\n`before` for the following page.",
                "summary": "List events",
                "tags": [
                    "Events",
                    "Event"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "channel",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "maxLength": 200
                        }
                    },
                    {
                        "name": "event",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "maxLength": 200
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "maxLength": 255
                        }
                    },
                    {
                        "name": "group_id",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "maxLength": 255
                        }
                    },
                    {
                        "name": "properties[]",
                        "in": "query",
                        "description": "Property filters: [{key, op (eq, neq, contains, not_contains, gt, lt, set, not_set), value}].",
                        "schema": {
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "string"
                            },
                            "maxItems": 10
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "format": "date-time"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "format": "date-time"
                        }
                    },
                    {
                        "name": "before",
                        "in": "query",
                        "description": "The `next` cursor of the previous page.",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "maxLength": 100
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {}
                                        },
                                        "next": {
                                            "type": [
                                                "string",
                                                "null"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "next"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/projects\/{project}\/events\/{insertId}": {
            "get": {
                "operationId": "events.show",
                "summary": "Get an event",
                "tags": [
                    "Events",
                    "Event"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "insertId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": [
                                                "object",
                                                "null"
                                            ],
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "insertId": {
                                                    "type": "string"
                                                },
                                                "timestamp": {
                                                    "type": "string"
                                                },
                                                "event": {
                                                    "type": "string"
                                                },
                                                "channel": {
                                                    "type": "string"
                                                },
                                                "userId": {
                                                    "type": "string"
                                                },
                                                "groupId": {
                                                    "type": "string"
                                                },
                                                "description": {
                                                    "type": "string"
                                                },
                                                "icon": {
                                                    "type": "string"
                                                },
                                                "notify": {
                                                    "type": "boolean"
                                                },
                                                "properties": {},
                                                "cursor": {
                                                    "type": "string"
                                                }
                                            },
                                            "required": [
                                                "id",
                                                "insertId",
                                                "timestamp",
                                                "event",
                                                "channel",
                                                "userId",
                                                "groupId",
                                                "description",
                                                "icon",
                                                "notify",
                                                "properties",
                                                "cursor"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/log": {
            "post": {
                "operationId": "v1.log",
                "summary": "POST \/v1\/log: one event",
                "tags": [
                    "Ingest"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/batch": {
            "post": {
                "operationId": "v1.batch",
                "summary": "POST \/v1\/batch: up to 100 events in one request (counts once against the rate limit)",
                "tags": [
                    "Ingest"
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "events": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/identity": {
            "post": {
                "operationId": "v1.identity",
                "summary": "POST \/v1\/identity: set user properties (and optionally group membership)",
                "tags": [
                    "Ingest"
                ],
                "responses": {
                    "202": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "const": "Identity published successfully."
                                        },
                                        "type": {
                                            "type": "string",
                                            "const": "success"
                                        }
                                    },
                                    "required": [
                                        "message",
                                        "type"
                                    ]
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "type": {
                                            "type": "string",
                                            "const": "error"
                                        },
                                        "reason": {
                                            "type": "string",
                                            "const": "rate_limited"
                                        },
                                        "retry_after": {
                                            "type": [
                                                "integer",
                                                "null"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "message",
                                        "type",
                                        "reason",
                                        "retry_after"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/group": {
            "post": {
                "operationId": "v1.group",
                "summary": "POST \/v1\/group: set group (account) traits and optionally add a member",
                "tags": [
                    "Ingest"
                ],
                "responses": {
                    "202": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "const": "Group published successfully."
                                        },
                                        "type": {
                                            "type": "string",
                                            "const": "success"
                                        }
                                    },
                                    "required": [
                                        "message",
                                        "type"
                                    ]
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "type": {
                                            "type": "string",
                                            "const": "error"
                                        },
                                        "reason": {
                                            "type": "string",
                                            "const": "rate_limited"
                                        },
                                        "retry_after": {
                                            "type": [
                                                "integer",
                                                "null"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "message",
                                        "type",
                                        "reason",
                                        "retry_after"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/insight": {
            "post": {
                "operationId": "v1.insight",
                "summary": "POST \/v1\/insight: set, increment or decrement a insight. Written\nimmediately (one row) so increments are atomic",
                "tags": [
                    "Ingest"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "const": "Insight published successfully."
                                        },
                                        "type": {
                                            "type": "string",
                                            "const": "success"
                                        },
                                        "value": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message",
                                        "type",
                                        "value"
                                    ]
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "type": {
                                            "type": "string",
                                            "const": "error"
                                        },
                                        "reason": {
                                            "type": "string",
                                            "const": "rate_limited"
                                        },
                                        "retry_after": {
                                            "type": [
                                                "integer",
                                                "null"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "message",
                                        "type",
                                        "reason",
                                        "retry_after"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/track": {
            "get": {
                "operationId": "v1.track",
                "description": "Automated views (bots, headless or webdriver browsers) are kept,\nlabelled, and not counted toward the quota; reports leave them out\nof the people counts.",
                "summary": "GET|POST \/v1\/track: a pageview from the browser SDK, or (with\n\"engaged\") the SDK reporting real input on the page",
                "tags": [
                    "Ingest"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/hits": {
            "post": {
                "operationId": "v1.hits",
                "summary": "POST \/v1\/hits: up to 100 page requests seen by the customer's server\nor CDN (AI assistants and crawlers run no JavaScript). Needs a server\nkey. Each request is classified and its crawler verified here, while\nthe client IP is at hand; the IP is never stored. Requests that are\nnot pages, robots.txt, llms.txt or sitemaps are ignored",
                "tags": [
                    "Ingest"
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "hits": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "type": "string"
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "message": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string",
                                                    "const": "error"
                                                },
                                                "reason": {
                                                    "type": "string",
                                                    "const": "hit_quota_exceeded"
                                                },
                                                "accepted": {
                                                    "type": "integer"
                                                },
                                                "ignored": {
                                                    "type": "integer"
                                                }
                                            },
                                            "required": [
                                                "message",
                                                "type",
                                                "reason",
                                                "accepted",
                                                "ignored"
                                            ]
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "type": "object",
                                            "properties": {
                                                "message": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string",
                                                    "const": "error"
                                                },
                                                "reason": {
                                                    "type": "string",
                                                    "const": "hit_quota_exceeded"
                                                }
                                            },
                                            "required": [
                                                "message",
                                                "type",
                                                "reason"
                                            ]
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "message": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string",
                                                    "const": "error"
                                                },
                                                "reason": {
                                                    "type": "string",
                                                    "const": "rate_limited"
                                                },
                                                "retry_after": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "message",
                                                "type",
                                                "reason",
                                                "retry_after"
                                            ]
                                        }
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/drains\/vercel": {
            "post": {
                "operationId": "v1.drains.vercel",
                "summary": "POST \/v1\/drains\/vercel: a Vercel log drain (JSON array or NDJSON),\nauthenticated by a server key in the drain's Authorization header.\nRequest logs (those with a \"proxy\" object) become hits; with ?all=1\nbrowser page loads are kept too (CollectorFilter)",
                "tags": [
                    "Ingest"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "type": "string"
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "message": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string",
                                                    "const": "error"
                                                },
                                                "reason": {
                                                    "type": "string",
                                                    "const": "hit_quota_exceeded"
                                                },
                                                "accepted": {
                                                    "type": "integer"
                                                },
                                                "ignored": {
                                                    "type": "integer"
                                                }
                                            },
                                            "required": [
                                                "message",
                                                "type",
                                                "reason",
                                                "accepted",
                                                "ignored"
                                            ]
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "type": "object",
                                            "properties": {
                                                "message": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string",
                                                    "const": "error"
                                                },
                                                "reason": {
                                                    "type": "string",
                                                    "const": "hit_quota_exceeded"
                                                }
                                            },
                                            "required": [
                                                "message",
                                                "type",
                                                "reason"
                                            ]
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "message": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string",
                                                    "const": "error"
                                                },
                                                "reason": {
                                                    "type": "string",
                                                    "const": "rate_limited"
                                                },
                                                "retry_after": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "message",
                                                "type",
                                                "reason",
                                                "retry_after"
                                            ]
                                        }
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/drains\/netlify": {
            "post": {
                "operationId": "v1.drains.netlify",
                "summary": "POST \/v1\/drains\/netlify: a Netlify log drain (general HTTP endpoint,\nJSON or NDJSON), authenticated by a server key in the drain's\nAuthorization header. Traffic logs become hits",
                "tags": [
                    "Ingest"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "type": "string"
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "message": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string",
                                                    "const": "error"
                                                },
                                                "reason": {
                                                    "type": "string",
                                                    "const": "hit_quota_exceeded"
                                                },
                                                "accepted": {
                                                    "type": "integer"
                                                },
                                                "ignored": {
                                                    "type": "integer"
                                                }
                                            },
                                            "required": [
                                                "message",
                                                "type",
                                                "reason",
                                                "accepted",
                                                "ignored"
                                            ]
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "type": "object",
                                            "properties": {
                                                "message": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string",
                                                    "const": "error"
                                                },
                                                "reason": {
                                                    "type": "string",
                                                    "const": "hit_quota_exceeded"
                                                }
                                            },
                                            "required": [
                                                "message",
                                                "type",
                                                "reason"
                                            ]
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "message": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string",
                                                    "const": "error"
                                                },
                                                "reason": {
                                                    "type": "string",
                                                    "const": "rate_limited"
                                                },
                                                "retry_after": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "message",
                                                "type",
                                                "reason",
                                                "retry_after"
                                            ]
                                        }
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/projects\/{project}\/insights": {
            "get": {
                "operationId": "insights.index",
                "description": "Each insight's current value and its history over the last 90 days.",
                "summary": "List insights",
                "tags": [
                    "Insights",
                    "Insight"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "title": {
                                                        "type": "string"
                                                    },
                                                    "value": {
                                                        "type": "string"
                                                    },
                                                    "prefix": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "suffix": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "color": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "icon": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "updatedAt": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "history": {
                                                        "anyOf": [
                                                            {
                                                                "type": "string"
                                                            },
                                                            {
                                                                "type": "array",
                                                                "items": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                        "value": {
                                                                            "type": "string"
                                                                        },
                                                                        "at": {
                                                                            "type": "string"
                                                                        }
                                                                    },
                                                                    "required": [
                                                                        "value",
                                                                        "at"
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                "required": [
                                                    "id",
                                                    "title",
                                                    "value",
                                                    "prefix",
                                                    "suffix",
                                                    "color",
                                                    "icon",
                                                    "updatedAt",
                                                    "history"
                                                ]
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/app-config": {
            "get": {
                "operationId": "app-config",
                "description": "What the mobile app needs before signing in: the realtime server\n(Reverb, Pusher protocol; the key is public), the OAuth client for\nbrowser sign-in, and which optional features are on.",
                "summary": "App configuration",
                "tags": [
                    "Mobile app",
                    "AppConfig"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "realtime": {
                                            "type": [
                                                "object",
                                                "null"
                                            ],
                                            "properties": {
                                                "key": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "host": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "port": {
                                                    "type": "integer"
                                                },
                                                "scheme": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string"
                                                        },
                                                        {
                                                            "type": "string",
                                                            "enum": [
                                                                "https"
                                                            ]
                                                        }
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "key",
                                                "host",
                                                "port",
                                                "scheme"
                                            ]
                                        },
                                        "oauth": {
                                            "type": "object",
                                            "properties": {
                                                "clientId": {
                                                    "type": "string"
                                                },
                                                "redirectUri": {
                                                    "type": "string",
                                                    "const": "logzuno:\/\/auth\/callback"
                                                },
                                                "scopes": {
                                                    "type": "array",
                                                    "prefixItems": [
                                                        {
                                                            "type": "string",
                                                            "const": "read"
                                                        },
                                                        {
                                                            "type": "string",
                                                            "const": "write"
                                                        }
                                                    ],
                                                    "minItems": 2,
                                                    "maxItems": 2
                                                }
                                            },
                                            "required": [
                                                "clientId",
                                                "redirectUri",
                                                "scopes"
                                            ]
                                        },
                                        "features": {
                                            "type": "object",
                                            "properties": {
                                                "ask": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "required": [
                                                "ask"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "realtime",
                                        "oauth",
                                        "features"
                                    ]
                                }
                            }
                        }
                    }
                },
                "security": []
            }
        },
        "\/projects": {
            "get": {
                "operationId": "projects.index",
                "summary": "List projects",
                "tags": [
                    "Projects",
                    "Project"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "name": {
                                                        "type": "string"
                                                    },
                                                    "slug": {
                                                        "type": "string"
                                                    },
                                                    "timezone": {
                                                        "type": "string"
                                                    },
                                                    "paused": {
                                                        "type": "boolean"
                                                    },
                                                    "firstEventAt": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "organization": {
                                                        "type": "object",
                                                        "properties": {
                                                            "id": {
                                                                "type": "integer"
                                                            },
                                                            "name": {
                                                                "type": "string"
                                                            },
                                                            "slug": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "id",
                                                            "name",
                                                            "slug"
                                                        ]
                                                    }
                                                },
                                                "required": [
                                                    "id",
                                                    "name",
                                                    "slug",
                                                    "timezone",
                                                    "paused",
                                                    "firstEventAt",
                                                    "organization"
                                                ]
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/projects\/{project}": {
            "get": {
                "operationId": "projects.show",
                "summary": "Get a project",
                "tags": [
                    "Projects",
                    "Project"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "slug": {
                                                    "type": "string"
                                                },
                                                "timezone": {
                                                    "type": "string"
                                                },
                                                "paused": {
                                                    "type": "boolean"
                                                },
                                                "firstEventAt": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "organization": {
                                                    "type": "object",
                                                    "properties": {
                                                        "id": {
                                                            "type": "integer"
                                                        },
                                                        "name": {
                                                            "type": "string"
                                                        },
                                                        "slug": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "id",
                                                        "name",
                                                        "slug"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "id",
                                                "name",
                                                "slug",
                                                "timezone",
                                                "paused",
                                                "firstEventAt",
                                                "organization"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/projects\/{project}\/catalogue": {
            "get": {
                "operationId": "projects.catalogue",
                "description": "Event names, event property keys (with types), user and group property\nkeys and channels: everything a filter, breakdown or chart can use.",
                "summary": "The event catalogue",
                "tags": [
                    "Projects",
                    "Project"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "events": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                },
                                                "eventProperties": {
                                                    "type": "array",
                                                    "items": {}
                                                },
                                                "userProperties": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                },
                                                "groupProperties": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                },
                                                "channels": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "name": {
                                                                "type": "string"
                                                            },
                                                            "muted": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "name",
                                                            "muted"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "events",
                                                "eventProperties",
                                                "userProperties",
                                                "groupProperties",
                                                "channels"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/broadcasting\/auth": {
            "post": {
                "operationId": "broadcasting.auth",
                "description": "The mobile app's live event feed subscribes to `private-project.{id}`\non the Reverb (Pusher protocol) server; this signs the subscription.",
                "summary": "Authorise a realtime channel",
                "tags": [
                    "Realtime",
                    "BroadcastAuth"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {}
                            }
                        }
                    },
                    "403": {
                        "description": "An error",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Error overview.",
                                            "examples": [
                                                "Realtime channels need a personal access token."
                                            ]
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/projects\/{project}\/users": {
            "get": {
                "operationId": "users.index",
                "description": "A preset (new_signups, active, engaged, recent, power, drifting), a\nsaved segment or a custom segment definition, optionally searched by\nuser id, email or name; 25 per page.",
                "summary": "List users",
                "tags": [
                    "Users",
                    "User"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "preset",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "new_signups",
                                "active",
                                "engaged",
                                "recent",
                                "power",
                                "drifting",
                                null
                            ]
                        }
                    },
                    {
                        "name": "days",
                        "in": "query",
                        "schema": {
                            "type": [
                                "integer",
                                "null"
                            ],
                            "enum": [
                                "1",
                                "7",
                                "14",
                                "30",
                                null
                            ]
                        }
                    },
                    {
                        "name": "since",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "today",
                                "week",
                                "month",
                                null
                            ]
                        }
                    },
                    {
                        "name": "segment",
                        "in": "query",
                        "schema": {
                            "type": [
                                "integer",
                                "null"
                            ]
                        }
                    },
                    {
                        "name": "definition[]",
                        "in": "query",
                        "description": "A custom segment definition, as the segment builder produces.",
                        "schema": {
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "maxLength": 255
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": [
                                "integer",
                                "null"
                            ],
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {}
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "currentPage": {
                                                    "type": "integer"
                                                },
                                                "lastPage": {
                                                    "type": "integer"
                                                },
                                                "total": {
                                                    "type": "integer"
                                                }
                                            },
                                            "required": [
                                                "currentPage",
                                                "lastPage",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/projects\/{project}\/users\/{userId}": {
            "get": {
                "operationId": "users.show",
                "description": "The profile (properties and computed properties), groups, daily\nactivity and latest events.",
                "summary": "Get a user",
                "tags": [
                    "Users",
                    "User"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "userId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": [
                                                "object",
                                                "null"
                                            ],
                                            "properties": {
                                                "user": {
                                                    "type": "object",
                                                    "properties": {
                                                        "userId": {
                                                            "type": "string"
                                                        },
                                                        "avatar": {
                                                            "type": "string"
                                                        },
                                                        "name": {
                                                            "type": [
                                                                "string",
                                                                "null"
                                                            ]
                                                        },
                                                        "email": {
                                                            "type": [
                                                                "string",
                                                                "null"
                                                            ]
                                                        },
                                                        "firstSeen": {
                                                            "type": [
                                                                "string",
                                                                "null"
                                                            ]
                                                        },
                                                        "lastSeen": {
                                                            "type": [
                                                                "string",
                                                                "null"
                                                            ]
                                                        },
                                                        "events": {
                                                            "type": "integer"
                                                        },
                                                        "properties": {},
                                                        "computed": {
                                                            "type": "array",
                                                            "items": {}
                                                        }
                                                    },
                                                    "required": [
                                                        "userId",
                                                        "avatar",
                                                        "name",
                                                        "email",
                                                        "firstSeen",
                                                        "lastSeen",
                                                        "events",
                                                        "properties",
                                                        "computed"
                                                    ]
                                                },
                                                "groups": {
                                                    "type": "array",
                                                    "items": {}
                                                },
                                                "activity": {
                                                    "type": "array",
                                                    "items": {}
                                                },
                                                "timeline": {
                                                    "type": "object",
                                                    "properties": {
                                                        "events": {
                                                            "type": "array",
                                                            "items": {}
                                                        },
                                                        "next": {
                                                            "type": [
                                                                "string",
                                                                "null"
                                                            ]
                                                        }
                                                    },
                                                    "required": [
                                                        "events",
                                                        "next"
                                                    ]
                                                },
                                                "topEvents": {
                                                    "type": "array",
                                                    "description": "org_id and the time bound prune to this organisation's partitions.",
                                                    "items": {}
                                                },
                                                "activityFrom": {
                                                    "type": "string"
                                                },
                                                "activityTo": {
                                                    "type": "string",
                                                    "description": "The project's today: the activity grid ends here."
                                                }
                                            },
                                            "required": [
                                                "user",
                                                "groups",
                                                "activity",
                                                "timeline",
                                                "topEvents",
                                                "activityFrom",
                                                "activityTo"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/projects\/{project}\/segments": {
            "get": {
                "operationId": "segments.index",
                "summary": "List saved segments",
                "tags": [
                    "Users",
                    "User"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/Segment"
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/projects\/{project}\/web": {
            "get": {
                "operationId": "web.show",
                "description": "Pageviews and visitors over time, with the top pages, channels,\nsources (AI assistants included), referrers, countries, devices,\nbrowsers, operating systems, screens and UTM values. `audience`:\n`people` (visitors who showed real input, the default), `visitors`\n(people and unconfirmed visitors) or `all` (automated traffic too).\n`traffic` says how many visitors were people, unconfirmed or\nautomated; `aiSources` lists visits from AI assistants, proven apart\nfrom likely.",
                "summary": "Web analytics report",
                "tags": [
                    "Web analytics",
                    "Web"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "range",
                        "in": "query",
                        "description": "A preset (default last_30_days), or from and to.",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "today",
                                "yesterday",
                                "last_7_days",
                                "last_14_days",
                                "last_30_days",
                                "last_90_days",
                                "this_week",
                                "last_week",
                                "this_month",
                                "last_month",
                                null
                            ]
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "format": "date"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "format": "date"
                        }
                    },
                    {
                        "name": "compare",
                        "in": "query",
                        "schema": {
                            "type": [
                                "boolean",
                                "null"
                            ]
                        }
                    },
                    {
                        "name": "audience",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "people",
                                "visitors",
                                "all",
                                null
                            ]
                        }
                    },
                    {
                        "name": "filters[]",
                        "in": "query",
                        "description": "dimension => value, for example filters[channel]=ai.",
                        "schema": {
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": {}
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        },
        "\/projects\/{project}\/web\/ai": {
            "get": {
                "operationId": "web.ai",
                "description": "From the server-side traffic the project's collectors send: requests\nper day by kind (browsers, AI fetching for people, AI search and\ntraining crawlers, search engines, other bots, automated browsers),\neach crawler with how it was verified, impostors, the pages AI reads\nand the visits it sends, errors served to AI, robots.txt, llms.txt\nand sitemap fetches, the script gap and the \"likely\" attribution\nwindows.",
                "summary": "AI visibility report",
                "tags": [
                    "Web analytics",
                    "Web"
                ],
                "parameters": [
                    {
                        "name": "project",
                        "in": "path",
                        "required": true,
                        "description": "The project ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "range",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "today",
                                "yesterday",
                                "last_7_days",
                                "last_14_days",
                                "last_30_days",
                                "last_90_days",
                                "this_week",
                                "last_week",
                                "this_month",
                                "last_month",
                                null
                            ]
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "format": "date"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "format": "date"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": {}
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "http": {
                "type": "http",
                "scheme": "bearer"
            }
        },
        "schemas": {
            "Segment": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "project_id": {
                        "type": "integer"
                    },
                    "subject": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "definition": {
                        "type": "array",
                        "items": {}
                    },
                    "created_by": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    }
                },
                "required": [
                    "id",
                    "project_id",
                    "subject",
                    "name",
                    "definition",
                    "created_by",
                    "created_at",
                    "updated_at"
                ],
                "title": "Segment"
            }
        },
        "responses": {
            "ValidationException": {
                "description": "Validation error",
                "content": {
                    "application\/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Errors overview."
                                },
                                "errors": {
                                    "type": "object",
                                    "description": "A detailed description of each field that failed validation.",
                                    "additionalProperties": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    }
                                }
                            },
                            "required": [
                                "message",
                                "errors"
                            ]
                        }
                    }
                }
            },
            "ModelNotFoundException": {
                "description": "Not found",
                "content": {
                    "application\/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Error overview."
                                }
                            },
                            "required": [
                                "message"
                            ]
                        }
                    }
                }
            }
        }
    }
}