blob: 9ca943577c6c597d62352e5f128e42497f5029dd [file] [log] [blame]
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://something/app_schema.json",
"definitions": {
"app_id": {"type": "string", "enum": ["0F5096E8", "85CDB22F"]}
},
"type": "object",
"properties": {
"availability": {
"type": "object",
"patternProperties": {
"[0-9a-fA-F]": {
"type": "string",
"enum": ["APP_AVAILABLE", "APP_UNAVAILABLE"]
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"enum": ["LAUNCH", "STOP", "GET_APP_AVAILABILITY"]
},
"responseType": {"type": "string", "enum": ["GET_APP_AVAILABILITY"]},
"requestId": {"type": "integer", "minimum": 0},
"language": {"type": "string", "minLength": 2},
"supportedAppTypes": {
"type": "array",
"items": {"type": "string", "enum": ["ANDROID_TV", "WEB"]}
}
},
"required": ["requestId"],
"allOf": [
{
"if": {
"properties": {"type": {"const": "GET_APP_AVAILABILITY"}},
"required": ["type"]
},
"then": {
"properties": {
"appId": {"type": "array", "items": {"$ref": "#/definitions/app_id"}}
},
"required": ["appId"]
},
"else": {"properties": {"appId": {"$ref": "#/definitions/app_id"}}}
},
{
"if": {
"properties": {"responseType": {"const": "GET_APP_AVAILABILITY"}},
"required": ["responseType"]
},
"then": {"required": ["availability"]}
},
{
"if": {"properties": {"type": {"const": "LAUNCH"}}, "required": ["type"]},
"then": {"required": ["supportedAppTypes", "language", "appId"]}
},
{
"if": {"properties": {"type": {"const": "STOP"}}, "required": ["type"]},
"then": {"required": ["sessionId"]}
}
]
}