aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRitesh Ghosh <[email protected]>2023-08-06 18:30:18 +0530
committerRitesh Ghosh <[email protected]>2023-08-06 18:30:18 +0530
commitee58b68e47c2ad74e2a1f47dcbfd75b7857c0533 (patch)
treee1d9d4da1114929f422a948bf9ad4d14a77b4bd3
parente664dd65f452e7bd6e8c2539782f2bf8819e2f23 (diff)
downloadaniwatch-api-ee58b68e47c2ad74e2a1f47dcbfd75b7857c0533.tar.xz
aniwatch-api-ee58b68e47c2ad74e2a1f47dcbfd75b7857c0533.zip
docs: added api documentation
-rw-r--r--README.md461
1 files changed, 458 insertions, 3 deletions
diff --git a/README.md b/README.md
index f1b92f7..ea34ea0 100644
--- a/README.md
+++ b/README.md
@@ -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)