Files
ombi-mcp/docs/schema/03-input-schemas.md
gronod 6926a91c80
Build and publish / Test and build (darwin) (pull_request) Successful in 1m52s
Build and publish / Test and build (linux) (pull_request) Successful in 2m30s
Build and publish / Test and build (windows) (pull_request) Successful in 3m7s
Build and publish / Test and build (windows) (push) Successful in 3m7s
Build and publish / Test and build (darwin) (push) Successful in 1m45s
Build and publish / Test and build (linux) (push) Successful in 2m12s
Build and publish / Build and publish Docker image (pull_request) Successful in 1m49s
Build and publish / Build and publish Docker image (push) Successful in 2m4s
Fix M7 admin/server wire contracts
2026-09-19 18:36:03 +01:00

107 KiB

Complete MCP input schemas

These are design contracts, not server implementation code. Each JSON block is a complete JSON Schema 2020-12 object for the named tool. Required discriminators have no implicit defaults. Branches are disjoint and reject irrelevant properties. Scalar bounds are MCP design limits, not claims about Ombi limits. An omitted page means offset 0 and limit 25; omitted sort means request_date descending. Defaults must be applied by the adapter after validation.

The settings schema is long because every section has a typed allowlist; the default core catalogue does not carry this administrative schema. Do not replace it with an arbitrary payload object. Additional runtime constraints and route verification gates in the mapping document remain mandatory.

Tool Bundle Read only Destructive Idempotent Open world
read_search core true false true true
read_discover core true false true true
read_media core true false true true
read_reference core true false true true
read_requests core true false true true
read_request_stats core true false true true
read_issues core true false true true
read_votes core true false true true
read_users core true false true true
read_library core true false true true
read_server core true false true true
read_integration core true false true true
write_request_create core false false false true
write_request_subscribe core false false false true
write_issue_create core false false false true
write_issue_comment core false false false true
write_vote core false false false true
write_user_preferences core false false false true
write_request_moderate moderation false true false true
write_request_delete moderation false true false true
write_request_options moderation false true false true
write_request_reprocess moderation false true false true
write_issue_manage moderation false true false true
read_settings administration true false true true
write_settings_patch administration false true false true
write_user_manage administration false true false true
write_integration_test administration false false false true
write_job_run administration false true false true
write_notification_send administration false false false true
write_retry_remove administration false true false true
read_logs administration true false true true

Search media by text, with explicit movie refinements or a multi-search filter.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "text"
        },
        "media": {
          "type": "string",
          "enum": [
            "movie",
            "tv",
            "artist",
            "album"
          ]
        },
        "query": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "page": {
          "$ref": "#/$defs/page"
        }
      },
      "required": [
        "action",
        "media",
        "query"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "multi"
        },
        "query": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "include": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "movies",
              "tv_shows",
              "music",
              "people"
            ]
          },
          "minItems": 1,
          "maxItems": 4,
          "uniqueItems": true
        },
        "page": {
          "$ref": "#/$defs/page"
        }
      },
      "required": [
        "action",
        "query",
        "include"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "movie_refine"
        },
        "query": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "year": {
          "type": "integer",
          "minimum": 1870,
          "maximum": 9999
        },
        "language": {
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        },
        "page": {
          "$ref": "#/$defs/page"
        }
      },
      "required": [
        "action",
        "query"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "actor"
        },
        "query": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "language": {
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        },
        "page": {
          "$ref": "#/$defs/page"
        }
      },
      "required": [
        "action",
        "query"
      ],
      "additionalProperties": false
    }
  ],
  "$defs": {
    "page": {
      "type": "object",
      "properties": {
        "offset": {
          "type": "integer",
          "minimum": 0,
          "default": 0
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100,
          "default": 25
        }
      },
      "required": [],
      "additionalProperties": false
    }
  }
}

read_discover

Browse supported lists, related movies, actor credits, artist albums, or advanced movie discovery.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "browse"
        },
        "media": {
          "const": "movie"
        },
        "category": {
          "type": "string",
          "enum": [
            "popular",
            "now_playing",
            "top_rated",
            "upcoming",
            "seasonal",
            "requested"
          ]
        },
        "page": {
          "$ref": "#/$defs/page"
        }
      },
      "required": [
        "action",
        "media",
        "category"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "browse"
        },
        "media": {
          "const": "tv"
        },
        "category": {
          "type": "string",
          "enum": [
            "popular",
            "anticipated",
            "most_watched",
            "trending",
            "requested"
          ]
        },
        "page": {
          "$ref": "#/$defs/page"
        }
      },
      "required": [
        "action",
        "media",
        "category"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "similar"
        },
        "tmdb_id": {
          "type": "integer",
          "minimum": 1
        },
        "language": {
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        },
        "page": {
          "$ref": "#/$defs/page"
        }
      },
      "required": [
        "action",
        "tmdb_id"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "collection"
        },
        "collection_id": {
          "type": "integer",
          "minimum": 1
        }
      },
      "required": [
        "action",
        "collection_id"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "credits"
        },
        "person_id": {
          "type": "integer",
          "minimum": 1
        },
        "person_name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "media": {
          "type": "string",
          "enum": [
            "movie",
            "tv"
          ]
        },
        "page": {
          "$ref": "#/$defs/page"
        }
      },
      "required": [
        "action",
        "person_id",
        "person_name",
        "media"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "artist_albums"
        },
        "artist_id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "page": {
          "$ref": "#/$defs/page"
        }
      },
      "required": [
        "action",
        "artist_id"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "advanced_movie"
        },
        "filters": {
          "type": "object",
          "properties": {
            "release_year": {
              "type": "integer",
              "minimum": 1901,
              "maximum": 9999
            },
            "decade": {
              "type": "integer",
              "minimum": 1870,
              "maximum": 9990,
              "multipleOf": 10
            },
            "genre_ids": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 1
              },
              "minItems": 1,
              "maxItems": 100,
              "uniqueItems": true
            },
            "keyword_ids": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 1
              },
              "minItems": 1,
              "maxItems": 100,
              "uniqueItems": true
            },
            "watch_provider_ids": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 1
              },
              "minItems": 1,
              "maxItems": 100,
              "uniqueItems": true
            }
          },
          "required": [],
          "additionalProperties": false,
          "minProperties": 1
        },
        "page": {
          "$ref": "#/$defs/page"
        }
      },
      "required": [
        "action",
        "filters"
      ],
      "additionalProperties": false
    }
  ],
  "$defs": {
    "page": {
      "type": "object",
      "properties": {
        "offset": {
          "type": "integer",
          "minimum": 0,
          "default": 0
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100,
          "default": 25
        }
      },
      "required": [],
      "additionalProperties": false
    }
  }
}

read_media

