diff options
| author | Ritesh Ghosh <[email protected]> | 2023-08-06 18:30:18 +0530 |
|---|---|---|
| committer | Ritesh Ghosh <[email protected]> | 2023-08-06 18:30:18 +0530 |
| commit | ee58b68e47c2ad74e2a1f47dcbfd75b7857c0533 (patch) | |
| tree | e1d9d4da1114929f422a948bf9ad4d14a77b4bd3 | |
| parent | e664dd65f452e7bd6e8c2539782f2bf8819e2f23 (diff) | |
| download | aniwatch-api-ee58b68e47c2ad74e2a1f47dcbfd75b7857c0533.tar.xz aniwatch-api-ee58b68e47c2ad74e2a1f47dcbfd75b7857c0533.zip | |
docs: added api documentation
| -rw-r--r-- | README.md | 461 |
1 files changed, 458 insertions, 3 deletions
@@ -1,7 +1,7 @@ <p align="center"> <a href="https://github.com/ghoshRitesh12/zoro.to-api"> <img - src="https://github.com/ghoshRitesh12/zoro.to-api/blob/main/img/img1.gif?raw=true" + src="https://github.com/ghoshRitesh12/zoro.to-api/blob/main/public/img/img1.gif?raw=true" alt="Logo" width="120" height="120" @@ -10,10 +10,10 @@ /> </a> - <h3 align="center">Zoro.to API</h3> +# <p align="center">Zoro.to API</p> <p align="center"> - A free restful API serving anime information from <a href="https://zoro.to">zoro.to</a> + A free restful API serving anime information from <a href="https://aniwatch.to">zoro.to</a> <br/><br/> <strong> <a @@ -58,3 +58,458 @@ > ## Work In Progress 🛠️ > > This api is currently a work in progress + +## Table of Contents + +- Installation + - Local Installation +- Documentation +- Development +- Support +- License + +## <span id="installation">💻 Installation</span> + +### Local Installation + +1. Rename the `.env.example` file to `.env` + +2. Fill out all the environment variables. + +3. Run the following command to clone the repository and install the dependencies. + +```bash +git clone https://github.com/ghoshRitesh12/zoro.to-api.git + +cd zoro.to-api + +npm ci #or yarn install +``` + +4. Start the server! + +```bash +npm start #or yarn start +``` + +Now the server should be running on [http://localhost:4000](http://localhost:4000) + +## <span id="documentation">📚 Documentation</span> + +Below are the endpoints exposed by the api: + +### `GET` Anime Home Page + +#### Endpoint + +`http://localhost:4000/anime/home` + +#### Request sample + +```javascript +const resp = await fetch("http://localhost:4000/anime/home"); +const data = await resp.json(); +console.log(data); +``` + +#### Response Schema + +```javascript +{ + genres: ["Action", "Cars", "Adventure", ...], + latestEpisodeAnimes: [ + { + id: string, + name: string, + poster: string, + duration: string, + type: string, + rating: string, + episodes: { + sub: number, + dub: number, + } + }, + {...}, + ], + spotlightAnimes: [ + { + id: string, + name: string, + jname: string, + poster: string, + description: string, + rank: number, + }, + {...}, + ], + top10Animes: { + today: [ + { + episodes: { + sub: number, + dub: number, + }, + id: string, + name: string, + poster: string, + rank: number + }, + {...}, + ], + month: [...], + week: [...] + }, + topAiringAnimes: [ + { + id: string, + name: string, + jname: string, + poster: string, + }, + {...}, + ], + topUpcomingAnimes: [ + { + id: string, + name: string, + poster: string, + duration: string, + type: string, + rating: string, + episodes: { + sub: number, + dub: number, + } + }, + {...}, + ], + trendingAnimes: [ + { + id: string, + name: string, + poster: string, + rank: number, + }, + {...}, + ], +} +``` + +### `GET` Anime About Info + +#### Endpoint + +`http://localhost:4000/anime/info?id={anime-id}` + +#### Query Parameters + +| Parameter | Type | Description | Required? | Default | +| :-------: | :----: | :------------------: | :-------: | :-----: | +| id | string | The unique anime id. | Yes | -- | + +#### Request sample + +```javascript +const resp = await fetch( + "http://localhost:4000/anime/info?id=attack-on-titan-112" +); +const data = await resp.json(); +console.log(data); +``` + +#### Response Schema + +```javascript +{ + anime: [ + info: { + id: string, + name: string, + poster: string, + description: string, + stats: { + rating: string, + quality: string, + episodes: { + sub: number, + dub: number + }, + type: string, + duration: string + } + } + moreInfo: { + aired: string, + genres: ["Action", "Mystery", ...], + status: string, + studios: string, + duration: string + ... + } + ], + mostPopularAnimes: [ + { + episodes: { + sub: number, + dub: number, + }, + id: string, + jname: string, + name: string, + poster: string, + type: string + }, + {...}, + ], + recommendedAnimes: [ + { + id: string, + name: string, + poster: string, + duration: string, + type: string, + rating: string, + episodes: { + sub: number, + dub: number, + } + }, + {...}, + ], + relatedAnimes: [ + { + id: string, + name: string, + poster: string, + duration: string, + type: string, + rating: string, + episodes: { + sub: number, + dub: number, + } + }, + {...}, + ], + seasons: [ + { + id: string, + name: string, + title: string, + poster: string, + isCurrent: boolean + }, + {...} + ] +} +``` + +### `GET` Search Results + +#### Endpoint + +`http://localhost:4000/anime/search?q={query}&page={page}` + +#### Query Parameters + +| Parameter | Type | Description | Required? | Default | +| :-------: | :----: | :---------------------------------------------------------------: | :-------: | :-----: | +| query | string | The search query, i.e. the title of the item you are looking for. | Yes | -- | +| page | number | The page number of the result. | No | `1` | + +#### Request sample + +```javascript +const resp = await fetch("http://localhost:4000/anime/search?q=titan&page=1"); +const data = await resp.json(); +console.log(data); +``` + +#### Response Schema + +```javascript +{ + animes: [ + { + id: string, + name: string, + poster: string, + duration: string, + type: string, + rating: string, + episodes: { + sub: number, + dub: number, + } + }, + {...}, + ], + mostPopularAnimes: [ + { + episodes: { + sub: number, + dub: number, + }, + id: string, + jname: string, + name: string, + poster: string, + type: string + }, + {...}, + ], + totalPages: 1, + currentPage: 1, + hasNextPage: false +} +``` + +### `GET` Genre Animes + +#### Endpoint + +`http://localhost:4000/anime/genre/{name}?page={page}` + +#### Path Parameters + +| Parameter | Type | Description | Required? | Default | +| :-------: | :----: | :----------------------: | :-------: | :-----: | +| name | string | The name of anime genre. | Yes | -- | + +#### Query Parameters + +| Parameter | Type | Description | Required? | Default | +| :-------: | :----: | :----------------------------: | :-------: | :-----: | +| page | number | The page number of the result. | No | `1` | + +#### Request sample + +```javascript +const resp = await fetch("http://localhost:4000/anime/genre/shounen?page=2"); +const data = await resp.json(); +console.log(data); +``` + +#### Response Schema + +```javascript +{ + animes: [ + { + id: string, + name: string, + poster: string, + duration: string, + type: string, + rating: string, + episodes: { + sub: number, + dub: number, + } + }, + {...}, + ], + genreName: string, + genres: ["Action", "Cars", "Adventure", ...] + topAiringAnimes: [ + { + episodes: { + sub: number, + dub: number, + }, + id: string, + jname: string, + name: string, + poster: string, + type: string + }, + {...}, + ], + totalPages: 38, + currentPage: 2, + hasNextPage: true +} +``` + +### `GET` Category Anime + +#### Endpoint + +`http://localhost:4000/anime/{category}?page={page}` + +#### Path Parameters + +| Parameter | Type | Description | Required? | Default | +| :-------: | :----: | :--------------------: | :-------: | :-----: | +| category | string | The category of anime. | Yes | -- | + +#### Query Parameters + +| Parameter | Type | Description | Required? | Default | +| :-------: | :----: | :----------------------------: | :-------: | :-----: | +| page | number | The page number of the result. | No | `1` | + +#### Request sample + +```javascript +const resp = await fetch("http://localhost:4000/anime/tv?page=2"); +const data = await resp.json(); +console.log(data); +``` + +#### Response Schema + +```javascript +{ + animes: [ + { + id: string, + name: string, + poster: string, + duration: string, + type: string, + rating: string, + episodes: { + sub: number, + dub: number, + } + }, + {...}, + ], + category: string, + genres: ["Action", "Cars", "Adventure", ...] + top10Animes: { + today: [ + { + episodes: { + sub: number, + dub: number, + }, + id: string, + name: string, + poster: string, + rank: number + }, + {...}, + ], + month: [...], + week: [...] + }, + totalPages: 100, + currentPage: 2, + hasNextPage: true +} +``` + +## <span id="development">👨💻 Development</span> + +Stars and pull requests are almost always welcome. If you encounter any bug or want to add a new feature to this api, consider creating a new [issue](https://github.com/ghoshRitesh12/zoro.to-api/issues). If you wish to contribute to this project, read the [CONTRIBUTING.md](https://github.com/ghoshRitesh12/zoro.to-api/blob/main/CONTRIBUTING.md) file. + +## <span id="support">🙌 Support</span> + +Don't forget to leave a star 🌟 + +## <span id="license">📜 License</span> + +[MIT License](https://github.com/ghoshRitesh12/zoro.to-api/blob/main/LICENSE) |
