{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://gksotcom.ru/documents/open-protocol/trust-schema-0.20.json",
  "title": "open-alert-trust/2",
  "type": "object",
  "properties": {
    "payload": {
      "type": "object",
      "properties": {
        "schemaVersion": {
          "const": "open-alert-trust/2"
        },
        "deviceId": {
          "type": "string",
          "pattern": "^[0-9a-f]{32}$"
        },
        "generation": {
          "type": "string",
          "pattern": "^(?:1|2|3|4|5|6|7|8|9|1[0-9]{1}|2[0-9]{1}|3[0-9]{1}|4[0-9]{1}|5[0-9]{1}|6[0-9]{1}|7[0-9]{1}|8[0-9]{1}|9[0-9]{1}|1[0-9]{2}|2[0-9]{2}|3[0-9]{2}|4[0-9]{2}|5[0-9]{2}|6[0-9]{2}|7[0-9]{2}|8[0-9]{2}|9[0-9]{2}|1[0-9]{3}|2[0-9]{3}|3[0-9]{3}|4[0-9]{3}|5[0-9]{3}|6[0-9]{3}|7[0-9]{3}|8[0-9]{3}|9[0-9]{3}|1[0-9]{4}|2[0-9]{4}|3[0-9]{4}|4[0-9]{4}|5[0-9]{4}|6[0-9]{4}|7[0-9]{4}|8[0-9]{4}|9[0-9]{4}|1[0-9]{5}|2[0-9]{5}|3[0-9]{5}|4[0-9]{5}|5[0-9]{5}|6[0-9]{5}|7[0-9]{5}|8[0-9]{5}|9[0-9]{5}|1[0-9]{6}|2[0-9]{6}|3[0-9]{6}|4[0-9]{6}|5[0-9]{6}|6[0-9]{6}|7[0-9]{6}|8[0-9]{6}|9[0-9]{6}|1[0-9]{7}|2[0-9]{7}|3[0-9]{7}|4[0-9]{7}|5[0-9]{7}|6[0-9]{7}|7[0-9]{7}|8[0-9]{7}|9[0-9]{7}|1[0-9]{8}|2[0-9]{8}|3[0-9]{8}|4[0-9]{8}|5[0-9]{8}|6[0-9]{8}|7[0-9]{8}|8[0-9]{8}|9[0-9]{8}|1[0-9]{9}|2[0-9]{9}|3[0-9]{9}|4[0-9]{9}|5[0-9]{9}|6[0-9]{9}|7[0-9]{9}|8[0-9]{9}|9[0-9]{9}|1[0-9]{10}|2[0-9]{10}|3[0-9]{10}|4[0-9]{10}|5[0-9]{10}|6[0-9]{10}|7[0-9]{10}|8[0-9]{10}|9[0-9]{10}|1[0-9]{11}|2[0-9]{11}|3[0-9]{11}|4[0-9]{11}|5[0-9]{11}|6[0-9]{11}|7[0-9]{11}|8[0-9]{11}|9[0-9]{11}|1[0-9]{12}|2[0-9]{12}|3[0-9]{12}|4[0-9]{12}|5[0-9]{12}|6[0-9]{12}|7[0-9]{12}|8[0-9]{12}|9[0-9]{12}|1[0-9]{13}|2[0-9]{13}|3[0-9]{13}|4[0-9]{13}|5[0-9]{13}|6[0-9]{13}|7[0-9]{13}|8[0-9]{13}|9[0-9]{13}|1[0-9]{14}|2[0-9]{14}|3[0-9]{14}|4[0-9]{14}|5[0-9]{14}|6[0-9]{14}|7[0-9]{14}|8[0-9]{14}|9[0-9]{14}|1[0-9]{15}|2[0-9]{15}|3[0-9]{15}|4[0-9]{15}|5[0-9]{15}|6[0-9]{15}|7[0-9]{15}|8[0-9]{15}|9[0-9]{15}|1[0-9]{16}|2[0-9]{16}|3[0-9]{16}|4[0-9]{16}|5[0-9]{16}|6[0-9]{16}|7[0-9]{16}|8[0-9]{16}|9[0-9]{16}|1[0-9]{17}|2[0-9]{17}|3[0-9]{17}|4[0-9]{17}|5[0-9]{17}|6[0-9]{17}|7[0-9]{17}|8[0-9]{17}|9[0-9]{17}|1[0-9]{18}|2[0-9]{18}|3[0-9]{18}|4[0-9]{18}|5[0-9]{18}|6[0-9]{18}|7[0-9]{18}|8[0-9]{18}|9[0-9]{18}|10[0-9]{18}|11[0-9]{18}|12[0-9]{18}|13[0-9]{18}|14[0-9]{18}|15[0-9]{18}|16[0-9]{18}|17[0-9]{18}|180[0-9]{17}|181[0-9]{17}|182[0-9]{17}|183[0-9]{17}|1840[0-9]{16}|1841[0-9]{16}|1842[0-9]{16}|1843[0-9]{16}|18440[0-9]{15}|18441[0-9]{15}|18442[0-9]{15}|18443[0-9]{15}|18444[0-9]{15}|18445[0-9]{15}|184460[0-9]{14}|184461[0-9]{14}|184462[0-9]{14}|184463[0-9]{14}|184464[0-9]{14}|184465[0-9]{14}|184466[0-9]{14}|1844670[0-9]{13}|1844671[0-9]{13}|1844672[0-9]{13}|1844673[0-9]{13}|18446740[0-9]{12}|18446741[0-9]{12}|18446742[0-9]{12}|18446743[0-9]{12}|1844674400[0-9]{10}|1844674401[0-9]{10}|1844674402[0-9]{10}|1844674403[0-9]{10}|1844674404[0-9]{10}|1844674405[0-9]{10}|1844674406[0-9]{10}|18446744070[0-9]{9}|18446744071[0-9]{9}|18446744072[0-9]{9}|184467440730[0-9]{8}|184467440731[0-9]{8}|184467440732[0-9]{8}|184467440733[0-9]{8}|184467440734[0-9]{8}|184467440735[0-9]{8}|184467440736[0-9]{8}|18446744073700[0-9]{6}|18446744073701[0-9]{6}|18446744073702[0-9]{6}|18446744073703[0-9]{6}|18446744073704[0-9]{6}|18446744073705[0-9]{6}|18446744073706[0-9]{6}|18446744073707[0-9]{6}|18446744073708[0-9]{6}|184467440737090[0-9]{5}|184467440737091[0-9]{5}|184467440737092[0-9]{5}|184467440737093[0-9]{5}|184467440737094[0-9]{5}|1844674407370950[0-9]{4}|1844674407370951[0-9]{4}|1844674407370952[0-9]{4}|1844674407370953[0-9]{4}|1844674407370954[0-9]{4}|18446744073709550[0-9]{3}|184467440737095510[0-9]{2}|184467440737095511[0-9]{2}|184467440737095512[0-9]{2}|184467440737095513[0-9]{2}|184467440737095514[0-9]{2}|184467440737095515[0-9]{2}|1844674407370955160[0-9]{1}|18446744073709551610|18446744073709551611|18446744073709551612|18446744073709551613|18446744073709551614|18446744073709551615)(?![\\s\\S])",
          "x-minimum": "1",
          "x-maximum": "18446744073709551615",
          "description": "Целое 1..18446744073709551615, каноническая десятичная строка; обе границы проверяются схемой."
        },
        "principals": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "principalId": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{32}$"
                  },
                  "keyId": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_.:-]{1,32}$"
                  },
                  "generation": {
                    "type": "string",
                    "pattern": "^(?:1|2|3|4|5|6|7|8|9|1[0-9]{1}|2[0-9]{1}|3[0-9]{1}|4[0-9]{1}|5[0-9]{1}|6[0-9]{1}|7[0-9]{1}|8[0-9]{1}|9[0-9]{1}|1[0-9]{2}|2[0-9]{2}|3[0-9]{2}|4[0-9]{2}|5[0-9]{2}|6[0-9]{2}|7[0-9]{2}|8[0-9]{2}|9[0-9]{2}|1[0-9]{3}|2[0-9]{3}|3[0-9]{3}|4[0-9]{3}|5[0-9]{3}|6[0-9]{3}|7[0-9]{3}|8[0-9]{3}|9[0-9]{3}|1[0-9]{4}|2[0-9]{4}|3[0-9]{4}|4[0-9]{4}|5[0-9]{4}|6[0-9]{4}|7[0-9]{4}|8[0-9]{4}|9[0-9]{4}|1[0-9]{5}|2[0-9]{5}|3[0-9]{5}|4[0-9]{5}|5[0-9]{5}|6[0-9]{5}|7[0-9]{5}|8[0-9]{5}|9[0-9]{5}|1[0-9]{6}|2[0-9]{6}|3[0-9]{6}|4[0-9]{6}|5[0-9]{6}|6[0-9]{6}|7[0-9]{6}|8[0-9]{6}|9[0-9]{6}|1[0-9]{7}|2[0-9]{7}|3[0-9]{7}|4[0-9]{7}|5[0-9]{7}|6[0-9]{7}|7[0-9]{7}|8[0-9]{7}|9[0-9]{7}|1[0-9]{8}|2[0-9]{8}|3[0-9]{8}|4[0-9]{8}|5[0-9]{8}|6[0-9]{8}|7[0-9]{8}|8[0-9]{8}|9[0-9]{8}|1[0-9]{9}|2[0-9]{9}|3[0-9]{9}|4[0-9]{9}|5[0-9]{9}|6[0-9]{9}|7[0-9]{9}|8[0-9]{9}|9[0-9]{9}|1[0-9]{10}|2[0-9]{10}|3[0-9]{10}|4[0-9]{10}|5[0-9]{10}|6[0-9]{10}|7[0-9]{10}|8[0-9]{10}|9[0-9]{10}|1[0-9]{11}|2[0-9]{11}|3[0-9]{11}|4[0-9]{11}|5[0-9]{11}|6[0-9]{11}|7[0-9]{11}|8[0-9]{11}|9[0-9]{11}|1[0-9]{12}|2[0-9]{12}|3[0-9]{12}|4[0-9]{12}|5[0-9]{12}|6[0-9]{12}|7[0-9]{12}|8[0-9]{12}|9[0-9]{12}|1[0-9]{13}|2[0-9]{13}|3[0-9]{13}|4[0-9]{13}|5[0-9]{13}|6[0-9]{13}|7[0-9]{13}|8[0-9]{13}|9[0-9]{13}|1[0-9]{14}|2[0-9]{14}|3[0-9]{14}|4[0-9]{14}|5[0-9]{14}|6[0-9]{14}|7[0-9]{14}|8[0-9]{14}|9[0-9]{14}|1[0-9]{15}|2[0-9]{15}|3[0-9]{15}|4[0-9]{15}|5[0-9]{15}|6[0-9]{15}|7[0-9]{15}|8[0-9]{15}|9[0-9]{15}|1[0-9]{16}|2[0-9]{16}|3[0-9]{16}|4[0-9]{16}|5[0-9]{16}|6[0-9]{16}|7[0-9]{16}|8[0-9]{16}|9[0-9]{16}|1[0-9]{17}|2[0-9]{17}|3[0-9]{17}|4[0-9]{17}|5[0-9]{17}|6[0-9]{17}|7[0-9]{17}|8[0-9]{17}|9[0-9]{17}|1[0-9]{18}|2[0-9]{18}|3[0-9]{18}|4[0-9]{18}|5[0-9]{18}|6[0-9]{18}|7[0-9]{18}|8[0-9]{18}|9[0-9]{18}|10[0-9]{18}|11[0-9]{18}|12[0-9]{18}|13[0-9]{18}|14[0-9]{18}|15[0-9]{18}|16[0-9]{18}|17[0-9]{18}|180[0-9]{17}|181[0-9]{17}|182[0-9]{17}|183[0-9]{17}|1840[0-9]{16}|1841[0-9]{16}|1842[0-9]{16}|1843[0-9]{16}|18440[0-9]{15}|18441[0-9]{15}|18442[0-9]{15}|18443[0-9]{15}|18444[0-9]{15}|18445[0-9]{15}|184460[0-9]{14}|184461[0-9]{14}|184462[0-9]{14}|184463[0-9]{14}|184464[0-9]{14}|184465[0-9]{14}|184466[0-9]{14}|1844670[0-9]{13}|1844671[0-9]{13}|1844672[0-9]{13}|1844673[0-9]{13}|18446740[0-9]{12}|18446741[0-9]{12}|18446742[0-9]{12}|18446743[0-9]{12}|1844674400[0-9]{10}|1844674401[0-9]{10}|1844674402[0-9]{10}|1844674403[0-9]{10}|1844674404[0-9]{10}|1844674405[0-9]{10}|1844674406[0-9]{10}|18446744070[0-9]{9}|18446744071[0-9]{9}|18446744072[0-9]{9}|184467440730[0-9]{8}|184467440731[0-9]{8}|184467440732[0-9]{8}|184467440733[0-9]{8}|184467440734[0-9]{8}|184467440735[0-9]{8}|184467440736[0-9]{8}|18446744073700[0-9]{6}|18446744073701[0-9]{6}|18446744073702[0-9]{6}|18446744073703[0-9]{6}|18446744073704[0-9]{6}|18446744073705[0-9]{6}|18446744073706[0-9]{6}|18446744073707[0-9]{6}|18446744073708[0-9]{6}|184467440737090[0-9]{5}|184467440737091[0-9]{5}|184467440737092[0-9]{5}|184467440737093[0-9]{5}|184467440737094[0-9]{5}|1844674407370950[0-9]{4}|1844674407370951[0-9]{4}|1844674407370952[0-9]{4}|1844674407370953[0-9]{4}|1844674407370954[0-9]{4}|18446744073709550[0-9]{3}|184467440737095510[0-9]{2}|184467440737095511[0-9]{2}|184467440737095512[0-9]{2}|184467440737095513[0-9]{2}|184467440737095514[0-9]{2}|184467440737095515[0-9]{2}|1844674407370955160[0-9]{1}|18446744073709551610|18446744073709551611|18446744073709551612|18446744073709551613|18446744073709551614|18446744073709551615)(?![\\s\\S])",
                    "x-minimum": "1",
                    "x-maximum": "18446744073709551615",
                    "description": "Целое 1..18446744073709551615, каноническая десятичная строка; обе границы проверяются схемой."
                  },
                  "state": {
                    "enum": [
                      "staged",
                      "active"
                    ]
                  },
                  "roles": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "observer",
                        "operator",
                        "maintainer",
                        "trustAdmin"
                      ]
                    },
                    "minItems": 1,
                    "maxItems": 4,
                    "uniqueItems": true
                  },
                  "resourceIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9_.:-]{1,32}$"
                    },
                    "minItems": 1,
                    "maxItems": 256,
                    "uniqueItems": true
                  },
                  "rootId": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_.:-]{1,32}$"
                  },
                  "salt": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$"
                  }
                },
                "required": [
                  "principalId",
                  "keyId",
                  "generation",
                  "state",
                  "roles",
                  "resourceIds",
                  "rootId",
                  "salt"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "principalId": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{32}$"
                  },
                  "keyId": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_.:-]{1,32}$"
                  },
                  "generation": {
                    "type": "string",
                    "pattern": "^(?:1|2|3|4|5|6|7|8|9|1[0-9]{1}|2[0-9]{1}|3[0-9]{1}|4[0-9]{1}|5[0-9]{1}|6[0-9]{1}|7[0-9]{1}|8[0-9]{1}|9[0-9]{1}|1[0-9]{2}|2[0-9]{2}|3[0-9]{2}|4[0-9]{2}|5[0-9]{2}|6[0-9]{2}|7[0-9]{2}|8[0-9]{2}|9[0-9]{2}|1[0-9]{3}|2[0-9]{3}|3[0-9]{3}|4[0-9]{3}|5[0-9]{3}|6[0-9]{3}|7[0-9]{3}|8[0-9]{3}|9[0-9]{3}|1[0-9]{4}|2[0-9]{4}|3[0-9]{4}|4[0-9]{4}|5[0-9]{4}|6[0-9]{4}|7[0-9]{4}|8[0-9]{4}|9[0-9]{4}|1[0-9]{5}|2[0-9]{5}|3[0-9]{5}|4[0-9]{5}|5[0-9]{5}|6[0-9]{5}|7[0-9]{5}|8[0-9]{5}|9[0-9]{5}|1[0-9]{6}|2[0-9]{6}|3[0-9]{6}|4[0-9]{6}|5[0-9]{6}|6[0-9]{6}|7[0-9]{6}|8[0-9]{6}|9[0-9]{6}|1[0-9]{7}|2[0-9]{7}|3[0-9]{7}|4[0-9]{7}|5[0-9]{7}|6[0-9]{7}|7[0-9]{7}|8[0-9]{7}|9[0-9]{7}|1[0-9]{8}|2[0-9]{8}|3[0-9]{8}|4[0-9]{8}|5[0-9]{8}|6[0-9]{8}|7[0-9]{8}|8[0-9]{8}|9[0-9]{8}|1[0-9]{9}|2[0-9]{9}|3[0-9]{9}|4[0-9]{9}|5[0-9]{9}|6[0-9]{9}|7[0-9]{9}|8[0-9]{9}|9[0-9]{9}|1[0-9]{10}|2[0-9]{10}|3[0-9]{10}|4[0-9]{10}|5[0-9]{10}|6[0-9]{10}|7[0-9]{10}|8[0-9]{10}|9[0-9]{10}|1[0-9]{11}|2[0-9]{11}|3[0-9]{11}|4[0-9]{11}|5[0-9]{11}|6[0-9]{11}|7[0-9]{11}|8[0-9]{11}|9[0-9]{11}|1[0-9]{12}|2[0-9]{12}|3[0-9]{12}|4[0-9]{12}|5[0-9]{12}|6[0-9]{12}|7[0-9]{12}|8[0-9]{12}|9[0-9]{12}|1[0-9]{13}|2[0-9]{13}|3[0-9]{13}|4[0-9]{13}|5[0-9]{13}|6[0-9]{13}|7[0-9]{13}|8[0-9]{13}|9[0-9]{13}|1[0-9]{14}|2[0-9]{14}|3[0-9]{14}|4[0-9]{14}|5[0-9]{14}|6[0-9]{14}|7[0-9]{14}|8[0-9]{14}|9[0-9]{14}|1[0-9]{15}|2[0-9]{15}|3[0-9]{15}|4[0-9]{15}|5[0-9]{15}|6[0-9]{15}|7[0-9]{15}|8[0-9]{15}|9[0-9]{15}|1[0-9]{16}|2[0-9]{16}|3[0-9]{16}|4[0-9]{16}|5[0-9]{16}|6[0-9]{16}|7[0-9]{16}|8[0-9]{16}|9[0-9]{16}|1[0-9]{17}|2[0-9]{17}|3[0-9]{17}|4[0-9]{17}|5[0-9]{17}|6[0-9]{17}|7[0-9]{17}|8[0-9]{17}|9[0-9]{17}|1[0-9]{18}|2[0-9]{18}|3[0-9]{18}|4[0-9]{18}|5[0-9]{18}|6[0-9]{18}|7[0-9]{18}|8[0-9]{18}|9[0-9]{18}|10[0-9]{18}|11[0-9]{18}|12[0-9]{18}|13[0-9]{18}|14[0-9]{18}|15[0-9]{18}|16[0-9]{18}|17[0-9]{18}|180[0-9]{17}|181[0-9]{17}|182[0-9]{17}|183[0-9]{17}|1840[0-9]{16}|1841[0-9]{16}|1842[0-9]{16}|1843[0-9]{16}|18440[0-9]{15}|18441[0-9]{15}|18442[0-9]{15}|18443[0-9]{15}|18444[0-9]{15}|18445[0-9]{15}|184460[0-9]{14}|184461[0-9]{14}|184462[0-9]{14}|184463[0-9]{14}|184464[0-9]{14}|184465[0-9]{14}|184466[0-9]{14}|1844670[0-9]{13}|1844671[0-9]{13}|1844672[0-9]{13}|1844673[0-9]{13}|18446740[0-9]{12}|18446741[0-9]{12}|18446742[0-9]{12}|18446743[0-9]{12}|1844674400[0-9]{10}|1844674401[0-9]{10}|1844674402[0-9]{10}|1844674403[0-9]{10}|1844674404[0-9]{10}|1844674405[0-9]{10}|1844674406[0-9]{10}|18446744070[0-9]{9}|18446744071[0-9]{9}|18446744072[0-9]{9}|184467440730[0-9]{8}|184467440731[0-9]{8}|184467440732[0-9]{8}|184467440733[0-9]{8}|184467440734[0-9]{8}|184467440735[0-9]{8}|184467440736[0-9]{8}|18446744073700[0-9]{6}|18446744073701[0-9]{6}|18446744073702[0-9]{6}|18446744073703[0-9]{6}|18446744073704[0-9]{6}|18446744073705[0-9]{6}|18446744073706[0-9]{6}|18446744073707[0-9]{6}|18446744073708[0-9]{6}|184467440737090[0-9]{5}|184467440737091[0-9]{5}|184467440737092[0-9]{5}|184467440737093[0-9]{5}|184467440737094[0-9]{5}|1844674407370950[0-9]{4}|1844674407370951[0-9]{4}|1844674407370952[0-9]{4}|1844674407370953[0-9]{4}|1844674407370954[0-9]{4}|18446744073709550[0-9]{3}|184467440737095510[0-9]{2}|184467440737095511[0-9]{2}|184467440737095512[0-9]{2}|184467440737095513[0-9]{2}|184467440737095514[0-9]{2}|184467440737095515[0-9]{2}|1844674407370955160[0-9]{1}|18446744073709551610|18446744073709551611|18446744073709551612|18446744073709551613|18446744073709551614|18446744073709551615)(?![\\s\\S])",
                    "x-minimum": "1",
                    "x-maximum": "18446744073709551615",
                    "description": "Целое 1..18446744073709551615, каноническая десятичная строка; обе границы проверяются схемой."
                  },
                  "state": {
                    "const": "revoked"
                  },
                  "roles": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "observer",
                        "operator",
                        "maintainer",
                        "trustAdmin"
                      ]
                    },
                    "minItems": 1,
                    "maxItems": 4,
                    "uniqueItems": true
                  },
                  "resourceIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "pattern": "^[A-Za-z0-9_.:-]{1,32}$"
                    },
                    "minItems": 1,
                    "maxItems": 256,
                    "uniqueItems": true
                  }
                },
                "required": [
                  "principalId",
                  "keyId",
                  "generation",
                  "state",
                  "roles",
                  "resourceIds"
                ],
                "additionalProperties": false
              }
            ]
          },
          "minItems": 0,
          "maxItems": 256
        },
        "firmwareKeys": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "keyId": {
                "type": "string",
                "pattern": "^[A-Za-z0-9_.:-]{1,32}$"
              },
              "generation": {
                "type": "string",
                "pattern": "^(?:1|2|3|4|5|6|7|8|9|1[0-9]{1}|2[0-9]{1}|3[0-9]{1}|4[0-9]{1}|5[0-9]{1}|6[0-9]{1}|7[0-9]{1}|8[0-9]{1}|9[0-9]{1}|1[0-9]{2}|2[0-9]{2}|3[0-9]{2}|4[0-9]{2}|5[0-9]{2}|6[0-9]{2}|7[0-9]{2}|8[0-9]{2}|9[0-9]{2}|1[0-9]{3}|2[0-9]{3}|3[0-9]{3}|4[0-9]{3}|5[0-9]{3}|6[0-9]{3}|7[0-9]{3}|8[0-9]{3}|9[0-9]{3}|1[0-9]{4}|2[0-9]{4}|3[0-9]{4}|4[0-9]{4}|5[0-9]{4}|6[0-9]{4}|7[0-9]{4}|8[0-9]{4}|9[0-9]{4}|1[0-9]{5}|2[0-9]{5}|3[0-9]{5}|4[0-9]{5}|5[0-9]{5}|6[0-9]{5}|7[0-9]{5}|8[0-9]{5}|9[0-9]{5}|1[0-9]{6}|2[0-9]{6}|3[0-9]{6}|4[0-9]{6}|5[0-9]{6}|6[0-9]{6}|7[0-9]{6}|8[0-9]{6}|9[0-9]{6}|1[0-9]{7}|2[0-9]{7}|3[0-9]{7}|4[0-9]{7}|5[0-9]{7}|6[0-9]{7}|7[0-9]{7}|8[0-9]{7}|9[0-9]{7}|1[0-9]{8}|2[0-9]{8}|3[0-9]{8}|4[0-9]{8}|5[0-9]{8}|6[0-9]{8}|7[0-9]{8}|8[0-9]{8}|9[0-9]{8}|1[0-9]{9}|2[0-9]{9}|3[0-9]{9}|4[0-9]{9}|5[0-9]{9}|6[0-9]{9}|7[0-9]{9}|8[0-9]{9}|9[0-9]{9}|1[0-9]{10}|2[0-9]{10}|3[0-9]{10}|4[0-9]{10}|5[0-9]{10}|6[0-9]{10}|7[0-9]{10}|8[0-9]{10}|9[0-9]{10}|1[0-9]{11}|2[0-9]{11}|3[0-9]{11}|4[0-9]{11}|5[0-9]{11}|6[0-9]{11}|7[0-9]{11}|8[0-9]{11}|9[0-9]{11}|1[0-9]{12}|2[0-9]{12}|3[0-9]{12}|4[0-9]{12}|5[0-9]{12}|6[0-9]{12}|7[0-9]{12}|8[0-9]{12}|9[0-9]{12}|1[0-9]{13}|2[0-9]{13}|3[0-9]{13}|4[0-9]{13}|5[0-9]{13}|6[0-9]{13}|7[0-9]{13}|8[0-9]{13}|9[0-9]{13}|1[0-9]{14}|2[0-9]{14}|3[0-9]{14}|4[0-9]{14}|5[0-9]{14}|6[0-9]{14}|7[0-9]{14}|8[0-9]{14}|9[0-9]{14}|1[0-9]{15}|2[0-9]{15}|3[0-9]{15}|4[0-9]{15}|5[0-9]{15}|6[0-9]{15}|7[0-9]{15}|8[0-9]{15}|9[0-9]{15}|1[0-9]{16}|2[0-9]{16}|3[0-9]{16}|4[0-9]{16}|5[0-9]{16}|6[0-9]{16}|7[0-9]{16}|8[0-9]{16}|9[0-9]{16}|1[0-9]{17}|2[0-9]{17}|3[0-9]{17}|4[0-9]{17}|5[0-9]{17}|6[0-9]{17}|7[0-9]{17}|8[0-9]{17}|9[0-9]{17}|1[0-9]{18}|2[0-9]{18}|3[0-9]{18}|4[0-9]{18}|5[0-9]{18}|6[0-9]{18}|7[0-9]{18}|8[0-9]{18}|9[0-9]{18}|10[0-9]{18}|11[0-9]{18}|12[0-9]{18}|13[0-9]{18}|14[0-9]{18}|15[0-9]{18}|16[0-9]{18}|17[0-9]{18}|180[0-9]{17}|181[0-9]{17}|182[0-9]{17}|183[0-9]{17}|1840[0-9]{16}|1841[0-9]{16}|1842[0-9]{16}|1843[0-9]{16}|18440[0-9]{15}|18441[0-9]{15}|18442[0-9]{15}|18443[0-9]{15}|18444[0-9]{15}|18445[0-9]{15}|184460[0-9]{14}|184461[0-9]{14}|184462[0-9]{14}|184463[0-9]{14}|184464[0-9]{14}|184465[0-9]{14}|184466[0-9]{14}|1844670[0-9]{13}|1844671[0-9]{13}|1844672[0-9]{13}|1844673[0-9]{13}|18446740[0-9]{12}|18446741[0-9]{12}|18446742[0-9]{12}|18446743[0-9]{12}|1844674400[0-9]{10}|1844674401[0-9]{10}|1844674402[0-9]{10}|1844674403[0-9]{10}|1844674404[0-9]{10}|1844674405[0-9]{10}|1844674406[0-9]{10}|18446744070[0-9]{9}|18446744071[0-9]{9}|18446744072[0-9]{9}|184467440730[0-9]{8}|184467440731[0-9]{8}|184467440732[0-9]{8}|184467440733[0-9]{8}|184467440734[0-9]{8}|184467440735[0-9]{8}|184467440736[0-9]{8}|18446744073700[0-9]{6}|18446744073701[0-9]{6}|18446744073702[0-9]{6}|18446744073703[0-9]{6}|18446744073704[0-9]{6}|18446744073705[0-9]{6}|18446744073706[0-9]{6}|18446744073707[0-9]{6}|18446744073708[0-9]{6}|184467440737090[0-9]{5}|184467440737091[0-9]{5}|184467440737092[0-9]{5}|184467440737093[0-9]{5}|184467440737094[0-9]{5}|1844674407370950[0-9]{4}|1844674407370951[0-9]{4}|1844674407370952[0-9]{4}|1844674407370953[0-9]{4}|1844674407370954[0-9]{4}|18446744073709550[0-9]{3}|184467440737095510[0-9]{2}|184467440737095511[0-9]{2}|184467440737095512[0-9]{2}|184467440737095513[0-9]{2}|184467440737095514[0-9]{2}|184467440737095515[0-9]{2}|1844674407370955160[0-9]{1}|18446744073709551610|18446744073709551611|18446744073709551612|18446744073709551613|18446744073709551614|18446744073709551615)(?![\\s\\S])",
                "x-minimum": "1",
                "x-maximum": "18446744073709551615",
                "description": "Целое 1..18446744073709551615, каноническая десятичная строка; обе границы проверяются схемой."
              },
              "state": {
                "enum": [
                  "staged",
                  "active",
                  "revoked"
                ]
              },
              "curve": {
                "const": "GC256A"
              },
              "x": {
                "type": "string",
                "pattern": "^[0-9a-f]{64}$"
              },
              "y": {
                "type": "string",
                "pattern": "^[0-9a-f]{64}$"
              },
              "deviceKinds": {
                "type": "array",
                "items": {
                  "enum": [
                    "vau",
                    "siren"
                  ]
                },
                "minItems": 1,
                "maxItems": 2,
                "uniqueItems": true
              },
              "hardwareRevisions": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9_.:-]{1,32}$"
                },
                "minItems": 1,
                "maxItems": 64,
                "uniqueItems": true
              }
            },
            "required": [
              "keyId",
              "generation",
              "state",
              "curve",
              "x",
              "y",
              "deviceKinds",
              "hardwareRevisions"
            ],
            "additionalProperties": false
          },
          "minItems": 0,
          "maxItems": 64
        }
      },
      "required": [
        "schemaVersion",
        "deviceId",
        "generation",
        "principals",
        "firmwareKeys"
      ],
      "additionalProperties": false
    },
    "authorityKeyId": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_.:-]{1,32}$"
    },
    "signature": {
      "type": "string",
      "pattern": "^[0-9a-f]{128}$"
    }
  },
  "required": [
    "payload",
    "authorityKeyId",
    "signature"
  ],
  "additionalProperties": false
}
