{ "openapi": "3.0.3", "info": { "description": "Integrate tracking shows with Kurozora content.\n *** \nThe Kurozora API is a web service that lets you access information about the media found in the Kurozora Catalog and the user's personal Kurozora Library. Here's what each one includes:\n- The Kurozora Catalog includes all resources available in Kurozora.\n- The user's Kurozora Library contains only those resources that the user added to their personal library. For example, it contains shows added to their tracking list, and favorites.\n\nUse this service to retrieve information about people, characters, episodes, seasons, genres, shows, studios, feeds, users, and the users' library.\nWith proper authorization from the user, you can also create or modify their library, apply ratings to shows, create or modify feeds and react on replies.", "version": "1.3.1", "title": "Kurozora API", "termsOfService": "https://swagger.io/terms/", "contact": { "email": "kurozoraapp@gmail.com" }, "license": { "name": "Apache 2.0", "url": "https://www.apache.org/licenses/LICENSE-2.0.html" } }, "servers": [ { "url": "https://api.kurozora.app/v1", "description": "Kurozora LIVE" }, { "url": "https://api.kurozora-web.test/v1", "description": "Kurozora LOCAL" } ], "tags": [ { "name": "explore", "description": "Everything explore page related" }, { "name": "anime", "description": "Everything anime related" }, { "name": "cast", "description": "Everything cast related" }, { "name": "characters", "description": "Everything character related" }, { "name": "episodes", "description": "Everything episodes related" }, { "name": "genres", "description": "Everything genre related" }, { "name": "people", "description": "Everything people related" }, { "name": "seasons", "description": "Everything seasons related" }, { "name": "studios", "description": "Everything studio related" }, { "name": "themes", "description": "Everything themes related" }, { "name":"feed", "description":"Everything feed related" }, { "name": "me", "description": "Endpoints related to the authenticated user." }, { "name": "users", "description": "Everything user related" }, { "name": "theme-store", "description": "Everything theme store related" }, { "name": "store", "description": "All store endpoints" }, { "name": "legal", "description": "All legal endpoints" }, { "name": "misc", "description": "All other endpoints" } ], "paths": { "/explore": { "get": { "security": [ { }, { "bearerAuth": [ ] } ], "tags": [ "explore" ], "operationId": "getExplore", "summary": "(optional authentication) Explore page.", "description": "This endpoint will retrieve the details to for the explore page.", "parameters": [ { "in": "query", "name": "genre_id", "schema": { "type": "integer" }, "required": false, "description": "ID of the genre to filter on." } ], "responses": { "200": { "$ref": "#/components/responses/JSONSuccess" }, "400": { "$ref": "#/components/responses/JSONError" } } } }, "/anime/{animeID}": { "get": { "security": [ { }, { "bearerAuth": [ ] } ], "tags": [ "anime" ], "operationId": "getAnime", "summary": "(optional authentication) Anime details.", "description": "This endpoint will retrieve the details of an Anime item.", "parameters": [ { "in": "path", "name": "animeID", "schema": { "type": "integer" }, "required": true, "description": "ID of the anime." }, { "in": "query", "name": "include", "schema": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "explode": false, "required": false, "description": "The relations to include in the response. Available relations are:\n- cast\n- characters\n- related-shows\n- seasons\n- staff\n- studios" } ], "responses": { "200": { "$ref": "#/components/responses/GetAnimeSuccess" }, "400": { "$ref": "#/components/responses/JSONError" } } } }, "/anime/{animeID}/cast": { "get": { "tags": [ "anime" ], "operationId": "getAnimeCast", "summary": "Anime cast information.", "description": "This endpoint will retrieve the casts of an Anime item.", "parameters": [ { "in": "path", "name": "animeID", "schema": { "type": "integer" }, "required": true, "description": "ID of the anime." }, { "in": "query", "name": "limit", "schema": { "type": "string", "example": 25, "minimum": 1, "maximum": 100 }, "required": false, "description": "The limit on the number of objects, or number of objects in the specified relationship, that are returned. The default value is 25 and the maximum value is 100." }, { "in": "query", "name": "page", "schema": { "type": "string", "minimum": 1 }, "required": false, "description": "The next page or group of objects to fetch. The default value is 1." } ], "responses": { "200": { "$ref": "#/components/responses/GetAnimeCastSuccess" }, "400": { "$ref": "#/components/responses/JSONError" } } } }, "/anime/{animeID}/characters": { "get": { "tags": [ "anime" ], "operationId": "getAnimeCharacters", "summary": "Anime character information.", "description": "This endpoint will retrieve the characters of an Anime item.", "parameters": [ { "in": "path", "name": "animeID", "schema": { "type": "integer" }, "required": true, "description": "ID of the anime." }, { "in": "query", "name": "limit", "schema": { "type": "string", "example": 25, "minimum": 1, "maximum": 100 }, "required": false, "description": "The limit on the number of objects, or number of objects in the specified relationship, that are returned. The default value is 25 and the maximum value is 100." }, { "in": "query", "name": "page", "schema": { "type": "string", "minimum": 1 }, "required": false, "description": "The next page or group of objects to fetch. The default value is 1." } ], "responses": { "200": { "$ref": "#/components/responses/GetAnimeCharactersSuccess" }, "400": { "$ref": "#/components/responses/JSONError" } } } }, "/anime/{animeID}/related-shows": { "get": { "security": [ { }, { "bearerAuth": [ ] } ], "tags": [ "anime" ], "operationId": "getAnimeRelatedShows", "summary": "Anime related-shows information.", "description": "This endpoint will retrieve the related-shows of an Anime item.", "parameters": [ { "in": "path", "name": "animeID", "schema": { "type": "integer" }, "required": true, "description": "ID of the anime." }, { "in": "query", "name": "limit", "schema": { "type": "string", "example": 25, "minimum": 1, "maximum": 100 }, "required": false, "description": "The limit on the number of objects, or number of objects in the specified relationship, that are returned. The default value is 25 and the maximum value is 100." }, { "in": "query", "name": "page", "schema": { "type": "string", "minimum": 1 }, "required": false, "description": "The next page or group of objects to fetch. The default value is 1." } ], "responses": { "200": { "$ref": "#/components/responses/GetAnimeRelatedShowsSuccess" }, "400": { "$ref": "#/components/responses/JSONError" } } } }, "/anime/{animeID}/rate": { "post": { "security": [ { "bearerAuth": [ ] } ], "tags": [ "anime" ], "operationId": "postAnimeRate", "summary": "Rate an Anime.", "description": "This endpoint will allow user's to leave a rating for an Anime.", "requestBody": { "content": { "application/x-www-form-urlencoded": { "schema": { "type": "object", "properties": { "rating": { "type": "number", "format": "double", "description": "The rating to leave.", "example": 2.5, "minimum": 0, "maximum": 5 }, "description": { "type": "string", "description": "The description accompanying the rating." } }, "required": [ "rating" ] } } } }, "parameters": [ { "in": "path", "name": "animeID", "schema": { "type": "integer" }, "required": true, "description": "ID of the anime." } ], "responses": { "200": { "$ref": "#/components/responses/JSONSuccess" }, "400": { "$ref": "#/components/responses/JSONError" } } } }, "/anime/{animeID}/seasons": { "get": { "tags": [ "anime" ], "operationId": "getSeasons", "summary": "Anime all seasons information.", "description": "This endpoint will retrieve the seasons of an Anime item.", "parameters": [ { "in": "path", "name": "animeID", "schema": { "type": "integer" }, "required": true, "description": "ID of the anime." }, { "in": "query", "name": "limit", "schema": { "type": "string", "example": 25, "minimum": 1, "maximum": 100 }, "required": false, "description": "The limit on the number of objects, or number of objects in the specified relationship, that are returned. The default value is 25 and the maximum value is 100." }, { "in": "query", "name": "page", "schema": { "type": "string", "minimum": 1 }, "required": false, "description": "The next page or group of objects to fetch. The default value is 1." } ], "responses": { "200": { "$ref": "#/components/responses/GetSeasonsSuccess" }, "400": { "$ref": "#/components/responses/JSONError" } } } }, "/anime/{animeID}/staff": { "get": { "tags": [ "anime" ], "operationId": "getAnimeStaff", "summary": "Anime staff information.", "description": "This endpoint will retrieve the staff of an Anime item.", "parameters": [ { "in": "path", "name": "animeID", "schema": { "type": "integer" }, "required": true, "description": "ID of the anime." }, { "in": "query", "name": "limit", "schema": { "type": "string", "example": 25, "minimum": 1, "maximum": 100 }, "required": false, "description": "The limit on the number of objects, or number of objects in the specified relationship, that are returned. The default value is 25 and the maximum value is 100." }, { "in": "query", "name": "page", "schema": { "type": "string", "minimum": 1 }, "required": false, "description": "The next page or group of objects to fetch. The default value is 1." } ], "responses": { "200": { "$ref": "#/components/responses/GetAnimeStaffSuccess" }, "400": { "$ref": "#/components/responses/JSONError" } } } }, "/anime/{animeID}/studios": { "get": { "tags": [ "anime" ], "operationId": "getAnimeStudios", "summary": "Anime studio information.", "description": "This endpoint will retrieve the studios of an Anime item.", "parameters": [ { "in": "path", "name": "animeID", "schema": { "type": "integer" }, "required": true, "description": "ID of the anime." }, { "in": "query", "name": "limit", "schema": { "type": "string", "example": 25, "minimum": 1, "maximum": 100 }, "required": false, "description": "The limit on the number of objects, or number of objects in the specified relationship, that are returned. The default value is 25 and the maximum value is 100." }, { "in": "query", "name": "page", "schema": { "type": "string", "minimum": 1 }, "required": false, "description": "The next page or group of objects to fetch. The default value is 1." } ], "responses": { "200": { "$ref": "#/components/responses/GetAnimeStudiosSuccess" }, "400": { "$ref": "#/components/responses/JSONError" } } } }, "/anime/upcoming": { "get": { "security": [ { }, { "bearerAuth": [ ] } ], "tags": [ "anime" ], "operationId": "getAnimeUpcoming", "summary": "Upcoming anime information.", "description": "This endpoint will retrieve the upcoming Anime items.", "parameters": [ { "in": "query", "name": "limit", "schema": { "type": "string", "example": 25, "minimum": 1, "maximum": 100 }, "required": false, "description": "The limit on the number of objects, or number of objects in the specified relationship, that are returned. The default value is 25 and the maximum value is 100." }, { "in": "query", "name": "page", "schema": { "type": "string", "minimum": 1 }, "required": false, "description": "The next page or group of objects to fetch. The default value is 1." } ], "responses": { "200": { "$ref": "#/components/responses/GetAnimeUpcomingSuccess" }, "400": { "$ref": "#/components/responses/JSONError" } } } }, "/anime/search": { "get": { "security": [ { }, { "bearerAuth": [ ] } ], "tags": [ "anime" ], "operationId": "getAnimeSearch", "summary": "(optional authentication) Searches Anime.", "description": "This endpoint will retrieve the search results for Anime.\n