{ "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" }, "dryRunUrl": { "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"]} } }, "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" }} ] } } }