Get media details, ratings or streaming availability using an explicit identifier namespace. For TV details, provider selects the namespace id belongs to: tmdb resolves via v2 Search/tv/moviedb/{id} and tvdb via the legacy v1 Search/tv/info/{tvdbId} route (the v2 Search/tv/{id} route is a TMDB-keyed alias, never a TVDB lookup).

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": { "const": "details" },
        "target": { "$ref": "#/$defs/external" }
      },
      "required": ["action", "target"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "by_request" },
        "media": { "type": "string", "enum": ["movie", "tv", "album"] },
        "request_id": { "type": "integer", "minimum": 1 }
      },
      "required": ["action", "media", "request_id"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "movie_localized" },
        "tmdb_id": { "type": "integer", "minimum": 1 },
        "language": { "type": "string", "minLength": 1, "maxLength": 20 }
      },
      "required": ["action", "tmdb_id", "language"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "ratings" },
        "media": { "type": "string", "enum": ["movie", "tv"] },
        "name": { "type": "string", "minLength": 1, "maxLength": 300 },
        "year": { "type": "integer", "minimum": 1870, "maximum": 9999 }
      },
      "required": ["action", "media", "name", "year"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "streaming" },
        "media": { "type": "string", "enum": ["movie", "tv"] },
        "tmdb_id": { "type": "integer", "minimum": 1 }
      },
      "required": ["action", "media", "tmdb_id"],
      "additionalProperties": false
    }
  ],
  "$defs": {
    "external": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "media": { "const": "movie" },
            "provider": { "const": "tmdb" },
            "id": { "type": "integer", "minimum": 1 }
          },
          "required": ["media", "provider", "id"],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "media": { "const": "movie" },
            "provider": { "const": "imdb" },
            "id": { "type": "string", "minLength": 1, "maxLength": 32, "pattern": "^tt[0-9]+$" }
          },
          "required": ["media", "provider", "id"],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "media": { "const": "tv" },
            "provider": { "type": "string", "enum": ["tmdb", "tvdb"] },
            "id": { "type": "integer", "minimum": 1 }
          },
          "required": ["media", "provider", "id"],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "media": { "type": "string", "enum": ["artist", "album"] },
            "provider": { "const": "musicbrainz" },
            "id": { "type": "string", "minLength": 1, "maxLength": 100 }
          },
          "required": ["media", "provider", "id"],
          "additionalProperties": false
        }
      ]
    }
  }
}

read_reference

Read genres, languages, keyword/provider lookups, supported countries or issue categories.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "genres"
        },
        "media": {
          "type": "string",
          "enum": [
            "movie",
            "tv"
          ]
        }
      },
      "required": [
        "action",
        "media"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "languages"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "keywords"
        },
        "query": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        }
      },
      "required": [
        "action",
        "query"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "keyword"
        },
        "keyword_id": {
          "type": "integer",
          "minimum": 1
        }
      },
      "required": [
        "action",
        "keyword_id"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "watch_providers"
        },
        "media": {
          "type": "string",
          "enum": [
            "movie",
            "tv"
          ]
        },
        "query": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        }
      },
      "required": [
        "action",
        "media"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "streaming_countries"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "issue_categories"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    }
  ]
}

read_requests

List, search or inspect requests; TV list items identify parents or children explicitly.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": { "const": "list" },
        "media": { "type": "string", "enum": ["movie", "tv"] },
        "status": {
          "type": "string",
          "enum": ["all", "pending", "processing", "available", "denied", "unavailable"],
          "default": "all"
        },
        "sort_direction": { "type": "string", "enum": ["asc", "desc"], "default": "desc" },
        "page": { "$ref": "#/$defs/page" }
      },
      "required": ["action", "media"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "list" },
        "media": { "const": "album" },
        "status": {
          "type": "string",
          "enum": ["all", "pending", "processing", "available", "denied"],
          "default": "all"
        },
        "sort_direction": { "type": "string", "enum": ["asc", "desc"], "default": "desc" },
        "page": { "$ref": "#/$defs/page" }
      },
      "required": ["action", "media"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "get" },
        "target": {
          "type": "object",
          "properties": {
            "kind": { "type": "string", "enum": ["movie", "tv_parent"] },
            "id": { "type": "integer", "minimum": 1 }
          },
          "required": ["kind", "id"],
          "additionalProperties": false
        }
      },
      "required": ["action", "target"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "children" },
        "parent_request_id": { "type": "integer", "minimum": 1 },
        "page": { "$ref": "#/$defs/page" }
      },
      "required": ["action", "parent_request_id"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "search" },
        "media": { "type": "string", "enum": ["movie", "tv", "album"] },
        "query": { "type": "string", "minLength": 1, "maxLength": 200 },
        "page": { "$ref": "#/$defs/page" }
      },
      "required": ["action", "media", "query"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "recent" },
        "page": { "$ref": "#/$defs/page" }
      },
      "required": ["action"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "retry_queue" },
        "page": { "$ref": "#/$defs/page" }
      },
      "required": ["action"],
      "additionalProperties": false
    }
  ],
  "$defs": {
    "page": {
      "type": "object",
      "properties": {
        "offset": { "type": "integer", "minimum": 0, "default": 0 },
        "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 25 }
      },
      "required": [],
      "additionalProperties": false
    }
  }
}

read_request_stats

Read request counts, totals, remaining allowance or whether a user has requests.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "counts"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "total"
        },
        "media": {
          "type": "string",
          "enum": [
            "movie",
            "tv",
            "album"
          ]
        }
      },
      "required": [
        "action",
        "media"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "quota"
        },
        "media": {
          "type": "string",
          "enum": [
            "movie",
            "tv",
            "album"
          ]
        }
      },
      "required": [
        "action",
        "media"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "has_requests"
        },
        "user_id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        }
      },
      "required": [
        "action",
        "user_id"
      ],
      "additionalProperties": false
    }
  ]
}

read_issues

Read issue records, provider-grouped summaries, comments or counts.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": { "const": "list" },
        "status": { "type": "string", "enum": ["pending", "in_progress", "resolved", "closed"] },
        "page": { "$ref": "#/$defs/page" }
      },
      "required": ["action", "status"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "summary" },
        "status": { "type": "string", "enum": ["pending", "in_progress", "resolved", "closed"] },
        "page": { "$ref": "#/$defs/page" }
      },
      "required": ["action", "status"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "get" },
        "issue_id": { "type": "integer", "minimum": 1 }
      },
      "required": ["action", "issue_id"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "by_request" },
        "request_id": { "type": "integer", "minimum": 1 }
      },
      "required": ["action", "request_id"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "by_provider" },
        "provider_id": { "type": "string", "minLength": 1, "maxLength": 200 }
      },
      "required": ["action", "provider_id"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "provider_summary" },
        "provider_id": { "type": "string", "minLength": 1, "maxLength": 200 }
      },
      "required": ["action", "provider_id"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "comments" },
        "issue_id": { "type": "integer", "minimum": 1 },
        "page": { "$ref": "#/$defs/page" }
      },
      "required": ["action", "issue_id"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "counts" }
      },
      "required": ["action"],
      "additionalProperties": false
    }
  ],
  "$defs": {
    "page": {
      "type": "object",
      "properties": {
        "offset": { "type": "integer", "minimum": 0, "default": 0 },
        "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 25 }
      },
      "required": [],
      "additionalProperties": false
    }
  }
}

