{
  "$schema": "https://json-structure.org/meta/core/v0/#",
  "$id": "https://raw.githubusercontent.com/api-evangelist/anilist/refs/heads/main/json-structure/anilist-media-structure.json",
  "name": "Media",
  "description": "Anime or Manga",
  "type": "object",
  "properties": {
    "id": {
      "type": "int32",
      "description": "The id of the media"
    },
    "idMal": {
      "type": "int32",
      "description": "The mal id of the media"
    },
    "title": {
      "description": "The official titles of the media in various languages",
      "$ref": "./anilist-mediatitle-structure.json"
    },
    "type": {
      "type": "string",
      "description": "The type of the media; anime or manga",
      "enum": [
        "ANIME",
        "MANGA"
      ]
    },
    "format": {
      "type": "string",
      "description": "The format the media was released in",
      "enum": [
        "TV",
        "TV_SHORT",
        "MOVIE",
        "SPECIAL",
        "OVA",
        "ONA",
        "MUSIC",
        "MANGA",
        "NOVEL",
        "ONE_SHOT"
      ]
    },
    "status": {
      "type": "string",
      "description": "The current releasing status of the media",
      "enum": [
        "FINISHED",
        "RELEASING",
        "NOT_YET_RELEASED",
        "CANCELLED",
        "HIATUS"
      ]
    },
    "description": {
      "type": "string",
      "description": "Short description of the media's story and characters"
    },
    "startDate": {
      "description": "The first official release date of the media",
      "$ref": "./anilist-fuzzydate-structure.json"
    },
    "endDate": {
      "description": "The last official release date of the media",
      "$ref": "./anilist-fuzzydate-structure.json"
    },
    "season": {
      "type": "string",
      "description": "The season the media was initially released in",
      "enum": [
        "WINTER",
        "SPRING",
        "SUMMER",
        "FALL"
      ]
    },
    "seasonYear": {
      "type": "int32",
      "description": "The season year the media was initially released in"
    },
    "seasonInt": {
      "type": "int32",
      "description": "The year & season the media was initially released in"
    },
    "episodes": {
      "type": "int32",
      "description": "The amount of episodes the anime has when complete"
    },
    "duration": {
      "type": "int32",
      "description": "The general length of each anime episode in minutes"
    },
    "chapters": {
      "type": "int32",
      "description": "The amount of chapters the manga has when complete"
    },
    "volumes": {
      "type": "int32",
      "description": "The amount of volumes the manga has when complete"
    },
    "countryOfOrigin": {
      "type": "string",
      "description": "Where the media was created. (ISO 3166-1 alpha-2)"
    },
    "isLicensed": {
      "type": "boolean",
      "description": "If the media is officially licensed or a self-published doujin release"
    },
    "source": {
      "type": "string",
      "description": "Source type the media was adapted from.",
      "enum": [
        "ORIGINAL",
        "MANGA",
        "LIGHT_NOVEL",
        "VISUAL_NOVEL",
        "VIDEO_GAME",
        "OTHER",
        "NOVEL",
        "DOUJINSHI",
        "ANIME",
        "WEB_NOVEL",
        "LIVE_ACTION",
        "GAME",
        "COMIC",
        "MULTIMEDIA_PROJECT",
        "PICTURE_BOOK"
      ]
    },
    "hashtag": {
      "type": "string",
      "description": "Official Twitter hashtags for the media"
    },
    "trailer": {
      "description": "Media trailer or advertisement",
      "$ref": "./anilist-mediatrailer-structure.json"
    },
    "updatedAt": {
      "type": "int32",
      "description": "When the media's data was last updated"
    },
    "coverImage": {
      "description": "The cover images of the media",
      "$ref": "./anilist-mediacoverimage-structure.json"
    },
    "bannerImage": {
      "type": "string",
      "description": "The banner image of the media"
    },
    "genres": {
      "type": "array",
      "description": "The genres of the media",
      "items": {
        "type": "string"
      }
    },
    "synonyms": {
      "type": "array",
      "description": "Alternative titles of the media",
      "items": {
        "type": "string"
      }
    },
    "averageScore": {
      "type": "int32",
      "description": "A weighted average score of all the user's scores of the media"
    },
    "meanScore": {
      "type": "int32",
      "description": "Mean score of all the user's scores of the media"
    },
    "popularity": {
      "type": "int32",
      "description": "The number of users with the media on their list"
    },
    "isLocked": {
      "type": "boolean",
      "description": "Locked media may not be added to lists our favorited. This may be due to the entry pending for deletion or other reasons."
    },
    "trending": {
      "type": "int32",
      "description": "The amount of related activity in the past hour"
    },
    "favourites": {
      "type": "int32",
      "description": "The amount of user's who have favourited the media"
    },
    "tags": {
      "type": "array",
      "description": "List of tags that describes elements and themes of the media",
      "items": {
        "$ref": "./anilist-mediatag-structure.json"
      }
    },
    "relations": {
      "description": "Other media in the same or connecting franchise",
      "$ref": "./anilist-mediaconnection-structure.json"
    },
    "characters": {
      "description": "The characters in the media",
      "$ref": "./anilist-characterconnection-structure.json"
    },
    "staff": {
      "description": "The staff who produced the media",
      "$ref": "./anilist-staffconnection-structure.json"
    },
    "studios": {
      "description": "The companies who produced the media",
      "$ref": "./anilist-studioconnection-structure.json"
    },
    "isFavourite": {
      "type": "boolean",
      "description": "If the media is marked as favourite by the current authenticated user"
    },
    "isFavouriteBlocked": {
      "type": "boolean",
      "description": "If the media is blocked from being added to favourites"
    },
    "isAdult": {
      "type": "boolean",
      "description": "If the media is intended only for 18+ adult audiences"
    },
    "nextAiringEpisode": {
      "description": "The media's next episode airing schedule",
      "$ref": "./anilist-airingschedule-structure.json"
    },
    "airingSchedule": {
      "description": "The media's entire airing schedule",
      "$ref": "./anilist-airingscheduleconnection-structure.json"
    },
    "trends": {
      "description": "The media's daily trend stats",
      "$ref": "./anilist-mediatrendconnection-structure.json"
    },
    "externalLinks": {
      "type": "array",
      "description": "External links to another site related to the media",
      "items": {
        "$ref": "./anilist-mediaexternallink-structure.json"
      }
    },
    "streamingEpisodes": {
      "type": "array",
      "description": "Data and links to legal streaming episodes on external sites",
      "items": {
        "$ref": "./anilist-mediastreamingepisode-structure.json"
      }
    },
    "rankings": {
      "type": "array",
      "description": "The ranking of the media in a particular time span and format compared to other media",
      "items": {
        "$ref": "./anilist-mediarank-structure.json"
      }
    },
    "mediaListEntry": {
      "description": "The authenticated user's media list entry for the media",
      "$ref": "./anilist-medialist-structure.json"
    },
    "reviews": {
      "description": "User reviews of the media",
      "$ref": "./anilist-reviewconnection-structure.json"
    },
    "recommendations": {
      "description": "User recommendations for similar media",
      "$ref": "./anilist-recommendationconnection-structure.json"
    },
    "stats": {
      "$ref": "./anilist-mediastats-structure.json"
    },
    "siteUrl": {
      "type": "string",
      "description": "The url for the media page on the AniList website"
    },
    "autoCreateForumThread": {
      "type": "boolean",
      "description": "If the media should have forum thread automatically created for it on airing episode release"
    },
    "isRecommendationBlocked": {
      "type": "boolean",
      "description": "If the media is blocked from being recommended to/from"
    },
    "isReviewBlocked": {
      "type": "boolean",
      "description": "If the media is blocked from being reviewed"
    },
    "modNotes": {
      "type": "string",
      "description": "Notes for site moderators"
    }
  },
  "required": [
    "id",
    "isFavourite",
    "isFavouriteBlocked"
  ]
}