mirror of
https://github.com/jikan-me/jikan-rest.git
synced 2025-02-20 11:23:35 +08:00
season
in lowercase
This commit is contained in:
parent
1bc746db77
commit
8232efdecb
@ -115,4 +115,7 @@ SLAVE_KEY_HEADER="X-Master"
|
|||||||
###
|
###
|
||||||
GITHUB_REPORTING=true
|
GITHUB_REPORTING=true
|
||||||
GITHUB_REST="jikan-me/jikan-rest"
|
GITHUB_REST="jikan-me/jikan-rest"
|
||||||
GITHUB_API="jikan-me/jikan
|
GITHUB_API="jikan-me/jikan
|
||||||
|
|
||||||
|
|
||||||
|
SWAGGER_VERSION=3.0
|
@ -127,7 +127,8 @@ class Anime extends Model
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return explode(' ', $premiered)[0];
|
$season = explode(' ', $premiered)[0];
|
||||||
|
return strtolower($season);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setYearAttribute($value)
|
public function setYearAttribute($value)
|
||||||
|
@ -44,6 +44,23 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
|||||||
|
|
||||||
class AnimeController extends Controller
|
class AnimeController extends Controller
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @OA\Get(
|
||||||
|
* path="/anime/{id}",
|
||||||
|
* operationId="getAnimeById",
|
||||||
|
* tags={"anime"},
|
||||||
|
*
|
||||||
|
* @OA\Response(
|
||||||
|
* response="200",
|
||||||
|
* description="Returns anime resource",
|
||||||
|
* @OA\JsonContent()
|
||||||
|
* ),
|
||||||
|
* @OA\Response(
|
||||||
|
* response="400",
|
||||||
|
* description="Error: Bad request. When required parameters were not supplied.",
|
||||||
|
* ),
|
||||||
|
* )
|
||||||
|
*/
|
||||||
public function main(Request $request, int $id)
|
public function main(Request $request, int $id)
|
||||||
{
|
{
|
||||||
$results = Anime::query()
|
$results = Anime::query()
|
||||||
|
@ -4,18 +4,10 @@ namespace App\Http\Controllers\V4DB;
|
|||||||
|
|
||||||
use App\Http\HttpHelper;
|
use App\Http\HttpHelper;
|
||||||
use App\Providers\SerializerFactory;
|
use App\Providers\SerializerFactory;
|
||||||
use App\Providers\SerializerServiceProdivder;
|
|
||||||
use App\Providers\SerializerServiceProviderV3;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Jikan\Jikan;
|
|
||||||
use Jikan\MyAnimeList\MalClient;
|
use Jikan\MyAnimeList\MalClient;
|
||||||
use JMS\Serializer\Context;
|
|
||||||
use JMS\Serializer\Serializer;
|
use JMS\Serializer\Serializer;
|
||||||
use Laravel\Lumen\Routing\Controller as BaseController;
|
use Laravel\Lumen\Routing\Controller as BaseController;
|
||||||
use mysql_xdevapi\Exception;
|
|
||||||
use r\Queries\Control\Http;
|
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Controller
|
* Class Controller
|
||||||
@ -23,6 +15,18 @@ use Symfony\Component\HttpFoundation\Response;
|
|||||||
*/
|
*/
|
||||||
class Controller extends BaseController
|
class Controller extends BaseController
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @OA\Info(
|
||||||
|
* title="Jikan API",
|
||||||
|
* version="4.0",
|
||||||
|
* @OA\Contact(
|
||||||
|
* email="neko@jikan.moe",
|
||||||
|
* name="Support"
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Serializer
|
* @var Serializer
|
||||||
*/
|
*/
|
||||||
|
@ -6,6 +6,186 @@ use Illuminate\Http\Resources\Json\JsonResource;
|
|||||||
|
|
||||||
class AnimeResource extends JsonResource
|
class AnimeResource extends JsonResource
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @OA\Schema(
|
||||||
|
* schema="anime",
|
||||||
|
* description="Anime Resource",
|
||||||
|
*
|
||||||
|
* @OA\Property(
|
||||||
|
* property="mal_id",
|
||||||
|
* type="integer",
|
||||||
|
* description="MyAnimeList ID"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="url",
|
||||||
|
* type="string",
|
||||||
|
* description="MyAnimeList URL"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="images",
|
||||||
|
* type="object",
|
||||||
|
* description="Images",
|
||||||
|
* @OA\Property(
|
||||||
|
* property="jpg",
|
||||||
|
* type="object",
|
||||||
|
* description="Available images in JPG",
|
||||||
|
* @OA\Property(
|
||||||
|
* property="image_url",
|
||||||
|
* type="string",
|
||||||
|
* description="Image URL JPG (225x335)",
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="small_image_url",
|
||||||
|
* type="string",
|
||||||
|
* description="Small Image URL JPG (50x74)",
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="large_image_url",
|
||||||
|
* type="string",
|
||||||
|
* description="Image URL JPG (300x446)",
|
||||||
|
* ),
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="webp",
|
||||||
|
* type="object",
|
||||||
|
* description="Available images in WEBP",
|
||||||
|
* @OA\Property(
|
||||||
|
* property="image_url",
|
||||||
|
* type="string",
|
||||||
|
* description="Image URL WEBP (225x335)",
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="small_image_url",
|
||||||
|
* type="string",
|
||||||
|
* description="Small Image URL WEBP (50x74)",
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="large_image_url",
|
||||||
|
* type="string",
|
||||||
|
* description="Image URL WEBP (300x446)",
|
||||||
|
* ),
|
||||||
|
* ),
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="trailer",
|
||||||
|
* ref="#/components/schemas/trailer"
|
||||||
|
* ),
|
||||||
|
*
|
||||||
|
* @OA\Property(
|
||||||
|
* property="title",
|
||||||
|
* type="string",
|
||||||
|
* description="Title"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="title_english",
|
||||||
|
* type="string",
|
||||||
|
* description="English Title"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="title_japanese",
|
||||||
|
* type="string",
|
||||||
|
* description="Japanese Title"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="title_synonyms",
|
||||||
|
* type="array",
|
||||||
|
* description="Other Titles",
|
||||||
|
* @OA\Items(
|
||||||
|
* type="string"
|
||||||
|
* )
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="type",
|
||||||
|
* type="string",
|
||||||
|
* enum={"TV","OVA","Movie","Special","ONA","Music"},
|
||||||
|
* description="Anime Type"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="source",
|
||||||
|
* type="string",
|
||||||
|
* description="Original Material/Source adapted from"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="episodes",
|
||||||
|
* type="integer",
|
||||||
|
* description="Episode count"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="status",
|
||||||
|
* type="string",
|
||||||
|
* enum={"Finished Airing", "Currently Airing", "Not yet aired"},
|
||||||
|
* description="Airing status"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="airing",
|
||||||
|
* type="bool",
|
||||||
|
* description="Airing boolean"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="aired",
|
||||||
|
* ref="#/components/schemas/daterange"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="duration",
|
||||||
|
* type="string",
|
||||||
|
* description="Parsed raw duration"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="rating",
|
||||||
|
* type="string",
|
||||||
|
* enum={"G - All Ages", "PG - Children", "PG-13 - Teens 13 or older", "R - 17+ (violence & profanity)", "R+ - Mild Nudity", "Rx - Hentai" },
|
||||||
|
* description="Anime audience rating"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="score",
|
||||||
|
* type="float",
|
||||||
|
* description="Score"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="scored_by",
|
||||||
|
* type="integer",
|
||||||
|
* description="Number of users"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="rank",
|
||||||
|
* type="integer",
|
||||||
|
* description="Ranking"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="popularity",
|
||||||
|
* type="integer",
|
||||||
|
* description="Popularity"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="members",
|
||||||
|
* type="integer",
|
||||||
|
* description="Number of users who have added this entry to their list"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="favorites",
|
||||||
|
* type="integer",
|
||||||
|
* description="Number of users who have favorited this entry"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="synopsis",
|
||||||
|
* type="string",
|
||||||
|
* description="Synopsis"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="background",
|
||||||
|
* type="string",
|
||||||
|
* description="Background"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="season",
|
||||||
|
* type="float",
|
||||||
|
* description="Score"
|
||||||
|
* ),
|
||||||
|
|
||||||
|
*
|
||||||
|
* )
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Transform the resource into an array.
|
* Transform the resource into an array.
|
||||||
*
|
*
|
||||||
@ -31,7 +211,7 @@ class AnimeResource extends JsonResource
|
|||||||
'aired' => $this->aired,
|
'aired' => $this->aired,
|
||||||
'duration' => $this->duration,
|
'duration' => $this->duration,
|
||||||
'rating' => $this->rating,
|
'rating' => $this->rating,
|
||||||
'scored' => $this->score,
|
'score' => $this->score,
|
||||||
'scored_by' => $this->scored_by,
|
'scored_by' => $this->scored_by,
|
||||||
'rank' => $this->rank,
|
'rank' => $this->rank,
|
||||||
'popularity' => $this->popularity,
|
'popularity' => $this->popularity,
|
||||||
|
@ -6,5 +6,94 @@ use Illuminate\Http\Resources\Json\JsonResource;
|
|||||||
|
|
||||||
class CommonResource extends JsonResource
|
class CommonResource extends JsonResource
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @OA\Schema(
|
||||||
|
* schema="trailer",
|
||||||
|
* type="object",
|
||||||
|
* description="Youtube Details",
|
||||||
|
*
|
||||||
|
* @OA\Property(
|
||||||
|
* property="youtube_id",
|
||||||
|
* type="string",
|
||||||
|
* description="YouTube ID"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="url",
|
||||||
|
* type="string",
|
||||||
|
* description="YouTube URL"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="embed_url",
|
||||||
|
* type="string",
|
||||||
|
* description="Parsed Embed URL"
|
||||||
|
* ),
|
||||||
|
* ),
|
||||||
|
*
|
||||||
|
* @OA\Schema(
|
||||||
|
* schema="daterange",
|
||||||
|
* type="object",
|
||||||
|
* description="Date range",
|
||||||
|
*
|
||||||
|
* @OA\Property(
|
||||||
|
* property="from",
|
||||||
|
* type="string",
|
||||||
|
* description="Date ISO8601"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="to",
|
||||||
|
* type="string",
|
||||||
|
* description="Date ISO8601"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="prop",
|
||||||
|
* type="object",
|
||||||
|
* description="Date Prop",
|
||||||
|
* @OA\Property(
|
||||||
|
* property="from",
|
||||||
|
* type="object",
|
||||||
|
* description="Date Prop From",
|
||||||
|
* @OA\Property(
|
||||||
|
* property="day",
|
||||||
|
* type="integer",
|
||||||
|
* description="Day"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="month",
|
||||||
|
* type="integer",
|
||||||
|
* description="Month"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="year",
|
||||||
|
* type="integer",
|
||||||
|
* description="year"
|
||||||
|
* ),
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="to",
|
||||||
|
* type="object",
|
||||||
|
* description="Date Prop To",
|
||||||
|
* @OA\Property(
|
||||||
|
* property="day",
|
||||||
|
* type="integer",
|
||||||
|
* description="Day"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="month",
|
||||||
|
* type="integer",
|
||||||
|
* description="Month"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="year",
|
||||||
|
* type="integer",
|
||||||
|
* description="year"
|
||||||
|
* ),
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="string",
|
||||||
|
* type="string",
|
||||||
|
* description="Raw parsed string"
|
||||||
|
* ),
|
||||||
|
* ),
|
||||||
|
* )
|
||||||
|
*/
|
||||||
}
|
}
|
@ -37,6 +37,8 @@ $app->register(Jenssegers\Mongodb\MongodbServiceProvider::class);
|
|||||||
$app->withFacades();
|
$app->withFacades();
|
||||||
$app->withEloquent();
|
$app->withEloquent();
|
||||||
|
|
||||||
|
$app->configure('swagger-lume');
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Register Container Bindings
|
| Register Container Bindings
|
||||||
@ -99,6 +101,8 @@ $app->configure('queue');
|
|||||||
$app->configure('controller-to-table-mapping');
|
$app->configure('controller-to-table-mapping');
|
||||||
$app->configure('controller');
|
$app->configure('controller');
|
||||||
|
|
||||||
|
$app->register(\SwaggerLume\ServiceProvider::class);
|
||||||
|
|
||||||
if (env('CACHING')) {
|
if (env('CACHING')) {
|
||||||
$app->configure('cache');
|
$app->configure('cache');
|
||||||
$app->register(Illuminate\Redis\RedisServiceProvider::class);
|
$app->register(Illuminate\Redis\RedisServiceProvider::class);
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
"ext-json": "*",
|
"ext-json": "*",
|
||||||
"ext-mongodb": "*",
|
"ext-mongodb": "*",
|
||||||
"danielmewes/php-rql": "dev-master",
|
"danielmewes/php-rql": "dev-master",
|
||||||
|
"darkaonline/swagger-lume": "7",
|
||||||
"divineomega/cachetphp": "^0.2.0",
|
"divineomega/cachetphp": "^0.2.0",
|
||||||
"fabpot/goutte": "3.2.3",
|
"fabpot/goutte": "3.2.3",
|
||||||
"flipbox/lumen-generator": "^6",
|
"flipbox/lumen-generator": "^6",
|
||||||
@ -22,7 +23,8 @@
|
|||||||
"predis/predis": "^1.1",
|
"predis/predis": "^1.1",
|
||||||
"symfony/yaml": "^4.1",
|
"symfony/yaml": "^4.1",
|
||||||
"vlucas/phpdotenv": "^4",
|
"vlucas/phpdotenv": "^4",
|
||||||
"voku/anti-xss": "^4.0"
|
"voku/anti-xss": "^4.0",
|
||||||
|
"zircote/swagger-php": "3.*"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fzaninotto/faker": "^1.9.1",
|
"fzaninotto/faker": "^1.9.1",
|
||||||
|
176
composer.lock
generated
176
composer.lock
generated
@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "2aa457b1ebc4916d31595557c9a0d095",
|
"content-hash": "e3247d03ea2c99fbb0f463eb109a8f79",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "brick/math",
|
"name": "brick/math",
|
||||||
@ -164,6 +164,60 @@
|
|||||||
],
|
],
|
||||||
"time": "2016-05-31T01:55:32+00:00"
|
"time": "2016-05-31T01:55:32+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "darkaonline/swagger-lume",
|
||||||
|
"version": "7.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/DarkaOnLine/SwaggerLume.git",
|
||||||
|
"reference": "f51914718ab6a9b23c66febdef82d26da2f2fad8"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/DarkaOnLine/SwaggerLume/zipball/f51914718ab6a9b23c66febdef82d26da2f2fad8",
|
||||||
|
"reference": "f51914718ab6a9b23c66febdef82d26da2f2fad8",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"laravel/lumen-framework": "~6.0|~7.0",
|
||||||
|
"php": ">=7.2",
|
||||||
|
"swagger-api/swagger-ui": "^3.0",
|
||||||
|
"zircote/swagger-php": "~2.0|3.*"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"fzaninotto/faker": "~1.8",
|
||||||
|
"mockery/mockery": "1.*",
|
||||||
|
"phpunit/phpunit": "8.*",
|
||||||
|
"satooshi/php-coveralls": "^2.0",
|
||||||
|
"vlucas/phpdotenv": "~3.3|~4.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"src/helpers.php"
|
||||||
|
],
|
||||||
|
"psr-4": {
|
||||||
|
"SwaggerLume\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Darius Matulionis",
|
||||||
|
"email": "darius@matulionis.lt"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Swagger integration to Lumen 5",
|
||||||
|
"keywords": [
|
||||||
|
"laravel",
|
||||||
|
"lumen",
|
||||||
|
"swagger"
|
||||||
|
],
|
||||||
|
"time": "2020-03-26T09:34:03+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "divineomega/cachetphp",
|
"name": "divineomega/cachetphp",
|
||||||
"version": "v0.2",
|
"version": "v0.2",
|
||||||
@ -3687,6 +3741,63 @@
|
|||||||
],
|
],
|
||||||
"time": "2020-03-29T20:13:32+00:00"
|
"time": "2020-03-29T20:13:32+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "swagger-api/swagger-ui",
|
||||||
|
"version": "v3.28.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/swagger-api/swagger-ui.git",
|
||||||
|
"reference": "3cef22736827b933b0f116e33847a47f7724bd16"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/swagger-api/swagger-ui/zipball/3cef22736827b933b0f116e33847a47f7724bd16",
|
||||||
|
"reference": "3cef22736827b933b0f116e33847a47f7724bd16",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"Apache-2.0"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Anna Bodnia",
|
||||||
|
"email": "anna.bodnia@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Buu Nguyen",
|
||||||
|
"email": "buunguyen@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Josh Ponelat",
|
||||||
|
"email": "jponelat@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Kyle Shockey",
|
||||||
|
"email": "kyleshockey1@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Robert Barnwell",
|
||||||
|
"email": "robert@robertismy.name"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Sahar Jafari",
|
||||||
|
"email": "shr.jafari@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": " Swagger UI is a collection of HTML, Javascript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API.",
|
||||||
|
"homepage": "http://swagger.io",
|
||||||
|
"keywords": [
|
||||||
|
"api",
|
||||||
|
"documentation",
|
||||||
|
"openapi",
|
||||||
|
"specification",
|
||||||
|
"swagger",
|
||||||
|
"ui"
|
||||||
|
],
|
||||||
|
"time": "2020-06-29T12:43:36+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/browser-kit",
|
"name": "symfony/browser-kit",
|
||||||
"version": "v4.4.8",
|
"version": "v4.4.8",
|
||||||
@ -5473,6 +5584,69 @@
|
|||||||
"utf8"
|
"utf8"
|
||||||
],
|
],
|
||||||
"time": "2020-05-14T00:59:19+00:00"
|
"time": "2020-05-14T00:59:19+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "zircote/swagger-php",
|
||||||
|
"version": "3.0.4",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/zircote/swagger-php.git",
|
||||||
|
"reference": "fa47d62c22c95272625624fbf8109fa46ffac43b"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/zircote/swagger-php/zipball/fa47d62c22c95272625624fbf8109fa46ffac43b",
|
||||||
|
"reference": "fa47d62c22c95272625624fbf8109fa46ffac43b",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"doctrine/annotations": "*",
|
||||||
|
"php": ">=7.2",
|
||||||
|
"symfony/finder": ">=2.2",
|
||||||
|
"symfony/yaml": ">=3.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": ">=8",
|
||||||
|
"squizlabs/php_codesniffer": ">=3.3",
|
||||||
|
"zendframework/zend-form": "<2.8"
|
||||||
|
},
|
||||||
|
"bin": [
|
||||||
|
"bin/openapi"
|
||||||
|
],
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"OpenApi\\": "src"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"src/functions.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"Apache-2.0"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Robert Allen",
|
||||||
|
"email": "zircote@gmail.com",
|
||||||
|
"homepage": "http://www.zircote.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Bob Fanger",
|
||||||
|
"email": "bfanger@gmail.com",
|
||||||
|
"homepage": "http://bfanger.nl"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "swagger-php - Generate interactive documentation for your RESTful API using phpdoc annotations",
|
||||||
|
"homepage": "https://github.com/zircote/swagger-php/",
|
||||||
|
"keywords": [
|
||||||
|
"api",
|
||||||
|
"json",
|
||||||
|
"rest",
|
||||||
|
"service discovery"
|
||||||
|
],
|
||||||
|
"time": "2020-05-07T09:10:49+00:00"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"packages-dev": [
|
"packages-dev": [
|
||||||
|
204
config/swagger-lume.php
Normal file
204
config/swagger-lume.php
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'api' => [
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Edit to set the api's title
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
'title' => 'Swagger Lume API',
|
||||||
|
],
|
||||||
|
|
||||||
|
'routes' => [
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Route for accessing api documentation interface
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
'api' => '/api/documentation',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Route for accessing parsed swagger annotations.
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
'docs' => '/docs',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Route for Oauth2 authentication callback.
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
'oauth2_callback' => '/api/oauth2-callback',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Route for serving assets
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
'assets' => '/swagger-ui-assets',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Middleware allows to prevent unexpected access to API documentation
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
'middleware' => [
|
||||||
|
'api' => [],
|
||||||
|
'asset' => [],
|
||||||
|
'docs' => [],
|
||||||
|
'oauth2_callback' => [],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
|
||||||
|
'paths' => [
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Absolute path to location where parsed swagger annotations will be stored
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
'docs' => storage_path('api-docs'),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| File name of the generated json documentation file
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
'docs_json' => 'api-docs.json',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Absolute path to directory containing the swagger annotations are stored.
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
'annotations' => base_path('app'),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Absolute path to directories that you would like to exclude from swagger generation
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
'excludes' => [],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Edit to set the swagger scan base path
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
'base' => env('L5_SWAGGER_BASE_PATH', null),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Absolute path to directory where to export views
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
'views' => base_path('resources/views/vendor/swagger-lume'),
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| API security definitions. Will be generated into documentation file.
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
'security' => [
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Examples of Security definitions
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
'api_key_security_example' => [ // Unique name of security
|
||||||
|
'type' => 'apiKey', // The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".
|
||||||
|
'description' => 'A short description for security scheme',
|
||||||
|
'name' => 'api_key', // The name of the header or query parameter to be used.
|
||||||
|
'in' => 'header', // The location of the API key. Valid values are "query" or "header".
|
||||||
|
],
|
||||||
|
'oauth2_security_example' => [ // Unique name of security
|
||||||
|
'type' => 'oauth2', // The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".
|
||||||
|
'description' => 'A short description for oauth2 security scheme.',
|
||||||
|
'flow' => 'implicit', // The flow used by the OAuth2 security scheme. Valid values are "implicit", "password", "application" or "accessCode".
|
||||||
|
'authorizationUrl' => 'http://example.com/auth', // The authorization URL to be used for (implicit/accessCode)
|
||||||
|
//'tokenUrl' => 'http://example.com/auth' // The authorization URL to be used for (password/application/accessCode)
|
||||||
|
'scopes' => [
|
||||||
|
'read:projects' => 'read your projects',
|
||||||
|
'write:projects' => 'modify projects in your account',
|
||||||
|
]
|
||||||
|
],*/
|
||||||
|
|
||||||
|
/* Open API 3.0 support
|
||||||
|
'passport' => [ // Unique name of security
|
||||||
|
'type' => 'oauth2', // The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".
|
||||||
|
'description' => 'Laravel passport oauth2 security.',
|
||||||
|
'in' => 'header',
|
||||||
|
'scheme' => 'https',
|
||||||
|
'flows' => [
|
||||||
|
"password" => [
|
||||||
|
"authorizationUrl" => config('app.url') . '/oauth/authorize',
|
||||||
|
"tokenUrl" => config('app.url') . '/oauth/token',
|
||||||
|
"refreshUrl" => config('app.url') . '/token/refresh',
|
||||||
|
"scopes" => []
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
*/
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Turn this off to remove swagger generation on production
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
'generate_always' => env('SWAGGER_GENERATE_ALWAYS', false),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Edit to set the swagger version number
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
'swagger_version' => env('SWAGGER_VERSION', '3.0'),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Edit to trust the proxy's ip address - needed for AWS Load Balancer
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
'proxy' => false,
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Configs plugin allows to fetch external configs instead of passing them to SwaggerUIBundle.
|
||||||
|
| See more at: https://github.com/swagger-api/swagger-ui#configs-plugin
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
'additional_config_url' => null,
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Apply a sort to the operation list of each API. It can be 'alpha' (sort by paths alphanumerically),
|
||||||
|
| 'method' (sort by HTTP method).
|
||||||
|
| Default is the order returned by the server unchanged.
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
'operations_sort' => env('L5_SWAGGER_OPERATIONS_SORT', null),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Uncomment to pass the validatorUrl parameter to SwaggerUi init on the JS
|
||||||
|
| side. A null value here disables validation.
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
'validator_url' => null,
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Uncomment to add constants which can be used in anotations
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
'constants' => [
|
||||||
|
// 'SWAGGER_LUME_CONST_HOST' => env('SWAGGER_LUME_CONST_HOST', 'http://my-default-host.com'),
|
||||||
|
],
|
||||||
|
];
|
101
resources/views/vendor/swagger-lume/index.blade.php
vendored
Normal file
101
resources/views/vendor/swagger-lume/index.blade.php
vendored
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
<!-- HTML for static distribution bundle build -->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>{{config('swagger-lume.api.title')}}</title>
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" type="text/css" href="{{ swagger_lume_asset('swagger-ui.css') }}" >
|
||||||
|
<link rel="icon" type="image/png" href="{{ swagger_lume_asset('favicon-32x32.png') }}" sizes="32x32" />
|
||||||
|
<link rel="icon" type="image/png" href="{{ swagger_lume_asset('favicon-16x16.png') }}" sizes="16x16" />
|
||||||
|
<style>
|
||||||
|
html
|
||||||
|
{
|
||||||
|
box-sizing: border-box;
|
||||||
|
overflow: -moz-scrollbars-vertical;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
*,
|
||||||
|
*:before,
|
||||||
|
*:after
|
||||||
|
{
|
||||||
|
box-sizing: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin:0;
|
||||||
|
background: #fafafa;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position:absolute;width:0;height:0">
|
||||||
|
<defs>
|
||||||
|
<symbol viewBox="0 0 20 20" id="unlocked">
|
||||||
|
<path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"></path>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
<symbol viewBox="0 0 20 20" id="locked">
|
||||||
|
<path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
<symbol viewBox="0 0 20 20" id="close">
|
||||||
|
<path d="M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
<symbol viewBox="0 0 20 20" id="large-arrow">
|
||||||
|
<path d="M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
<symbol viewBox="0 0 20 20" id="large-arrow-down">
|
||||||
|
<path d="M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
|
||||||
|
<symbol viewBox="0 0 24 24" id="jump-to">
|
||||||
|
<path d="M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
<symbol viewBox="0 0 24 24" id="expand">
|
||||||
|
<path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<div id="swagger-ui"></div>
|
||||||
|
|
||||||
|
<script src="{{ swagger_lume_asset('swagger-ui-bundle.js') }}"> </script>
|
||||||
|
<script src="{{ swagger_lume_asset('swagger-ui-standalone-preset.js') }}"> </script>
|
||||||
|
<script>
|
||||||
|
window.onload = function() {
|
||||||
|
// Build a system
|
||||||
|
const ui = SwaggerUIBundle({
|
||||||
|
dom_id: '#swagger-ui',
|
||||||
|
|
||||||
|
url: "{!! $urlToDocs !!}",
|
||||||
|
operationsSorter: {!! isset($operationsSorter) ? '"' . $operationsSorter . '"' : 'null' !!},
|
||||||
|
configUrl: {!! isset($additionalConfigUrl) ? '"' . $additionalConfigUrl . '"' : 'null' !!},
|
||||||
|
validatorUrl: {!! isset($validatorUrl) ? '"' . $validatorUrl . '"' : 'null' !!},
|
||||||
|
oauth2RedirectUrl: "{{ route('swagger-lume.oauth2_callback') }}",
|
||||||
|
|
||||||
|
presets: [
|
||||||
|
SwaggerUIBundle.presets.apis,
|
||||||
|
SwaggerUIStandalonePreset
|
||||||
|
],
|
||||||
|
|
||||||
|
plugins: [
|
||||||
|
SwaggerUIBundle.plugins.DownloadUrl
|
||||||
|
],
|
||||||
|
|
||||||
|
layout: "StandaloneLayout"
|
||||||
|
})
|
||||||
|
|
||||||
|
window.ui = ui
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
230
storage/api-docs/api-docs.json
Normal file
230
storage/api-docs/api-docs.json
Normal file
@ -0,0 +1,230 @@
|
|||||||
|
{
|
||||||
|
"openapi": "3.0.0",
|
||||||
|
"info": {
|
||||||
|
"title": "Jikan API",
|
||||||
|
"contact": {
|
||||||
|
"name": "Support",
|
||||||
|
"email": "neko@jikan.moe"
|
||||||
|
},
|
||||||
|
"version": "4.0"
|
||||||
|
},
|
||||||
|
"paths": {
|
||||||
|
"/anime/{id}": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"anime"
|
||||||
|
],
|
||||||
|
"operationId": "getAnimeById",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "Returns anime resource",
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Error: Bad request. When required parameters were not supplied."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"components": {
|
||||||
|
"schemas": {
|
||||||
|
"anime": {
|
||||||
|
"description": "Anime Resource",
|
||||||
|
"properties": {
|
||||||
|
"mal_id": {
|
||||||
|
"description": "MyAnimeList ID",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"description": "MyAnimeList URL",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"images": {
|
||||||
|
"description": "Images",
|
||||||
|
"properties": {
|
||||||
|
"jpg": {
|
||||||
|
"description": "Available images in JPG",
|
||||||
|
"properties": {
|
||||||
|
"image_url": {
|
||||||
|
"description": "Image URL JPG (225x335)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"small_image_url": {
|
||||||
|
"description": "Small Image URL JPG (50x74)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"large_image_url": {
|
||||||
|
"description": "Image URL JPG (300x446)",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"webp": {
|
||||||
|
"description": "Available images in WEBP",
|
||||||
|
"properties": {
|
||||||
|
"image_url": {
|
||||||
|
"description": "Image URL WEBP (225x335)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"small_image_url": {
|
||||||
|
"description": "Small Image URL WEBP (50x74)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"large_image_url": {
|
||||||
|
"description": "Image URL WEBP (300x446)",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"trailer": {
|
||||||
|
"$ref": "#/components/schemas/trailer"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"description": "Title",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"title_english": {
|
||||||
|
"description": "English Title",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"title_japanese": {
|
||||||
|
"description": "Japanese Title",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"title_synonyms": {
|
||||||
|
"description": "Other Titles",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"description": "Anime Type",
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"TV",
|
||||||
|
"OVA",
|
||||||
|
"Movie",
|
||||||
|
"Special",
|
||||||
|
"ONA",
|
||||||
|
"Music"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"description": "Original Material/Source adapted from",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"episodes": {
|
||||||
|
"description": "Episode count",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"description": "Airing status",
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"Finished Airing",
|
||||||
|
"Currently Airing",
|
||||||
|
"Not yet aired"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"airing": {
|
||||||
|
"description": "Airing boolean",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
|
"aired": {
|
||||||
|
"$ref": "#/components/schemas/daterange"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"trailer": {
|
||||||
|
"description": "Youtube Details",
|
||||||
|
"properties": {
|
||||||
|
"youtube_id": {
|
||||||
|
"description": "YouTube ID",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"description": "YouTube URL",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"embed_url": {
|
||||||
|
"description": "Parsed Embed URL",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"daterange": {
|
||||||
|
"description": "Date range",
|
||||||
|
"properties": {
|
||||||
|
"from": {
|
||||||
|
"description": "Date ISO8601",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"to": {
|
||||||
|
"description": "Date ISO8601",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"prop": {
|
||||||
|
"description": "Date Prop",
|
||||||
|
"properties": {
|
||||||
|
"from": {
|
||||||
|
"description": "Date Prop From",
|
||||||
|
"properties": {
|
||||||
|
"day": {
|
||||||
|
"description": "Day",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"month": {
|
||||||
|
"description": "Month",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"year": {
|
||||||
|
"description": "year",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"to": {
|
||||||
|
"description": "Date Prop To",
|
||||||
|
"properties": {
|
||||||
|
"day": {
|
||||||
|
"description": "Day",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"month": {
|
||||||
|
"description": "Month",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"year": {
|
||||||
|
"description": "year",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"string": {
|
||||||
|
"description": "Raw parsed string",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user