read_votes

Read all voteable requests or votes for a movie, TV or album request.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "list"
        },
        "page": {
          "$ref": "#/$defs/page"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "get"
        },
        "media": {
          "type": "string",
          "enum": [
            "movie",
            "tv",
            "album"
          ]
        },
        "request_id": {
          "type": "integer",
          "minimum": 1
        }
      },
      "required": [
        "action",
        "media",
        "request_id"
      ],
      "additionalProperties": false
    }
  ],
  "$defs": {
    "page": {
      "type": "object",
      "properties": {
        "offset": {
          "type": "integer",
          "minimum": 0,
          "default": 0
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100,
          "default": 25
        }
      },
      "required": [],
      "additionalProperties": false
    }
  }
}

read_users

Read the current user or authorized user lookup data; secrets and hidden identities are omitted.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "self"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "list"
        },
        "page": {
          "$ref": "#/$defs/page"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "dropdown"
        },
        "page": {
          "$ref": "#/$defs/page"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "get"
        },
        "user_id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        }
      },
      "required": [
        "action",
        "user_id"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "claims"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "online"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "notification_preferences"
        },
        "user_id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    }
  ],
  "$defs": {
    "page": {
      "type": "object",
      "properties": {
        "offset": {
          "type": "integer",
          "minimum": 0,
          "default": 0
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100,
          "default": 25
        }
      },
      "required": [],
      "additionalProperties": false
    }
  }
}

read_library

Read recent library additions, calendar or media artwork references.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "recent"
        },
        "media": {
          "const": "movie"
        },
        "page": {
          "$ref": "#/$defs/page"
        }
      },
      "required": [
        "action",
        "media"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "recent"
        },
        "media": {
          "const": "tv"
        },
        "grouped": {
          "type": "boolean"
        },
        "page": {
          "$ref": "#/$defs/page"
        }
      },
      "required": [
        "action",
        "media",
        "grouped"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "calendar"
        },
        "page": {
          "$ref": "#/$defs/page"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "image"
        },
        "media": {
          "const": "movie"
        },
        "provider": {
          "const": "tmdb"
        },
        "id": {
          "type": "integer",
          "minimum": 1
        },
        "kind": {
          "type": "string",
          "enum": [
            "poster",
            "background",
            "banner"
          ]
        }
      },
      "required": [
        "action",
        "media",
        "provider",
        "id",
        "kind"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "image"
        },
        "media": {
          "const": "tv"
        },
        "provider": {
          "type": "string",
          "enum": [
            "tmdb",
            "tvdb"
          ]
        },
        "id": {
          "type": "integer",
          "minimum": 1
        },
        "kind": {
          "type": "string",
          "enum": [
            "poster",
            "background"
          ]
        }
      },
      "required": [
        "action",
        "media",
        "provider",
        "id",
        "kind"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "tv_images"
        },
        "tvdb_id": {
          "type": "integer",
          "minimum": 1
        }
      },
      "required": [
        "action",
        "tvdb_id"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "album_art"
        },
        "musicbrainz_id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        }
      },
      "required": [
        "action",
        "musicbrainz_id"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "default_poster"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "random_background"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "background_info"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    }
  ],
  "$defs": {
    "page": {
      "type": "object",
      "properties": {
        "offset": {
          "type": "integer",
          "minimum": 0,
          "default": 0
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100,
          "default": 25
        }
      },
      "required": [],
      "additionalProperties": false
    }
  }
}

read_server

Read server status, feature availability, version, update information or usage statistics.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "status"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "status_info"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "about"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "update_info"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "update_check"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "landing"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "features"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "stats"
        },
        "from": {
          "type": "string",
          "format": "date-time"
        },
        "to": {
          "type": "string",
          "format": "date-time"
        }
      },
      "required": [
        "action",
        "from",
        "to"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "cron_validate"
        },
        "expression": {
          "type": "string",
          "description": "Quartz cron expression — 6 or 7 fields (seconds minutes hours day-of-month month day-of-week [year]); one of the two day fields must be ?",
          "minLength": 1,
          "maxLength": 200
        }
      },
      "required": [
        "action",
        "expression"
      ],
      "additionalProperties": false
    }
  ]
}

read_integration

Read saved integration options without accepting credentials or connection overrides.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "options"
        },
        "service": {
          "const": "radarr"
        },
        "resource": {
          "type": "string",
          "enum": [
            "profiles",
            "root_folders"
          ]
        },
        "variant": {
          "type": "string",
          "enum": [
            "standard",
            "4k"
          ]
        }
      },
      "required": [
        "action",
        "service",
        "resource",
        "variant"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "options"
        },
        "service": {
          "const": "radarr"
        },
        "resource": {
          "type": "string",
          "enum": [
            "tags",
            "enabled"
          ]
        }
      },
      "required": [
        "action",
        "service",
        "resource"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "options"
        },
        "service": {
          "const": "sonarr"
        },
        "resource": {
          "type": "string",
          "enum": [
            "profiles",
            "root_folders",
            "tags",
            "language_profiles",
            "enabled",
            "version"
          ]
        }
      },
      "required": [
        "action",
        "service",
        "resource"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "options"
        },
        "service": {
          "const": "lidarr"
        },
        "resource": {
          "type": "string",
          "enum": [
            "profiles",
            "root_folders",
            "metadata",
            "enabled"
          ]
        }
      },
      "required": [
        "action",
        "service",
        "resource"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "options"
        },
        "service": {
          "const": "couchpotato"
        },
        "resource": {
          "const": "profiles"
        }
      },
      "required": [
        "action",
        "service",
        "resource"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "plex"
        },
        "resource": {
          "type": "string",
          "enum": [
            "servers",
            "friends",
            "watchlist_users"
          ]
        }
      },
      "required": [
        "action",
        "resource"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "plex_libraries"
        },
        "machine_id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        }
      },
      "required": [
        "action",
        "machine_id"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "media_server"
        },
        "service": {
          "type": "string",
          "enum": [
            "emby",
            "jellyfin"
          ]
        },
        "resource": {
          "const": "users"
        }
      },
      "required": [
        "action",
        "service",
        "resource"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "media_server"
        },
        "service": {
          "type": "string",
          "enum": [
            "emby",
            "jellyfin"
          ]
        },
        "resource": {
          "type": "string",
          "enum": [
            "info",
            "libraries"
          ]
        },
        "server_id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        }
      },
      "required": [
        "action",
        "service",
        "resource",
        "server_id"
      ],
      "additionalProperties": false
    }
  ]
}

