GraphQL schema:

type GET_search_tv_ResultsEntry {
  adult: Boolean
  backdrop_path: String
  first_air_date: Date
  genre_ids: [Int]
  id: Int
  name: String
  origin_country: [String]
  original_language: String
  original_name: String
  overview: String
  popularity: Float
  poster_path: String
  vote_average: Float
  vote_count: Int
}

type GET_search_tv_Root {
  page: Int
  results: [GET_search_tv_ResultsEntry]
  total_pages: Int
  total_results: Int
}

type Query {
  GET_search_tv(query: String, tmdb_access_token: String!): GET_search_tv_Root
    @rest(
      endpoint: "https://api.themoviedb.org/3/search/tv"
      headers: [{ name: "authorization", value: "Bearer $tmdb_access_token;" }]
    )
}
type GET_tv__tv_id_CreatedByEntry {
  credit_id: String
  gender: Int
  id: Int
  name: String
  original_name: String
  profile_path: String
}

type GET_tv__tv_id_GenresEntry {
  id: Int
  name: String
}

type GET_tv__tv_id_LastEpisodeToAir {
  air_date: Date
  episode_number: Int
  episode_type: String
  id: Int
  name: String
  overview: String
  production_code: String
  runtime: Int
  season_number: Int
  show_id: Int
  still_path: String
  vote_average: Float
  vote_count: Int
}

type GET_tv__tv_id_NetworksEntry {
  id: Int
  logo_path: String
  name: String
  origin_country: String
}

type GET_tv__tv_id_ProductionCompaniesEntry {
  id: Int
  logo_path: String
  name: String
  origin_country: String
}

type GET_tv__tv_id_ProductionCountriesEntry {
  iso_3166_1: String
  name: String
}

type GET_tv__tv_id_Root {
  adult: Boolean
  backdrop_path: String
  created_by: [GET_tv__tv_id_CreatedByEntry]
  episode_run_time: [Int]
  first_air_date: Date
  genres: [GET_tv__tv_id_GenresEntry]
  homepage: String
  id: Int
  in_production: Boolean
  languages: [String]
  last_air_date: Date
  last_episode_to_air: GET_tv__tv_id_LastEpisodeToAir
  name: String
  networks: [GET_tv__tv_id_NetworksEntry]
  """
  Field "next_episode_to_air" is defined as JSON since its value was always 'null'
  """
  next_episode_to_air: JSON
  number_of_episodes: Int
  number_of_seasons: Int
  origin_country: [String]
  original_language: String
  original_name: String
  overview: String
  popularity: Float
  poster_path: String
  production_companies: [GET_tv__tv_id_ProductionCompaniesEntry]
  production_countries: [GET_tv__tv_id_ProductionCountriesEntry]
  seasons: [GET_tv__tv_id_SeasonsEntry]
  spoken_languages: [GET_tv__tv_id_SpokenLanguagesEntry]
  status: String
  tagline: String
  type: String
  vote_average: Float
  vote_count: Int
}

type GET_tv__tv_id_SeasonsEntry {
  air_date: Date
  episode_count: Int
  id: Int
  name: String
  overview: String
  poster_path: String
  season_number: Int
  vote_average: Float
}

type GET_tv__tv_id_SpokenLanguagesEntry {
  english_name: String
  iso_639_1: String
  name: String
}

type Query {
  GET_tv__tv_id_(
    tmdb_access_token: String!
    tv_id: String!
  ): GET_tv__tv_id_Root
    @rest(
      endpoint: "https://api.themoviedb.org/3/tv/$tv_id;"
      headers: [{ name: "authorization", value: "Bearer $tmdb_access_token;" }]
    )
}

Utterance: How many seasons of Sword Art Online are there?