{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/prowlarr/json-schema/prowlarr-indexer-resource-schema.json",
  "title": "IndexerResource",
  "x-generated": "2026-10-28",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/prowlarr-openapi.json#/components/schemas/IndexerResource",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "format": "int32"
    },
    "name": {
      "type": [
        "string",
        "null"
      ]
    },
    "fields": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/Field"
      }
    },
    "implementationName": {
      "type": [
        "string",
        "null"
      ]
    },
    "implementation": {
      "type": [
        "string",
        "null"
      ]
    },
    "configContract": {
      "type": [
        "string",
        "null"
      ]
    },
    "infoLink": {
      "type": [
        "string",
        "null"
      ]
    },
    "message": {
      "$ref": "#/$defs/ProviderMessage"
    },
    "tags": {
      "uniqueItems": true,
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "integer",
        "format": "int32"
      }
    },
    "presets": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/IndexerResource"
      }
    },
    "indexerUrls": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      }
    },
    "legacyUrls": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      }
    },
    "definitionName": {
      "type": [
        "string",
        "null"
      ]
    },
    "description": {
      "type": [
        "string",
        "null"
      ]
    },
    "language": {
      "type": [
        "string",
        "null"
      ]
    },
    "encoding": {
      "type": [
        "string",
        "null"
      ]
    },
    "enable": {
      "type": "boolean"
    },
    "redirect": {
      "type": "boolean"
    },
    "supportsRss": {
      "type": "boolean"
    },
    "supportsSearch": {
      "type": "boolean"
    },
    "supportsRedirect": {
      "type": "boolean"
    },
    "supportsPagination": {
      "type": "boolean"
    },
    "appProfileId": {
      "type": "integer",
      "format": "int32"
    },
    "protocol": {
      "$ref": "#/$defs/DownloadProtocol"
    },
    "privacy": {
      "$ref": "#/$defs/IndexerPrivacy"
    },
    "capabilities": {
      "$ref": "#/$defs/IndexerCapabilityResource"
    },
    "priority": {
      "type": "integer",
      "format": "int32"
    },
    "downloadClientId": {
      "type": "integer",
      "format": "int32"
    },
    "added": {
      "type": "string",
      "format": "date-time"
    },
    "status": {
      "$ref": "#/$defs/IndexerStatusResource"
    },
    "sortName": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "additionalProperties": false,
  "$defs": {
    "BookSearchParam": {
      "enum": [
        "q",
        "title",
        "author",
        "publisher",
        "genre",
        "year"
      ],
      "type": "string"
    },
    "DownloadProtocol": {
      "enum": [
        "unknown",
        "usenet",
        "torrent"
      ],
      "type": "string"
    },
    "Field": {
      "type": "object",
      "properties": {
        "order": {
          "type": "integer",
          "format": "int32"
        },
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "label": {
          "type": [
            "string",
            "null"
          ]
        },
        "unit": {
          "type": [
            "string",
            "null"
          ]
        },
        "helpText": {
          "type": [
            "string",
            "null"
          ]
        },
        "helpTextWarning": {
          "type": [
            "string",
            "null"
          ]
        },
        "helpLink": {
          "type": [
            "string",
            "null"
          ]
        },
        "value": {
          "nullable": true
        },
        "type": {
          "type": [
            "string",
            "null"
          ]
        },
        "advanced": {
          "type": "boolean"
        },
        "selectOptions": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/SelectOption"
          }
        },
        "selectOptionsProviderAction": {
          "type": [
            "string",
            "null"
          ]
        },
        "section": {
          "type": [
            "string",
            "null"
          ]
        },
        "hidden": {
          "type": [
            "string",
            "null"
          ]
        },
        "privacy": {
          "$ref": "#/$defs/PrivacyLevel"
        },
        "placeholder": {
          "type": [
            "string",
            "null"
          ]
        },
        "isFloat": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "IndexerCapabilityResource": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int32"
        },
        "limitsMax": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "limitsDefault": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        },
        "categories": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/IndexerCategory"
          }
        },
        "supportsRawSearch": {
          "type": "boolean"
        },
        "searchParams": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/SearchParam"
          }
        },
        "tvSearchParams": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/TvSearchParam"
          }
        },
        "movieSearchParams": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/MovieSearchParam"
          }
        },
        "musicSearchParams": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/MusicSearchParam"
          }
        },
        "bookSearchParams": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/BookSearchParam"
          }
        }
      },
      "additionalProperties": false
    },
    "IndexerCategory": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int32"
        },
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "description": {
          "type": [
            "string",
            "null"
          ]
        },
        "subCategories": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/IndexerCategory"
          },
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "IndexerPrivacy": {
      "enum": [
        "public",
        "semiPrivate",
        "private"
      ],
      "type": "string"
    },
    "IndexerResource": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int32"
        },
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "fields": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/Field"
          }
        },
        "implementationName": {
          "type": [
            "string",
            "null"
          ]
        },
        "implementation": {
          "type": [
            "string",
            "null"
          ]
        },
        "configContract": {
          "type": [
            "string",
            "null"
          ]
        },
        "infoLink": {
          "type": [
            "string",
            "null"
          ]
        },
        "message": {
          "$ref": "#/$defs/ProviderMessage"
        },
        "tags": {
          "uniqueItems": true,
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "integer",
            "format": "int32"
          }
        },
        "presets": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/IndexerResource"
          }
        },
        "indexerUrls": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          }
        },
        "legacyUrls": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          }
        },
        "definitionName": {
          "type": [
            "string",
            "null"
          ]
        },
        "description": {
          "type": [
            "string",
            "null"
          ]
        },
        "language": {
          "type": [
            "string",
            "null"
          ]
        },
        "encoding": {
          "type": [
            "string",
            "null"
          ]
        },
        "enable": {
          "type": "boolean"
        },
        "redirect": {
          "type": "boolean"
        },
        "supportsRss": {
          "type": "boolean"
        },
        "supportsSearch": {
          "type": "boolean"
        },
        "supportsRedirect": {
          "type": "boolean"
        },
        "supportsPagination": {
          "type": "boolean"
        },
        "appProfileId": {
          "type": "integer",
          "format": "int32"
        },
        "protocol": {
          "$ref": "#/$defs/DownloadProtocol"
        },
        "privacy": {
          "$ref": "#/$defs/IndexerPrivacy"
        },
        "capabilities": {
          "$ref": "#/$defs/IndexerCapabilityResource"
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "downloadClientId": {
          "type": "integer",
          "format": "int32"
        },
        "added": {
          "type": "string",
          "format": "date-time"
        },
        "status": {
          "$ref": "#/$defs/IndexerStatusResource"
        },
        "sortName": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "IndexerStatusResource": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int32"
        },
        "indexerId": {
          "type": "integer",
          "format": "int32"
        },
        "disabledTill": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "mostRecentFailure": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "initialFailure": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        }
      },
      "additionalProperties": false
    },
    "MovieSearchParam": {
      "enum": [
        "q",
        "imdbId",
        "tmdbId",
        "imdbTitle",
        "imdbYear",
        "traktId",
        "genre",
        "doubanId",
        "year"
      ],
      "type": "string"
    },
    "MusicSearchParam": {
      "enum": [
        "q",
        "album",
        "artist",
        "label",
        "year",
        "genre",
        "track"
      ],
      "type": "string"
    },
    "PrivacyLevel": {
      "enum": [
        "normal",
        "password",
        "apiKey",
        "userName"
      ],
      "type": "string"
    },
    "ProviderMessage": {
      "type": "object",
      "properties": {
        "message": {
          "type": [
            "string",
            "null"
          ]
        },
        "type": {
          "$ref": "#/$defs/ProviderMessageType"
        }
      },
      "additionalProperties": false
    },
    "ProviderMessageType": {
      "enum": [
        "info",
        "warning",
        "error"
      ],
      "type": "string"
    },
    "SearchParam": {
      "enum": [
        "q"
      ],
      "type": "string"
    },
    "SelectOption": {
      "type": "object",
      "properties": {
        "value": {
          "type": "integer",
          "format": "int32"
        },
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "order": {
          "type": "integer",
          "format": "int32"
        },
        "hint": {
          "type": [
            "string",
            "null"
          ]
        },
        "parentValue": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        }
      },
      "additionalProperties": false
    },
    "TvSearchParam": {
      "enum": [
        "q",
        "season",
        "ep",
        "imdbId",
        "tvdbId",
        "rId",
        "tvMazeId",
        "traktId",
        "tmdbId",
        "doubanId",
        "genre",
        "year"
      ],
      "type": "string"
    }
  }
}