write_request_create

Create one movie, TV or album request, or explicitly request a collection; no automatic write fallback. For TV, provider selects the namespace id belongs to (tmdb or tvdb); season selection expands episode lists from a details read in the same namespace.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": { "const": "movie" },
        "tmdb_id": { "type": "integer", "minimum": 1 },
        "is_4k": { "type": "boolean", "default": false },
        "language": { "type": "string", "minLength": 1, "maxLength": 20 },
        "on_behalf_user_id": { "type": "string", "minLength": 1, "maxLength": 200 },
        "overrides": { "$ref": "#/$defs/overrides" }
      },
      "required": ["action", "tmdb_id"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "tv" },
        "provider": { "const": "tmdb" },
        "id": { "type": "integer", "minimum": 1 },
        "selection": { "$ref": "#/$defs/selection" },
        "language": { "type": "string", "minLength": 1, "maxLength": 20 },
        "language_profile_id": { "type": "integer", "minimum": 1 },
        "on_behalf_user_id": { "type": "string", "minLength": 1, "maxLength": 200 },
        "overrides": { "$ref": "#/$defs/overrides" }
      },
      "required": ["action", "provider", "id", "selection"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "tv" },
        "provider": { "const": "tvdb" },
        "id": { "type": "integer", "minimum": 1 },
        "selection": { "$ref": "#/$defs/selection" },
        "language_profile_id": { "type": "integer", "minimum": 1 },
        "on_behalf_user_id": { "type": "string", "minLength": 1, "maxLength": 200 },
        "overrides": { "$ref": "#/$defs/overrides" }
      },
      "required": ["action", "provider", "id", "selection"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "album" },
        "musicbrainz_id": { "type": "string", "minLength": 1, "maxLength": 100 },
        "requested_by_alias": { "type": "string", "minLength": 1, "maxLength": 200 }
      },
      "required": ["action", "musicbrainz_id"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "collection" },
        "collection_id": { "type": "integer", "minimum": 1 }
      },
      "required": ["action", "collection_id"],
      "additionalProperties": false
    }
  ],
  "$defs": {
    "overrides": {
      "type": "object",
      "properties": {
        "root_folder_id": { "type": "integer", "minimum": 1 },
        "quality_profile_id": { "type": "integer", "minimum": 1 }
      },
      "required": [],
      "additionalProperties": false,
      "minProperties": 1
    },
    "selection": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "mode": { "type": "string", "enum": ["all", "first_season", "latest_season"] }
          },
          "required": ["mode"],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "mode": { "const": "season" },
            "season_numbers": {
              "type": "array",
              "items": { "type": "integer", "minimum": 0 },
              "minItems": 1,
              "maxItems": 200,
              "uniqueItems": true
            }
          },
          "required": ["mode", "season_numbers"],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "mode": { "const": "episodes" },
            "seasons": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "season_number": { "type": "integer", "minimum": 0 },
                  "episodes": {
                    "type": "array",
                    "items": { "type": "integer", "minimum": 1 },
                    "minItems": 1,
                    "maxItems": 1000,
                    "uniqueItems": true
                  }
                },
                "required": ["season_number", "episodes"],
                "additionalProperties": false
              },
              "minItems": 1,
              "maxItems": 200,
              "uniqueItems": true
            }
          },
          "required": ["mode", "seasons"],
          "additionalProperties": false
        }
      ]
    }
  }
}

write_request_subscribe

Subscribe or unsubscribe to a movie or TV request as the configured principal.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "subscribe"
        },
        "media": {
          "type": "string",
          "enum": [
            "movie",
            "tv"
          ]
        },
        "request_id": {
          "type": "integer",
          "minimum": 1
        }
      },
      "required": [
        "action",
        "media",
        "request_id"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "unsubscribe"
        },
        "media": {
          "type": "string",
          "enum": [
            "movie",
            "tv"
          ]
        },
        "request_id": {
          "type": "integer",
          "minimum": 1
        }
      },
      "required": [
        "action",
        "media",
        "request_id"
      ],
      "additionalProperties": false
    }
  ]
}

write_issue_create

Report an issue using a minimal editable body; author and timestamps are owned by Ombi.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "title": { "type": "string", "minLength": 1, "maxLength": 300 },
    "subject": { "type": "string", "minLength": 1, "maxLength": 300 },
    "description": { "type": "string", "minLength": 1, "maxLength": 10000 },
    "category_id": { "type": "integer", "minimum": 1 },
    "request_type": { "type": "string", "enum": ["movie", "tv", "album"] },
    "request_id": { "type": "integer", "minimum": 1 },
    "provider_id": { "type": "string", "minLength": 1, "maxLength": 200 }
  },
  "required": ["title", "description", "category_id", "request_type"],
  "additionalProperties": false,
  "anyOf": [
    { "required": ["request_id"] },
    { "required": ["provider_id"] }
  ]
}

write_issue_comment

Add a comment to an issue as the configured principal.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "issue_id": { "type": "integer", "minimum": 1 },
    "comment": { "type": "string", "minLength": 1, "maxLength": 10000 }
  },
  "required": ["issue_id", "comment"],
  "additionalProperties": false
}

write_vote

Cast a vote on an existing request. Repeating a vote is not assumed idempotent.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "media": { "type": "string", "enum": ["movie", "tv", "album"] },
    "request_id": { "type": "integer", "minimum": 1 },
    "direction": { "type": "string", "enum": ["up", "down"] }
  },
  "required": ["media", "request_id", "direction"],
  "additionalProperties": false
}

write_user_preferences

Set the current user language/country or explicitly unsubscribe a user from the newsletter.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "language"
        },
        "language": {
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        }
      },
      "required": [
        "action",
        "language"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "streaming_country"
        },
        "country_code": {
          "type": "string",
          "minLength": 1,
          "maxLength": 2,
          "pattern": "^[A-Z]{2}$"
        }
      },
      "required": [
        "action",
        "country_code"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "unsubscribe_newsletter"
        },
        "user_id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        }
      },
      "required": [
        "action",
        "user_id"
      ],
      "additionalProperties": false
    }
  ]
}

write_request_moderate

