You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.8 KiB
62 lines
1.8 KiB
{
|
|
"$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"]}
|
|
}
|
|
]
|
|
} |