Files
overcrawlrr/schema/schema.json

264 lines
7.6 KiB
JSON

{
"title": "Overcrawlrr configuration",
"type": "object",
"properties": {
"config": {
"type": "object",
"required": ["overseerr", "discovery", "rulesets"],
"properties": {
"overseerr": { "$ref": "#/definitions/overseer" },
"plex": { "$ref": "#/definitions/plex" },
"discovery": { "$ref": "#/definitions/discovery"},
"smartRecommendations": { "$ref": "#/definitions/smartRecommendations"},
"rulesets": { "$ref": "#/definitions/rulesets"}
}
}
},
"definitions": {
"overseer": {
"$id": "#/definitions/overseer",
"type": "object",
"required": ["apiUrl", "user", "password"],
"properties": {
"apiUrl": { "type": "string" },
"user": { "type": "string" },
"password": { "type": "string" },
"dryRun": { "type": "boolean" }
}
},
"plex": {
"$id": "#/definitions/plex",
"type": "object",
"required": ["apiUrl", "plexToken"],
"properties": {
"apiUrl": { "type": "string" },
"plexToken": { "type": "string" }
}
},
"discovery": {
"$id": "#/definitions/discovery",
"type": "object",
"required": ["cron", "streams", "ruleset"],
"properties": {
"cron": { "type": "string" },
"ruleset": { "type": "string" },
"streams": { "type": "array", "items": { "type": "string" }}
}
},
"smartRecommendations": {
"$id": "#/definitions/smartRecommendations",
"type": "object",
"required": ["cron", "plexLibrary", "ruleset", "minimumRating"],
"properties": {
"cron": { "type": "string" },
"plexLibrary": { "type": "string" },
"ruleset": { "type": "string" },
"minimumRating": { "type": "number"}
}
},
"rulesets": {
"$id": "#/definitions/rulesets",
"type": "array",
"items": { "$ref": "#/definitions/ruleset" }
},
"ruleset": {
"$id": "#/definitions/ruleset",
"type": "object",
"required": ["name", "rules"],
"properties": {
"name": { "type": "string" },
"extends": { "type": "string" },
"rules": { "type": "array", "items": { "$ref": "#/definitions/rule" }}
}
},
"rule": {
"$id": "#/definitions/rule",
"type": "object",
"required": ["name", "whenMatch", "action"],
"properties": {
"name": { "type": "string" },
"whenMatch": { "type": "array", "items": { "$ref": "#/definitions/predicate" }},
"action": { "type": "string", "enum": ["accept", "reject", "skip"]},
"with": { "$ref": "#/definitions/ruleParameters" }
},
"additionalProperties": false
},
"ruleParameters": {
"$id": "#/definitions/ruleParameters",
"type": "object",
"properties": {
"radarr": { "$ref": "#/definitions/ruleServiceParameters"}
},
"additionalProperties": false
},
"ruleServiceParameters": {
"$id": "#/definitions/ruleServiceParameters",
"type": "object",
"properties": {
"server": { "type": "string"},
"profile": { "type": "string"}
},
"additionalProperties": false
},
"predicate": {
"$id": "#/definitions/predicate",
"type": "object",
"properties": {
"or": { "$ref": "#/definitions/orPredicate" },
"and": { "$ref": "#/definitions/andPredicate" },
"not": { "$ref": "#/definitions/notPredicate" },
"adult": { "$ref": "#/definitions/adultPredicate" },
"age": { "$ref": "#/definitions/agePredicate" },
"score": { "$ref": "#/definitions/scorePredicate" },
"genre": { "$ref": "#/definitions/genrePredicate" },
"keyword": { "$ref": "#/definitions/keywordPredicate" },
"watchProviders": { "$ref": "#/definitions/watchProvidersPredicate" },
"voteCount": { "$ref": "#/definitions/voteCountPredicate" },
"cast": { "$ref": "#/definitions/castPredicate" },
"crew": { "$ref": "#/definitions/crewPredicate" },
"released": { "$ref": "#/definitions/releasedPredicate" },
"runtime": { "$ref": "#/definitions/runtimePredicate" },
"productionCompany": { "$ref": "#/definitions/productionCompanyPredicate" },
"originalLanguage": { "$ref": "#/definitions/originalLanguagePredicate" },
"status": { "$ref": "#/definitions/statusPredicate" }
},
"additionalProperties": false
},
"orPredicate": {
"$id": "#/definitions/orPredicate",
"type": "array",
"items": { "$ref": "#/definitions/predicate" }
},
"andPredicate": {
"$id": "#/definitions/andPredicate",
"type": "array",
"items": { "$ref": "#/definitions/predicate" }
},
"notPredicate": {
"$id": "#/definitions/notPredicate",
"type": "array",
"items": { "$ref": "#/definitions/predicate" }
},
"adultPredicate": {
"$id": "#/definitions/adultPredicate",
"type": "string",
"enum": ["yes", "no"]
},
"agePredicate": {
"$id": "#/definitions/agePredicate",
"type": "string"
},
"releasedPredicate": {
"$id": "#/definitions/releasedPredicate",
"type": "string",
"enum": ["yes", "no"]
},
"scorePredicate": {
"$id": "#/definitions/scorePredicate",
"type": "string"
},
"voteCountPredicate": {
"$id": "#/definitions/voteCountPredicate",
"type": "string"
},
"genrePredicate": {
"$id": "#/definitions/genrePredicate",
"oneOf": [
{ "type": "string" },
{ "type": "array", "items": { "type": "string" }}
]
},
"keywordPredicate": {
"$id": "#/definitions/keywordPredicate",
"oneOf": [
{ "type": "string" },
{ "type": "array", "items": { "type": "string" }}
]
},
"watchProvidersPredicate": {
"$id": "#/definitions/watchProvidersPredicate",
"type": "object",
"properties": {
"region": { "type": "string"},
"names": { "type": "array", "items": { "type": "string" }}
}
},
"castPredicate": {
"$id": "#/definitions/castPredicate",
"oneOf": [
{ "type": "array", "items": { "type": "string" }},
{
"type": "object",
"properties": {
"voice": { "type": "string", "enum": ["include", "exclude"]},
"names": { "type": "array", "items": {"type": "string" }}
}
}
]
},
"crewPredicate": {
"$id": "#/definitions/crewPredicate",
"oneOf": [
{ "type": "array", "items": { "type": "string" }},
{
"type": "object",
"properties": {
"job": { "type": "string"},
"names": { "type": "array", "items": {"type": "string" }}
}
}
]
},
"productionCompanyPredicate": {
"$id": "#/definitions/productionCompanyPredicate",
"type": "array",
"items": {"type": "string" }
},
"runtimePredicate": {
"$id": "#/definitions/runtimePredicate",
"type": "string"
},
"originalLanguagePredicate": {
"$id": "#/definitions/originalLanguagePredicate",
"oneOf": [
{ "type": "string" },
{ "type": "array", "items": { "type": "string" }}
]
},
"statusPredicate": {
"$id": "#/definitions/statusPredicate",
"oneOf": [
{ "type": "string" },
{ "type": "array", "items": { "type": "string" }}
]
}
}
}