Approve, deny or change request availability; TV targets are child requests after adapter verification.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": { "const": "approve" },
        "media": { "const": "movie" },
        "request_id": { "type": "integer", "minimum": 1 },
        "is_4k": { "type": "boolean", "default": false }
      },
      "required": ["action", "media", "request_id"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "deny" },
        "media": { "const": "movie" },
        "request_id": { "type": "integer", "minimum": 1 },
        "is_4k": { "type": "boolean", "default": false },
        "reason": { "type": "string", "minLength": 1, "maxLength": 2000 }
      },
      "required": ["action", "media", "request_id", "reason"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "mark_available" },
        "media": { "const": "movie" },
        "request_id": { "type": "integer", "minimum": 1 },
        "is_4k": { "type": "boolean", "default": false }
      },
      "required": ["action", "media", "request_id"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "mark_unavailable" },
        "media": { "const": "movie" },
        "request_id": { "type": "integer", "minimum": 1 },
        "is_4k": { "type": "boolean", "default": false }
      },
      "required": ["action", "media", "request_id"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "approve" },
        "media": { "type": "string", "enum": ["tv", "album"] },
        "request_id": { "type": "integer", "minimum": 1 }
      },
      "required": ["action", "media", "request_id"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "deny" },
        "media": { "type": "string", "enum": ["tv", "album"] },
        "request_id": { "type": "integer", "minimum": 1 },
        "reason": { "type": "string", "minLength": 1, "maxLength": 2000 }
      },
      "required": ["action", "media", "request_id", "reason"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "mark_available" },
        "media": { "type": "string", "enum": ["tv", "album"] },
        "request_id": { "type": "integer", "minimum": 1 }
      },
      "required": ["action", "media", "request_id"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "mark_unavailable" },
        "media": { "type": "string", "enum": ["tv", "album"] },
        "request_id": { "type": "integer", "minimum": 1 }
      },
      "required": ["action", "media", "request_id"],
      "additionalProperties": false
    }
  ]
}

write_request_delete

Delete one request. Explicitly distinguish a TV parent from one child.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "target": { "$ref": "#/$defs/target" }
  },
  "required": ["target"],
  "additionalProperties": false,
  "$defs": {
    "target": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "kind": { "type": "string", "enum": ["movie", "tv_parent", "tv_child", "album"] },
            "id": { "type": "integer", "minimum": 1 }
          },
          "required": ["kind", "id"],
          "additionalProperties": false
        }
      ]
    }
  }
}

write_request_options

Change routing/profile options on an existing request with verified target semantics.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": { "const": "advanced" },
        "media": { "type": "string", "enum": ["movie", "tv"] },
        "request_id": { "type": "integer", "minimum": 1 },
        "options": {
          "type": "object",
          "properties": {
            "root_folder_id": { "type": "integer", "minimum": 1 },
            "quality_profile_id": { "type": "integer", "minimum": 1 },
            "language_profile_id": { "type": "integer", "minimum": 1 }
          },
          "required": [],
          "additionalProperties": false,
          "minProperties": 1
        }
      },
      "required": ["action", "media", "request_id", "options"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "tv_root" },
        "parent_request_id": { "type": "integer", "minimum": 1 },
        "root_folder_id": { "type": "integer", "minimum": 1 }
      },
      "required": ["action", "parent_request_id", "root_folder_id"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "tv_quality" },
        "parent_request_id": { "type": "integer", "minimum": 1 },
        "quality_profile_id": { "type": "integer", "minimum": 1 }
      },
      "required": ["action", "parent_request_id", "quality_profile_id"],
      "additionalProperties": false
    }
  ]
}

write_request_reprocess

Resubmit an existing request through its verified media adapter; does not create a retry-queue item.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "request_type": { "type": "string", "enum": ["movie", "tv", "album"] },
    "request_id": { "type": "integer", "minimum": 1 },
    "is_4k": { "type": "boolean", "default": false }
  },
  "required": ["request_type", "request_id"],
  "additionalProperties": false
}

write_issue_manage

Change issue state, delete issues/comments, or manage issue categories.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": { "const": "set_status" },
        "issue_id": { "type": "integer", "minimum": 1 },
        "status": { "type": "string", "enum": ["pending", "in_progress", "resolved", "closed"] }
      },
      "required": ["action", "issue_id", "status"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "delete" },
        "issue_id": { "type": "integer", "minimum": 1 }
      },
      "required": ["action", "issue_id"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "delete_comment" },
        "comment_id": { "type": "integer", "minimum": 1 }
      },
      "required": ["action", "comment_id"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "create_category" },
        "value": { "type": "string", "minLength": 1, "maxLength": 200 }
      },
      "required": ["action", "value"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": { "const": "delete_category" },
        "category_id": { "type": "integer", "minimum": 1 }
      },
      "required": ["action", "category_id"],
      "additionalProperties": false
    }
  ]
}

read_settings

Read a sanitized settings section and an opaque revision for authorized patching.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "section": {
      "type": "string",
      "enum": [
        "custom_page", "ombi", "base_url", "plex", "client_id", "emby",
        "jellyfin", "landingpage", "customization", "default_language",
        "themes", "sonarr", "radarr", "lidarr", "lidarrenabled",
        "authentication", "update", "user_management", "couchpotato",
        "dognzb", "sickrage", "jobs", "issues", "issuesenabled", "vote",
        "voteenabled", "themoviedb", "notifications.email",
        "notifications.email.enabled", "notifications.discord",
        "notifications.telegram", "notifications.pushbullet",
        "notifications.pushover", "notifications.slack",
        "notifications.mattermost", "notifications.twilio",
        "notifications.mobile", "notifications.gotify",
        "notifications.ntfy", "notifications.webhook",
        "notifications.newsletter"
      ]
    }
  },
  "required": ["section"],
  "additionalProperties": false
}

write_settings_patch

