{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Datahub Metriky Schema",
  "description": "JSON Schema pro transakční data z informačních systémů veřejné správy",
  "type": "object",
  "properties": {
    "root": {
      "type": "object",
      "properties": {
        "transakce": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/transakce"
          }
        }
      },
      "required": [
        "transakce"
      ]
    }
  },
  "required": [
    "root"
  ],
  "definitions": {
    "transakce": {
      "type": "object",
      "properties": {
        "ID": {
          "type": "string",
          "description": "Jedinečný identifikátor transakce"
        },
        "vysledek": {
          "type": "integer",
          "minimum": 0,
          "maximum": 255,
          "description": "Výsledek transakce (0-255)"
        },
        "stav": {
          "type": "string",
          "description": "Stav transakce"
        },
        "spokojenost": {
          "type": "integer",
          "minimum": 0,
          "maximum": 255,
          "description": "Spokojenost uživatele (0-255)"
        },
        "ovm": {
          "type": "integer",
          "description": "Identifikátor orgánu veřejné moci"
        },
        "agenda": {
          "type": "string",
          "description": "Kód agendy"
        },
        "sluzba": {
          "type": "string",
          "description": "Kód služby"
        },
        "kanal_vstup": {
          "type": "string",
          "description": "Vstupní kanál transakce"
        },
        "kanal_vystup": {
          "type": "string",
          "description": "Výstupní kanál transakce"
        },
        "cas_zahajeni": {
          "type": "string",
          "format": "date-time",
          "description": "Čas zahájení transakce (ISO 8601)"
        },
        "cas_ukonceni": {
          "type": "string",
          "format": "date-time",
          "description": "Čas ukončení transakce (ISO 8601)"
        },
        "vp_": {
          "type": "object",
          "additionalProperties": true,
          "description": "Volitelné vlastní parametry (volné pole pro další atributy) název elementu s prefixem vp_"
        },
        "IS": {
          "type": "string",
          "description": "Informační systém"
        },
        "IS_zdroj": {
          "type": "string",
          "description": "Zdrojový informační systém"
        },
        "IS_cil": {
          "type": "string",
          "description": "Cílový informační systém"
        },
        "mistni_prislusnost": {
          "type": "string",
          "description": "Místní příslušnost"
        },
        "urad": {
          "type": "string",
          "description": "Úřad"
        },
        "etapy": {
          "type": "object",
          "properties": {
            "etapa": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/etapa"
              }
            }
          }
        },
        "bytes": {
          "type": "integer",
          "description": "Velikost dat v bytech"
        }
      },
      "required": [
        "ID",
        "vysledek",
        "stav",
        "ovm",
        "agenda",
        "sluzba",
        "kanal_vstup",
        "kanal_vystup",
        "cas_zahajeni",
        "cas_ukonceni",
        "IS"
      ]
    },
    "etapa": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Identifikátor etapy"
        },
        "nazev": {
          "type": "string",
          "description": "Název etapy"
        },
        "cas": {
          "type": "string",
          "format": "date-time",
          "description": "Čas etapy (ISO 8601)"
        },
        "ukon": {
          "type": "string",
          "description": "Vazba na úkon dle RPP, pokud je k dispozici"
        },
        "vp_": {
          "type": "object",
          "additionalProperties": true,
          "description": "Volitelné vlastní parametry etapy název elementu s prefixem vp_"
        },
        "etapa_kanal": {
          "type": "string",
          "description": "Kanál etapy"
        }
      },
      "required": [
        "id",
        "nazev",
        "cas",
        "etapa_kanal"
      ]
    }
  }
}
