The Lord of the Rings API

This package facilitates communication with The One API, providing the user with data about The Lord of the Rings:

  • Books
  • Chapters
  • Characters
  • Movies
  • Quotes

The respective requests may be further specified by providing:

  • Pagination
  • Sorting
  • Filters

Prerequisites

For most requests you will need an API access key which can be easily obtained here: https://the-one-api.dev/sign-up

Objects

Before making any requests create an instance of LotrApi using your API access key:

var lotrApi = LotrApi(
  apiKey: 'INSERT_YOUR_API_ACCESS_KEY_HERE',
);

If you do not provide an API access key then you will only be able to call the /book endpoint.

Book

In order to retrieve data about all books:

Response<Book> response = await lotrApi.getBooks();

The actual list of items is always stored in the docs attribute:

List<Book> books = response.docs;

The Response holds additional information such as the total number of items.

You can also directly get a specific book by providing its ID:

String firstBookId = books.first.id;
Book? firstBook = await lotrApi.getBook(
  id: firstBookId,
);

Chapter

Response<Chapter> chapters = await lotrApi.getChapters();

Character

Response<Character> response = await lotrApi.getCharacters();

Movie

Response<Movie> response = await lotrApi.getMovies();

Quote

Response<Quote> quotes = await lotrApi.getQuotes();

Response<Quote> quotes = await lotrApi.getCharacterQuotes(
  characterId: characterId, //TODO provide the character's ID
);

Response<Quote> quotes = await lotrApi.getMovieQuotes(
  movieId: movieId, //TODO provide the movie's ID
);

Pagination

Response<Quote> quotes = await lotrApi.getQuotes(
  pagination: Pagination(
    limit: 10,
    offset: 2,
    page: 2,
  ),
);

Sorting

Response<Quote> quotes = await lotrApi.getQuotes(
  sorting: QuoteSortings.byDialogAsc,
);

Filtering

You may also apply multiple filters for each attribute, e.g.:

Response<Movie> response = await lotrApi.getMovies(
  nameFilters: [
    Exists(),
  ],
  budgetInMillionsFilters: [
    GreaterThanOrEquals(100),
    LessThan(250),
  ],
);

Available filters are:

  • Matches / NotMatches
  • Includes / Excludes
  • Exists / NotExists
  • MatchesRegex / NotMatchesRegex
  • Equals / NotEquals
  • LessThan / GreaterThan
  • LessThanOrEquals / GreaterThanOrEquals

Examples

Check the example folder for more examples.

Support

If you like this project, please support by starring the Github repository.

In case you discover a bug or have a feature request, feel free to create an issue there.

Libraries

lotr_api