Patch typed non-secret settings while preserving omitted/private fields; destination and credential changes are excluded.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "custom_page"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_CustomPageSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "ombi"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_OmbiSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "plex"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Settings_Models_External_PlexSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "emby"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Settings_Models_External_EmbySettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "jellyfin"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Settings_Models_External_JellyfinSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "landingpage"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Settings_Models_LandingPageSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "customization"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_CustomizationSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "sonarr"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_External_SonarrSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "radarr"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_External_RadarrCombinedModel",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "lidarr"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_External_LidarrSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "authentication"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_AuthenticationSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "update"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_UpdateSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "user_management"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_UserManagementSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "couchpotato"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_External_CouchPotatoSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "dognzb"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_External_DogNzbSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "sickrage"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_External_SickRageSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "jobs"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_JobSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "issues"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_IssueSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "vote"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_VoteSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "themoviedb"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Settings_Models_External_TheMovieDbSettings",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "notifications.email"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Models_UI_EmailNotificationsViewModel",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "notifications.discord"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Models_UI_DiscordNotificationsViewModel",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "notifications.telegram"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Models_UI_TelegramNotificationsViewModel",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "notifications.pushbullet"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Models_UI_PushbulletNotificationViewModel",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "notifications.pushover"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Models_UI_PushoverNotificationViewModel",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "notifications.slack"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Models_UI_SlackNotificationsViewModel",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "notifications.mattermost"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Models_UI_MattermostNotificationsViewModel",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "notifications.twilio"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Models_UI_TwilioSettingsViewModel",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "notifications.mobile"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Models_UI_MobileNotificationsViewModel",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "notifications.gotify"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Models_UI_GotifyNotificationViewModel",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "notifications.ntfy"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Models_UI_NtfyNotificationViewModel",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "notifications.webhook"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Models_UI_WebhookNotificationViewModel",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "patch"
        },
        "section": {
          "const": "notifications.newsletter"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "changes": {
          "$ref": "#/$defs/Ombi_Core_Models_UI_NewsletterNotificationViewModel",
          "minProperties": 1
        }
      },
      "required": [
        "action",
        "section",
        "revision",
        "changes"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "feature"
        },
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "enabled": {
          "type": "boolean"
        }
      },
      "required": [
        "action",
        "name",
        "enabled"
      ],
      "additionalProperties": false
    }
  ],
  "$defs": {
    "Ombi_Core_Models_UI_DiscordNotificationsViewModel": {
      "type": "object",
      "properties": {
        "notificationTemplates": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Store_Entities_NotificationTemplates"
          },
          "maxItems": 200
        },
        "enabled": {
          "type": "boolean"
        },
        "username": {
          "type": "string"
        },
        "icon": {
          "type": "string"
        },
        "hideUser": {
          "type": "boolean"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Models_UI_EmailNotificationsViewModel": {
      "type": "object",
      "properties": {
        "notificationTemplates": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Store_Entities_NotificationTemplates"
          },
          "maxItems": 200
        },
        "enabled": {
          "type": "boolean"
        },
        "senderName": {
          "type": "string"
        },
        "senderAddress": {
          "type": "string"
        },
        "username": {
          "type": "string"
        },
        "authentication": {
          "type": "boolean"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Models_UI_GotifyNotificationViewModel": {
      "type": "object",
      "properties": {
        "notificationTemplates": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Store_Entities_NotificationTemplates"
          },
          "maxItems": 200
        },
        "enabled": {
          "type": "boolean"
        },
        "priority": {
          "type": "integer"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Models_UI_MattermostNotificationsViewModel": {
      "type": "object",
      "properties": {
        "notificationTemplates": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Store_Entities_NotificationTemplates"
          },
          "maxItems": 200
        },
        "channel": {
          "type": "string"
        },
        "username": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Models_UI_MobileNotificationsViewModel": {
      "type": "object",
      "properties": {
        "notificationTemplates": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Store_Entities_NotificationTemplates"
          },
          "maxItems": 200
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Models_UI_NewsletterNotificationViewModel": {
      "type": "object",
      "properties": {
        "notificationTemplate": {
          "$ref": "#/$defs/Ombi_Store_Entities_NotificationTemplates"
        },
        "disableTv": {
          "type": "boolean"
        },
        "disableMovies": {
          "type": "boolean"
        },
        "disableMusic": {
          "type": "boolean"
        },
        "enabled": {
          "type": "boolean"
        },
        "externalEmails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 200
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Models_UI_NtfyNotificationViewModel": {
      "type": "object",
      "properties": {
        "notificationTemplates": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Store_Entities_NotificationTemplates"
          },
          "maxItems": 200
        },
        "enabled": {
          "type": "boolean"
        },
        "topic": {
          "type": "string"
        },
        "priority": {
          "type": "integer"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Models_UI_PushbulletNotificationViewModel": {
      "type": "object",
      "properties": {
        "notificationTemplates": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Store_Entities_NotificationTemplates"
          },
          "maxItems": 200
        },
        "enabled": {
          "type": "boolean"
        },
        "channelTag": {
          "type": "string"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Models_UI_PushoverNotificationViewModel": {
      "type": "object",
      "properties": {
        "notificationTemplates": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Store_Entities_NotificationTemplates"
          },
          "maxItems": 200
        },
        "enabled": {
          "type": "boolean"
        },
        "priority": {
          "type": "integer"
        },
        "sound": {
          "type": "string"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Models_UI_SlackNotificationsViewModel": {
      "type": "object",
      "properties": {
        "notificationTemplates": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Store_Entities_NotificationTemplates"
          },
          "maxItems": 200
        },
        "enabled": {
          "type": "boolean"
        },
        "channel": {
          "type": "string"
        },
        "username": {
          "type": "string"
        },
        "iconEmoji": {
          "type": "string"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Models_UI_TelegramNotificationsViewModel": {
      "type": "object",
      "properties": {
        "notificationTemplates": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Store_Entities_NotificationTemplates"
          },
          "maxItems": 200
        },
        "enabled": {
          "type": "boolean"
        },
        "chatId": {
          "type": "string"
        },
        "parseMode": {
          "type": "string"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Models_UI_TwilioSettingsViewModel": {
      "type": "object",
      "properties": {
        "whatsAppSettings": {
          "$ref": "#/$defs/Ombi_Core_Models_UI_WhatsAppSettingsViewModel"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Models_UI_WebhookNotificationViewModel": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Models_UI_WhatsAppSettingsViewModel": {
      "type": "object",
      "properties": {
        "notificationTemplates": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Store_Entities_NotificationTemplates"
          },
          "maxItems": 200
        },
        "enabled": {
          "type": "boolean"
        },
        "from": {
          "type": "string"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Settings_Models_External_EmbySelectedLibraries": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "collectionType": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Settings_Models_External_EmbyServers": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "enableEpisodeSearching": {
          "type": "boolean"
        },
        "embySelectedLibraries": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Core_Settings_Models_External_EmbySelectedLibraries"
          },
          "maxItems": 200
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Settings_Models_External_EmbySettings": {
      "type": "object",
      "properties": {
        "enable": {
          "type": "boolean"
        },
        "servers": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Core_Settings_Models_External_EmbyServers"
          },
          "maxItems": 200
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Settings_Models_External_JellyfinSelectedLibraries": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "collectionType": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Settings_Models_External_JellyfinServers": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "enableEpisodeSearching": {
          "type": "boolean"
        },
        "jellyfinSelectedLibraries": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Core_Settings_Models_External_JellyfinSelectedLibraries"
          },
          "maxItems": 200
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Settings_Models_External_JellyfinSettings": {
      "type": "object",
      "properties": {
        "enable": {
          "type": "boolean"
        },
        "servers": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Core_Settings_Models_External_JellyfinServers"
          },
          "maxItems": 200
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Settings_Models_External_PlexSelectedLibraries": {
      "type": "object",
      "properties": {
        "key": {
          "type": "integer"
        },
        "title": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Settings_Models_External_PlexServers": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "episodeBatchSize": {
          "type": "integer"
        },
        "plexSelectedLibraries": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Core_Settings_Models_External_PlexSelectedLibraries"
          },
          "maxItems": 200
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Settings_Models_External_PlexSettings": {
      "type": "object",
      "properties": {
        "enable": {
          "type": "boolean"
        },
        "enableWatchlistImport": {
          "type": "boolean"
        },
        "monitorAll": {
          "type": "boolean"
        },
        "servers": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Core_Settings_Models_External_PlexServers"
          },
          "maxItems": 200
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Settings_Models_External_TheMovieDbSettings": {
      "type": "object",
      "properties": {
        "showAdultMovies": {
          "type": "boolean"
        },
        "excludedKeywordIds": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "maxItems": 200
        },
        "excludedMovieGenreIds": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "maxItems": 200
        },
        "excludedTvGenreIds": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "maxItems": 200
        },
        "originalLanguages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 200
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Core_Settings_Models_LandingPageSettings": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "noticeEnabled": {
          "type": "boolean"
        },
        "noticeText": {
          "type": "string"
        },
        "timeLimit": {
          "type": "boolean"
        },
        "startDateTime": {
          "type": "string"
        },
        "endDateTime": {
          "type": "string"
        },
        "expired": {
          "type": "boolean"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Helpers_NotificationAgent": {
      "type": "integer",
      "enum": [
        0,
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11
      ]
    },
    "Ombi_Helpers_NotificationType": {
      "type": "integer",
      "enum": [
        0,
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14,
        15,
        16
      ]
    },
    "Ombi_Settings_Settings_Models_AuthenticationSettings": {
      "type": "object",
      "properties": {
        "allowNoPassword": {
          "type": "boolean"
        },
        "requireDigit": {
          "type": "boolean"
        },
        "requiredLength": {
          "type": "integer"
        },
        "requireLowercase": {
          "type": "boolean"
        },
        "requireNonAlphanumeric": {
          "type": "boolean"
        },
        "requireUppercase": {
          "type": "boolean"
        },
        "enableOAuth": {
          "type": "boolean"
        },
        "enableHeaderAuth": {
          "type": "boolean"
        },
        "headerAuthVariable": {
          "type": "string"
        },
        "headerAuthCreateUser": {
          "type": "boolean"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Settings_Settings_Models_Branch": {
      "type": "integer",
      "enum": [
        0,
        1
      ]
    },
    "Ombi_Settings_Settings_Models_CustomPageSettings": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string"
        },
        "html": {
          "type": "string"
        },
        "fontAwesomeIcon": {
          "type": "string"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Settings_Settings_Models_CustomizationSettings": {
      "type": "object",
      "properties": {
        "applicationName": {
          "type": "string"
        },
        "customCss": {
          "type": "string"
        },
        "enableCustomDonations": {
          "type": "boolean"
        },
        "customDonationMessage": {
          "type": "string"
        },
        "recentlyAddedPage": {
          "type": "boolean"
        },
        "useCustomPage": {
          "type": "boolean"
        },
        "hideAvailableFromDiscover": {
          "type": "boolean"
        },
        "hideAvailableRecentlyRequested": {
          "type": "boolean"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Settings_Settings_Models_External_CouchPotatoSettings": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "defaultProfileId": {
          "type": "string"
        },
        "username": {
          "type": "string"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Settings_Settings_Models_External_DogNzbSettings": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "movies": {
          "type": "boolean"
        },
        "tvShows": {
          "type": "boolean"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Settings_Settings_Models_External_DropDownModel": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string"
        },
        "display": {
          "type": "string"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Settings_Settings_Models_External_LidarrSettings": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "defaultQualityProfile": {
          "type": "string"
        },
        "defaultRootPath": {
          "type": "string"
        },
        "albumFolder": {
          "type": "boolean"
        },
        "metadataProfileId": {
          "type": "integer"
        },
        "addOnly": {
          "type": "boolean"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Settings_Settings_Models_External_Radarr4KSettings": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "defaultQualityProfile": {
          "type": "string"
        },
        "defaultRootPath": {
          "type": "string"
        },
        "addOnly": {
          "type": "boolean"
        },
        "minimumAvailability": {
          "type": "string"
        },
        "scanForAvailability": {
          "type": "boolean"
        },
        "prioritizeArrAvailability": {
          "type": "boolean"
        },
        "tag": {
          "type": "integer"
        },
        "sendUserTags": {
          "type": "boolean"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Settings_Settings_Models_External_RadarrCombinedModel": {
      "type": "object",
      "properties": {
        "radarr": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_External_RadarrSettings"
        },
        "radarr4K": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_External_Radarr4KSettings"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Settings_Settings_Models_External_RadarrSettings": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "defaultQualityProfile": {
          "type": "string"
        },
        "defaultRootPath": {
          "type": "string"
        },
        "addOnly": {
          "type": "boolean"
        },
        "minimumAvailability": {
          "type": "string"
        },
        "scanForAvailability": {
          "type": "boolean"
        },
        "prioritizeArrAvailability": {
          "type": "boolean"
        },
        "tag": {
          "type": "integer"
        },
        "sendUserTags": {
          "type": "boolean"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Settings_Settings_Models_External_SickRageSettings": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "qualityProfile": {
          "type": "string"
        },
        "qualities": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Ombi_Settings_Settings_Models_External_DropDownModel"
          },
          "maxItems": 200
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Settings_Settings_Models_External_SonarrSettings": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "qualityProfile": {
          "type": "string"
        },
        "seasonFolders": {
          "type": "boolean"
        },
        "rootPath": {
          "type": "string"
        },
        "qualityProfileAnime": {
          "type": "string"
        },
        "rootPathAnime": {
          "type": "string"
        },
        "animeTag": {
          "type": "integer"
        },
        "tag": {
          "type": "integer"
        },
        "sendUserTags": {
          "type": "boolean"
        },
        "addOnly": {
          "type": "boolean"
        },
        "languageProfile": {
          "type": "integer"
        },
        "languageProfileAnime": {
          "type": "integer"
        },
        "scanForAvailability": {
          "type": "boolean"
        },
        "prioritizeArrAvailability": {
          "type": "boolean"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Settings_Settings_Models_IssueSettings": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "enableInProgress": {
          "type": "boolean"
        },
        "deleteIssues": {
          "type": "boolean"
        },
        "daysAfterResolvedToDelete": {
          "type": "integer"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Settings_Settings_Models_JobSettings": {
      "type": "object",
      "properties": {
        "embyContentSync": {
          "type": "string"
        },
        "embyRecentlyAddedSync": {
          "type": "string"
        },
        "jellyfinContentSync": {
          "type": "string"
        },
        "sonarrSync": {
          "type": "string"
        },
        "radarrSync": {
          "type": "string"
        },
        "plexContentSync": {
          "type": "string"
        },
        "plexRecentlyAddedSync": {
          "type": "string"
        },
        "couchPotatoSync": {
          "type": "string"
        },
        "automaticUpdater": {
          "type": "string"
        },
        "userImporter": {
          "type": "string"
        },
        "sickRageSync": {
          "type": "string"
        },
        "newsletter": {
          "type": "string"
        },
        "lidarrArtistSync": {
          "type": "string"
        },
        "issuesPurge": {
          "type": "string"
        },
        "retryRequests": {
          "type": "string"
        },
        "mediaDatabaseRefresh": {
          "type": "string"
        },
        "autoDeleteRequests": {
          "type": "string"
        },
        "plexWatchlistImport": {
          "type": "string"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Settings_Settings_Models_OmbiSettings": {
      "type": "object",
      "properties": {
        "collectAnalyticData": {
          "type": "boolean"
        },
        "doNotSendNotificationsForAutoApprove": {
          "type": "boolean"
        },
        "hideRequestsUsers": {
          "type": "boolean"
        },
        "disableHealthChecks": {
          "type": "boolean"
        },
        "defaultLanguageCode": {
          "type": "string"
        },
        "autoDeleteAvailableRequests": {
          "type": "boolean"
        },
        "autoDeleteAfterDays": {
          "type": "integer"
        },
        "branch": {
          "$ref": "#/$defs/Ombi_Settings_Settings_Models_Branch"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Settings_Settings_Models_UpdateSettings": {
      "type": "object",
      "properties": {
        "autoUpdateEnabled": {
          "type": "boolean"
        },
        "username": {
          "type": "string"
        },
        "testMode": {
          "type": "boolean"
        },
        "updateSchedule": {
          "type": "string"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Settings_Settings_Models_UserManagementSettings": {
      "type": "object",
      "properties": {
        "importPlexAdmin": {
          "type": "boolean"
        },
        "importPlexUsers": {
          "type": "boolean"
        },
        "cleanupPlexUsers": {
          "type": "boolean"
        },
        "importEmbyUsers": {
          "type": "boolean"
        },
        "importJellyfinUsers": {
          "type": "boolean"
        },
        "movieRequestLimit": {
          "type": "integer"
        },
        "movieRequestLimitType": {
          "$ref": "#/$defs/Ombi_Store_Entities_RequestLimitType"
        },
        "episodeRequestLimit": {
          "type": "integer"
        },
        "episodeRequestLimitType": {
          "$ref": "#/$defs/Ombi_Store_Entities_RequestLimitType"
        },
        "musicRequestLimit": {
          "type": "integer"
        },
        "musicRequestLimitType": {
          "$ref": "#/$defs/Ombi_Store_Entities_RequestLimitType"
        },
        "defaultStreamingCountry": {
          "type": "string"
        },
        "defaultRoles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 200
        },
        "bannedPlexUserIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 200
        },
        "bannedEmbyUserIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 200
        },
        "bannedJellyfinUserIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 200
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Settings_Settings_Models_VoteSettings": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "movieVoteMax": {
          "type": "integer"
        },
        "musicVoteMax": {
          "type": "integer"
        },
        "tvShowVoteMax": {
          "type": "integer"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Store_Entities_NotificationTemplates": {
      "type": "object",
      "properties": {
        "notification_type": {
          "type": "string",
          "enum": [
            "new_request",
            "issue",
            "request_available",
            "request_approved",
            "admin_note",
            "test",
            "request_declined",
            "item_added_to_fault_queue",
            "welcome_email",
            "issue_resolved",
            "issue_comment",
            "newsletter",
            "partially_available",
            "plex_watchlist_token_expired",
            "request_deleted",
            "issue_in_progress",
            "issue_deleted"
          ]
        },
        "agent": {
          "type": "string",
          "enum": [
            "email",
            "discord",
            "pushbullet",
            "pushover",
            "telegram",
            "slack",
            "mattermost",
            "mobile",
            "gotify",
            "webhook",
            "whatsapp",
            "ntfy"
          ]
        },
        "subject": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean"
        }
      },
      "required": [],
      "additionalProperties": false
    },
    "Ombi_Store_Entities_RequestLimitType": {
      "type": "integer",
      "enum": [
        0,
        1,
        2
      ]
    }
  }
}

write_user_manage

Delete an Ombi user or send a welcome email to an explicitly selected existing user.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "delete"
        },
        "user_id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        }
      },
      "required": [
        "action",
        "user_id"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "welcome_email"
        },
        "user_id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        }
      },
      "required": [
        "action",
        "user_id"
      ],
      "additionalProperties": false
    }
  ]
}

