docs: update docs regarding new envs and api endpoint

This commit is contained in:
Ritesh Ghosh
2024-12-24 17:08:28 +05:30
parent 5f1f2167df
commit 7e9f920784
+89 -18
View File
@@ -53,9 +53,6 @@
</div> </div>
> [!NOTE]
> The API has shifted to version 2, thereby naturally introducing breaking changes. If you'd want to use the previous version of this API, then refer to [the last stable version](https://github.com/ghoshRitesh12/aniwatch-api/tree/v1.40.0).
> [!IMPORTANT] > [!IMPORTANT]
> >
> 1. [https://api-aniwatch.onrender.com](https://api-aniwatch.onrender.com/) is only meant to demo the API and has rate-limiting enabled to minimize bandwidth consumption. It is recommended to deploy your own instance for personal use by customizing the API as you need it to be. > 1. [https://api-aniwatch.onrender.com](https://api-aniwatch.onrender.com/) is only meant to demo the API and has rate-limiting enabled to minimize bandwidth consumption. It is recommended to deploy your own instance for personal use by customizing the API as you need it to be.
@@ -75,6 +72,7 @@
- [Render](#render) - [Render](#render)
- [Documentation](#documentation) - [Documentation](#documentation)
- [GET Anime Home Page](#get-anime-home-page) - [GET Anime Home Page](#get-anime-home-page)
- [GET Anime A-Z List](#get-anime-home-page)
- [GET Anime About Info](#get-anime-about-info) - [GET Anime About Info](#get-anime-about-info)
- [GET Search Results](#get-search-results) - [GET Search Results](#get-search-results)
- [GET Search Suggestions](#get-search-suggestions) - [GET Search Suggestions](#get-search-suggestions)
@@ -134,13 +132,14 @@ The `-d` flag runs the container in detached mode, and the `--name` flag is used
## <span id="configuration">⚙️ Configuration</span> ## <span id="configuration">⚙️ Configuration</span>
### Custom HTTP Headers ### Custom HTTP Headers
Currently this API supports parsing of only one custom header, and more may be implemented in the future to accommodate varying needs. Currently this API supports parsing of only one custom header, and more may be implemented in the future to accommodate varying needs.
- `X-ANIWATCH-CACHE-EXPIRY`: this custom header is used to specify the cache expiration duration in **seconds** (defaults to 60 if the header is missing). The `ANIWATCH_API_REDIS_CONN_URL` env is required for this custom header to function as intended; otherwise, there's no point in setting this custom header. - `X-ANIWATCH-CACHE-EXPIRY`: this custom header is used to specify the cache expiration duration in **seconds** (defaults to 60 if the header is missing). The `ANIWATCH_API_REDIS_CONN_URL` env is required for this custom header to function as intended; otherwise, there's no point in setting this custom header.
### Environment Variables ### Environment Variables
More info can be found in the [`.env.example`](https://github.com/ghoshRitesh12/aniwatch-api/blob/main/.env.example) file, where envs' having a value that is contained within `<` `>` angled brackets are just examples and should be replaced with relevant ones. More info can be found in the [`.env.example`](https://github.com/ghoshRitesh12/aniwatch-api/blob/main/.env.example) file, where envs' having a value that is contained within `<` `>` angled brackets, commented out or not, are just examples and should be replaced with relevant ones.
- `ANIWATCH_API_PORT`: port number of the aniwatch API. - `ANIWATCH_API_PORT`: port number of the aniwatch API.
- `ANIWATCH_API_WINDOW_MS`: duration to track requests for rate limiting (in milliseconds). - `ANIWATCH_API_WINDOW_MS`: duration to track requests for rate limiting (in milliseconds).
@@ -149,6 +148,8 @@ More info can be found in the [`.env.example`](https://github.com/ghoshRitesh12/
- `ANIWATCH_API_VERCEL_DEPLOYMENT`: required for distinguishing Vercel deployment from other ones; set it to true or any other non-zero value. - `ANIWATCH_API_VERCEL_DEPLOYMENT`: required for distinguishing Vercel deployment from other ones; set it to true or any other non-zero value.
- `ANIWATCH_API_HOSTNAME`: set this to your api instance's hostname to enable rate limiting, don't have this value if you don't wish to rate limit. - `ANIWATCH_API_HOSTNAME`: set this to your api instance's hostname to enable rate limiting, don't have this value if you don't wish to rate limit.
- `ANIWATCH_API_REDIS_CONN_URL`: this env is optional by default and can be set to utilize Redis caching functionality. It has to be a valid connection URL; otherwise, the Redis client can throw unexpected errors. - `ANIWATCH_API_REDIS_CONN_URL`: this env is optional by default and can be set to utilize Redis caching functionality. It has to be a valid connection URL; otherwise, the Redis client can throw unexpected errors.
- `ANIWATCH_API_S_MAXAGE`: specifies the maximum amount of time (in seconds) a resource is considered fresh when served by a CDN cache.
- `ANIWATCH_API_STALE_WHILE_REVALIDATE`: specifies the amount of time (in seconds) a resource is served stale while a new one is fetched.
## <span id="host-your-instance">⛅ Host your instance</span> ## <span id="host-your-instance">⛅ Host your instance</span>
@@ -158,7 +159,7 @@ More info can be found in the [`.env.example`](https://github.com/ghoshRitesh12/
> >
> - If you want to have rate limiting in your application, then set the `ANIWATCH_API_HOSTNAME` env to your deployed instance's hostname; otherwise, don't set or have this env at all. If you set this env to an incorrect value, you may face other issues. > - If you want to have rate limiting in your application, then set the `ANIWATCH_API_HOSTNAME` env to your deployed instance's hostname; otherwise, don't set or have this env at all. If you set this env to an incorrect value, you may face other issues.
> - It's optional by default, but if you want to have endpoint response caching functionality, then set the `ANIWATCH_API_REDIS_CONN_URL` env to a valid Redis connection URL. If the connection URL is invalid, the Redis client can throw unexpected errors. > - It's optional by default, but if you want to have endpoint response caching functionality, then set the `ANIWATCH_API_REDIS_CONN_URL` env to a valid Redis connection URL. If the connection URL is invalid, the Redis client can throw unexpected errors.
> - Remove the if block from the [`server.ts`](https://github.com/ghoshRitesh12/aniwatch-api/blob/main/src/server.ts) file, spanning from lines [71](https://github.com/ghoshRitesh12/aniwatch-api/blob/main/src/server.ts#L71) to [83](https://github.com/ghoshRitesh12/aniwatch-api/blob/main/src/server.ts#L83). > - Remove the if block from the [`server.ts`](https://github.com/ghoshRitesh12/aniwatch-api/blob/main/src/server.ts) file, spanning from lines [61](https://github.com/ghoshRitesh12/aniwatch-api/blob/main/src/server.ts#L61) to [85](https://github.com/ghoshRitesh12/aniwatch-api/blob/main/src/server.ts#L85).
### Vercel ### Vercel
@@ -194,7 +195,7 @@ The endpoints exposed by the api are listed below with examples that uses the [F
/api/v2/hianime/home /api/v2/hianime/home
``` ```
#### Request sample #### Request Sample
```javascript ```javascript
const resp = await fetch("/api/v2/hianime/home"); const resp = await fetch("/api/v2/hianime/home");
@@ -340,6 +341,74 @@ console.log(data);
<summary> <summary>
### `GET` Anime A-Z List
</summary>
#### Endpoint
```sh
/api/v2/hianime/azlist/{sortOption}?page={page}
```
#### Path Parameters
| Parameter | Type | Description | Required? | Default |
| :----------: | :----: | :-------------------------------------------------------------------------------------------------: | :-------: | :-----: |
| `sortOption` | string | The az-list sort option. Possible values include: "all", "other", "0-9" and all english alphabets . | 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("/api/v2/hianime/azlist/0-9?page=1");
const data = await resp.json();
console.log(data);
```
#### Response Schema
```javascript
{
success: true,
data: {
sortOption: "0-9",
animes: [
{
id: string,
name: string,
jname: string,
poster: string,
duration: string,
type: string,
rating: string,
episodes: {
sub: number ,
dub: number
}
},
{...}
],
totalPages: 1,
currentPage: 1,
hasNextPage: false
}
}
```
[🔼 Back to Top](#table-of-contents)
</details>
<details>
<summary>
### `GET` Anime About Info ### `GET` Anime About Info
</summary> </summary>
@@ -356,7 +425,7 @@ console.log(data);
| :-------: | :----: | :----------------------------------: | :-------: | :-----: | | :-------: | :----: | :----------------------------------: | :-------: | :-----: |
| `animeId` | string | The unique anime id (in kebab case). | Yes | -- | | `animeId` | string | The unique anime id (in kebab case). | Yes | -- |
#### Request sample #### Request Sample
```javascript ```javascript
const resp = await fetch("/api/v2/hianime/anime/attack-on-titan-112"); const resp = await fetch("/api/v2/hianime/anime/attack-on-titan-112");
@@ -522,7 +591,7 @@ console.log(data);
> For both `start_date` and `end_date`, year must be mentioned. If you wanna omit date or month specify `0` instead. > For both `start_date` and `end_date`, year must be mentioned. If you wanna omit date or month specify `0` instead.
> Eg: omitting date -> 2014-10-0, omitting month -> 2014-0-12, omitting both -> 2014-0-0 > Eg: omitting date -> 2014-10-0, omitting month -> 2014-0-12, omitting both -> 2014-0-0
#### Request sample #### Request Sample
```javascript ```javascript
// basic example // basic example
@@ -609,7 +678,7 @@ console.log(data);
| :-------: | :----: | :--------------------------: | :-------: | :-----: | | :-------: | :----: | :--------------------------: | :-------: | :-----: |
| `q` | string | The search suggestion query. | Yes | -- | | `q` | string | The search suggestion query. | Yes | -- |
#### Request sample #### Request Sample
```javascript ```javascript
const resp = await fetch("/api/v2/hianime/search/suggestion?q=monster"); const resp = await fetch("/api/v2/hianime/search/suggestion?q=monster");
@@ -667,7 +736,7 @@ console.log(data);
| :-------: | :----: | :----------------------------: | :-------: | :-----: | | :-------: | :----: | :----------------------------: | :-------: | :-----: |
| `page` | number | The page number of the result. | No | `1` | | `page` | number | The page number of the result. | No | `1` |
#### Request sample #### Request Sample
```javascript ```javascript
const resp = await fetch("/api/v2/hianime/producer/toei-animation?page=2"); const resp = await fetch("/api/v2/hianime/producer/toei-animation?page=2");
@@ -765,7 +834,7 @@ console.log(data);
| :-------: | :----: | :----------------------------: | :-------: | :-----: | | :-------: | :----: | :----------------------------: | :-------: | :-----: |
| `page` | number | The page number of the result. | No | `1` | | `page` | number | The page number of the result. | No | `1` |
#### Request sample #### Request Sample
```javascript ```javascript
const resp = await fetch("/api/v2/hianime/genre/shounen?page=2"); const resp = await fetch("/api/v2/hianime/genre/shounen?page=2");
@@ -847,7 +916,7 @@ console.log(data);
| :-------: | :----: | :----------------------------: | :-------: | :-----: | | :-------: | :----: | :----------------------------: | :-------: | :-----: |
| `page` | number | The page number of the result. | No | `1` | | `page` | number | The page number of the result. | No | `1` |
#### Request sample #### Request Sample
```javascript ```javascript
// categories -> "most-favorite", "most-popular", "subbed-anime", "dubbed-anime", "recently-updated", "recently-added", "top-upcoming", "top-airing", "movie", "special", "ova", "ona", "tv", "completed" // categories -> "most-favorite", "most-popular", "subbed-anime", "dubbed-anime", "recently-updated", "recently-added", "top-upcoming", "top-airing", "movie", "special", "ova", "ona", "tv", "completed"
@@ -925,10 +994,10 @@ console.log(data);
#### Query Parameters #### Query Parameters
| Parameter | Type | Description | Required? | Default | | Parameter | Type | Description | Required? | Default |
| :-----------------: | :----: | :------------------------------------------------------------------: | :-------: | :-----: | | :-------: | :----: | :---------------------------------------------------------------------: | :-------: | :-----: |
| `date (yyyy-mm-dd)` | string | The date of the desired schedule. (months & days must have 2 digits) | Yes | -- | | `date` | string | The date of the desired schedule in the following format: (yyyy-mm-dd). | Yes | -- |
#### Request sample #### Request Sample
```javascript ```javascript
const resp = await fetch("/api/v2/hianime/schedule?date=2024-06-09"); const resp = await fetch("/api/v2/hianime/schedule?date=2024-06-09");
@@ -981,7 +1050,7 @@ console.log(data);
| :-------: | :----: | :------------------: | :-------: | :-----: | | :-------: | :----: | :------------------: | :-------: | :-----: |
| `animeId` | string | The unique anime id. | Yes | -- | | `animeId` | string | The unique anime id. | Yes | -- |
#### Request sample #### Request Sample
```javascript ```javascript
const resp = await fetch("/api/v2/hianime/anime/steinsgate-3/episodes"); const resp = await fetch("/api/v2/hianime/anime/steinsgate-3/episodes");
@@ -1033,7 +1102,7 @@ console.log(data);
| :--------------: | :----: | :--------------------------: | :-------: | :-----: | | :--------------: | :----: | :--------------------------: | :-------: | :-----: |
| `animeEpisodeId` | string | The unique anime episode id. | Yes | -- | | `animeEpisodeId` | string | The unique anime episode id. | Yes | -- |
#### Request sample #### Request Sample
```javascript ```javascript
const resp = await fetch( const resp = await fetch(
@@ -1102,7 +1171,7 @@ console.log(data);
| `server` | string | The name of the server. | No | `"hd-1"` | | `server` | string | The name of the server. | No | `"hd-1"` |
| `category` | string | The category of the episode ('sub', 'dub' or 'raw'). | No | `"sub"` | | `category` | string | The category of the episode ('sub', 'dub' or 'raw'). | No | `"sub"` |
#### Request sample #### Request Sample
```javascript ```javascript
const resp = await fetch( const resp = await fetch(
@@ -1173,6 +1242,8 @@ This project is licensed under the [MIT License](https://opensource.org/license/
<br/> <br/>
## <span id="star-history">🌟 Star History</span>
<img <img
id="star-history" id="star-history"
src="https://starchart.cc/ghoshRitesh12/aniwatch-api.svg?variant=adaptive" src="https://starchart.cc/ghoshRitesh12/aniwatch-api.svg?variant=adaptive"