write_integration_test

Test a saved integration or notification profile; may send an actual message.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "service": {
      "type": "string",
      "enum": [
        "discord", "pushbullet", "pushover", "gotify", "ntfy", "webhook",
        "mattermost", "slack", "email", "plex", "emby", "jellyfin",
        "radarr", "sonarr", "couchpotato", "telegram", "sickrage",
        "newsletter", "mobile", "lidarr", "whatsapp"
      ]
    },
    "profile_id": { "type": "string", "minLength": 1, "maxLength": 200 }
  },
  "required": ["service", "profile_id"],
  "additionalProperties": false
}

write_job_run

Trigger an explicitly enabled background job or revalidate Plex watchlist users; accepted does not mean completed.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "run"
        },
        "job": {
          "type": "string",
          "enum": [
            "update",
            "plexuserimporter",
            "plexwatchlist",
            "embyuserimporter",
            "jellyfinuserimporter",
            "plexcontentcacher",
            "clearmediaserverdata",
            "plexrecentlyadded",
            "embycontentcacher",
            "embyrecentlyadded",
            "jellyfincontentcacher",
            "arrAvailability",
            "autodeleterequests",
            "newsletter"
          ]
        }
      },
      "required": [
        "action",
        "job"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "revalidate_watchlist"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    }
  ]
}

write_notification_send

Send email to explicit existing user IDs; recipient entities are resolved internally.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "subject": { "type": "string", "minLength": 1, "maxLength": 300 },
    "body": { "type": "string", "minLength": 1, "maxLength": 20000 },
    "bcc": { "type": "boolean" },
    "user_ids": {
      "type": "array",
      "items": { "type": "string", "minLength": 1, "maxLength": 200 },
      "minItems": 1,
      "maxItems": 100,
      "uniqueItems": true
    }
  },
  "required": ["subject", "body", "bcc", "user_ids"],
  "additionalProperties": false
}

write_retry_remove

Remove one failed-request queue entry. This does not retry or delete the underlying request.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "queue_id": { "type": "integer", "minimum": 1 }
  },
  "required": ["queue_id"],
  "additionalProperties": false
}

read_logs

Read bounded sanitized diagnostics through an opaque file ID; raw downloads are excluded.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "list"
        }
      },
      "required": [
        "action"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "action": {
          "const": "read"
        },
        "file_id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "offset": {
          "type": "integer",
          "minimum": 0
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 500,
          "default": 100
        }
      },
      "required": [
        "action",
        "file_id"
      ],
      "additionalProperties": false
    }
  ]
}