diff --git a/.circleci/config.yml b/.circleci/config.yml index ca9a3533..4c652294 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -20,6 +20,9 @@ jobs: - run: name: Run tests command: make test + - run: + name: Generate OpenAPI schema + command: make openapi-generate build: docker: - image: cimg/python:3.10.9 diff --git a/.dockerignore b/.dockerignore index dd4e3be5..48324223 100644 --- a/.dockerignore +++ b/.dockerignore @@ -18,7 +18,7 @@ graphql .vscode .github .circleci -docker-compose.yml +docker-compose* .dockerignore /*.md /*.js diff --git a/.github/workflows/docker-build-and-push.yml b/.github/workflows/docker-build-and-push.yml index 66d81883..2ab7c156 100644 --- a/.github/workflows/docker-build-and-push.yml +++ b/.github/workflows/docker-build-and-push.yml @@ -13,24 +13,24 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: submodules: recursive - name: Docker meta id: meta - uses: docker/metadata-action@v3 + uses: docker/metadata-action@v5 with: # list of Docker images to use as base name for tags images: | pokeapi/pokeapi - name: Set up QEMU - uses: docker/setup-qemu-action@v1 + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx id: buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v3 - name: Login to DockerHub if: github.event_name != 'pull_request' - uses: docker/login-action@v1 + uses: docker/login-action@v1 with: username: ${{ secrets.DOCKERHUB_USERNAME_NARAMSIM }} password: ${{ secrets.DOCKERHUB_TOKEN_NARAMSIM }} @@ -43,12 +43,12 @@ jobs: echo "Platforms: ${{ steps.buildx.outputs.platforms }}" - name: Build and push id: docker_build - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v5 with: context: . file: ./Resources/docker/app/Dockerfile push: true - platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/arm/v7,linux/arm/v6 + platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6 tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - name: Image digest diff --git a/Makefile b/Makefile index dbd96759..f421627a 100755 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ veekun_pokedex_repository = ../pokedex local_config = --settings=config.local docker_config = --settings=config.docker-compose +gql_compose_config = -f docker-compose.yml -f Resources/compose/docker-compose-prod-graphql.yml .PHONY: help .SILENT: @@ -41,39 +42,42 @@ make-migrations: # Create migrations files if schema has changed shell: # Load a shell python manage.py shell ${local_config} +openapi-generate: + python manage.py spectacular --color --file openapi.yml ${local_config} + docker-up: # (Docker) Create services/volumes/networks - docker-compose up -d + docker compose up -d docker-migrate: # (Docker) Run any pending migrations - docker-compose exec -T app python manage.py migrate ${docker_config} + docker compose exec -T app python manage.py migrate ${docker_config} docker-build-db: # (Docker) Build the database - docker-compose exec -T app sh -c 'echo "from data.v2.build import build_all; build_all()" | python manage.py shell ${docker_config}' + docker compose exec -T app sh -c 'echo "from data.v2.build import build_all; build_all()" | python manage.py shell ${docker_config}' docker-make-migrations: # (Docker) Create migrations files if schema has changed - docker-compose exec -T app sh -c 'python manage.py makemigrations ${docker_config}' + docker compose exec -T app sh -c 'python manage.py makemigrations ${docker_config}' docker-flush-db: # (Docker) Removes all the data present in the database but preserves tables and migrations - docker-compose exec -T app sh -c 'python manage.py flush --no-input ${docker_config}' + docker compose exec -T app sh -c 'python manage.py flush --no-input ${docker_config}' docker-destroy-db: # (Docker) Removes the volume where the database is installed on, alongside to the container itself docker rm -f pokeapi_db_1 docker volume rm pokeapi_pg_data docker-shell: # (Docker) Launch an interative shell for the pokeapi container - docker-compose exec app sh -l + docker compose exec app sh -l docker-stop: # (Docker) Stop containers - docker-compose stop + docker compose stop docker-down: # (Docker) Stop and removes containers and networks - docker-compose down + docker compose down docker-test: # (Docker) Run tests - docker-compose exec -T app python manage.py test ${local_config} + docker compose exec -T app python manage.py test ${local_config} docker-prod: - docker-compose -f docker-compose.yml -f docker-compose.override.yml -f Resources/compose/docker-compose-prod-graphql.yml up -d + docker compose -f docker-compose.yml -f docker-compose.override.yml -f Resources/compose/docker-compose-prod-graphql.yml up -d docker-setup: docker-up docker-migrate docker-build-db # (Docker) Start services, prepare the latest DB schema, populate the DB @@ -119,10 +123,10 @@ kustomize-local-apply: # (Kustomize) Run kubectl apply -k on the connected k8s kubectl apply -k Resources/k8s/kustomize/local/ k8s-migrate: # (k8s) Run any pending migrations - kubectl exec --namespace pokeapi deployment/pokeapi -- python manage.py migrate --settings=config.docker-compose + kubectl exec --namespace pokeapi deployment/pokeapi -- python manage.py migrate ${docker_config} k8s-build-db: # (k8s) Build the database - kubectl exec --namespace pokeapi deployment/pokeapi -- sh -c 'echo "from data.v2.build import build_all; build_all()" | python manage.py shell --settings=config.docker-compose' + kubectl exec --namespace pokeapi deployment/pokeapi -- sh -c 'echo "from data.v2.build import build_all; build_all()" | python manage.py shell ${docker_config}' k8s-delete: # (k8s) Delete pokeapi namespace kubectl delete namespace pokeapi @@ -138,17 +142,19 @@ down-graphql-prod: docker system prune --all --volumes --force sync; echo 3 > /proc/sys/vm/drop_caches +# Nginx doesn't start if upstream graphql-engine is down update-graphql-data-prod: + docker compose ${gql_compose_config} stop git pull origin master git submodule update --init - docker compose stop graphql-engine + docker compose ${gql_compose_config} up --pull always -d app cache db sync; echo 3 > /proc/sys/vm/drop_caches - docker compose -f docker-compose.yml -f Resources/compose/docker-compose-prod-graphql.yml up -d app make docker-migrate make docker-build-db - docker compose stop app - sync; echo 3 > /proc/sys/vm/drop_caches - docker compose exec -T web sh -c 'rm -rf /tmp/cache/*' - docker compose start graphql-engine + docker compose ${gql_compose_config} stop app cache + docker compose ${gql_compose_config} up --pull always -d graphql-engine graphiql sleep 120 make hasura-apply + docker compose ${gql_compose_config} up --pull always -d web + docker compose exec -T web sh -c 'rm -rf /tmp/cache/*' + sync; echo 3 > /proc/sys/vm/drop_caches diff --git a/README.md b/README.md index d9cc331e..670c06ce 100755 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ Run `make help` to see all tasks. ## Docker and Compose   [![docker hub](https://img.shields.io/docker/v/pokeapi/pokeapi?label=tag&sort=semver)](https://hub.docker.com/r/pokeapi/pokeapi) -There is also a multi-container setup, managed by [Docker Compose](https://docs.docker.com/compose/). This setup allows you to deploy a production-like environment, with separate containers for each service, and is recommended if you need to simply spin up PokéAPI. +There is also a multi-container setup, managed by [Docker Compose V2](https://docs.docker.com/compose/). This setup allows you to deploy a production-like environment, with separate containers for each service, and is recommended if you need to simply spin up PokéAPI. Start everything by @@ -83,9 +83,9 @@ make docker-setup If you don't have `make` on your machine you can use the following commands ```sh -docker-compose up -d -docker-compose exec -T app python manage.py migrate --settings=config.docker-compose -docker-compose exec -T app sh -c 'echo "from data.v2.build import build_all; build_all()" | python manage.py shell --settings=config.docker-compose' +docker compose up -d +docker compose exec -T app python manage.py migrate --settings=config.docker-compose +docker compose exec -T app sh -c 'echo "from data.v2.build import build_all; build_all()" | python manage.py shell --settings=config.docker-compose' ``` Browse [localhost/api/v2/](http://localhost/api/v2/) or [localhost/api/v2/pokemon/bulbasaur/](http://localhost/api/v2/pokemon/bulbasaur/) on port `80`. @@ -105,7 +105,7 @@ make docker-migrate ## GraphQL   -When you start PokéAPI with the above docker-compose setup, an [Hasura Engine](https://github.com/hasura/graphql-engine) server is started as well. It's possible to track all the PokeAPI tables and foreign keys by simply +When you start PokéAPI with the above Docker Compose setup, an [Hasura Engine](https://github.com/hasura/graphql-engine) server is started as well. It's possible to track all the PokeAPI tables and foreign keys by simply ```sh # hasura cli needs to be installed and available in your $PATH: https://hasura.io/docs/latest/graphql/core/hasura-cli/install-hasura-cli.html @@ -153,23 +153,24 @@ This k8s setup creates all k8s resources inside the _Namespace_ `pokeapi`, run ` | Python 2/3 | [PokeAPI/pokepy](https://github.com/PokeAPI/pokepy) | _Auto caching_ | | Python 3 | [PokeAPI/pokebase](https://github.com/PokeAPI/pokebase) | _Auto caching_, _Image caching_ | -| Wrapper | Repository | Features | -| --- | --- | --- | -| PHP | [lmerotta/phpokeapi](https://github.com/lmerotta/phpokeapi) | _Auto caching, lazy loading_ | -| Ruby | [rdavid1099/poke-api-v2](https://github.com/rdavid1099/poke-api-v2) | | -| .Net Standard | [mtrdp642/PokeApiNet](https://github.com/mtrdp642/PokeApiNet) | _Auto caching_ | -| Go | [mtslzr/pokeapi-go](https://github.com/mtslzr/pokeapi-go) | _Auto caching_ | -| Dart | [prathanbomb/pokedart](https://github.com/prathanbomb/pokedart) | | -| Rust | [lunik1/pokerust](https://gitlab.com/lunik1/pokerust) | _Auto caching_ | -| Spring Boot | [dlfigueira/spring-pokeapi](https://github.com/dlfigueira/spring-pokeapi) | _Auto caching_ | -| Swift | [kinkofer/PokemonAPI](https://github.com/kinkofer/PokemonAPI) | | -| Typescript server-side/client-side | [Gabb-c/Pokenode-ts](https://github.com/Gabb-c/pokenode-ts) | _Auto caching_ | -| Python | [beastmatser/aiopokeapi](https://github.com/beastmatser/aiopokeapi) | _Auto caching, asynchronous_ -| Scala | [juliano/pokeapi-scala](https://github.com/juliano/pokeapi-scala) | _Auto caching_ | +|Wrapper|Repository|Features| +|---|---|---| +|.Net Standard |[mtrdp642/PokeApiNet](https://github.com/mtrdp642/PokeApiNet)|Auto caching | +|Dart|[prathanbomb/pokedart](https://github.com/prathanbomb/pokedart)| | +|Go|[mtslzr/pokeapi-go](https://github.com/mtslzr/pokeapi-go)|Auto caching | +|PHP |[lmerotta/phpokeapi](https://github.com/lmerotta/phpokeapi)|Auto caching, lazy loading | +|PowerShell|[Celerium/PokeAPI-PowerShellWrapper](https://github.com/Celerium/PokeAPI-PowerShellWrapper)| | +|Python|[beastmatser/aiopokeapi](https://github.com/beastmatser/aiopokeapi)|Auto caching, asynchronous | +|Ruby|[rdavid1099/poke-api-v2](https://github.com/rdavid1099/poke-api-v2)| | +|Rust|[lunik1/pokerust](https://gitlab.com/lunik1/pokerust)|Auto caching | +|Scala |[juliano/pokeapi-scala](https://github.com/juliano/pokeapi-scala)|Auto caching | +|Spring Boot |[dlfigueira/spring-pokeapi](https://github.com/dlfigueira/spring-pokeapi)|Auto caching | +|Swift |[kinkofer/PokemonAPI](https://github.com/kinkofer/PokemonAPI)| | +|Typescript server-side/client-side|[Gabb-c/Pokenode-ts](https://github.com/Gabb-c/pokenode-ts)|Auto caching | ## Donations -Help to keep PokéAPI running! If you're using PokéAPI as a teaching resource or for a project, consider sending us a $10 donation to help keep the service up. We get 330 million requests a month! +Help to keep PokéAPI running! If you're using PokéAPI as a teaching resource or for a project, consider sending us a donation to help keep the service up. We get 1+ billion requests a month! Thank you to all our backers! [Become a backer](https://opencollective.com/pokeapi#backer) diff --git a/Resources/compose/docker-compose-prod-graphql.yml b/Resources/compose/docker-compose-prod-graphql.yml index a4670a12..d149ecbf 100644 --- a/Resources/compose/docker-compose-prod-graphql.yml +++ b/Resources/compose/docker-compose-prod-graphql.yml @@ -1,5 +1,8 @@ version: '2.4' services: + cache: + restart: "no" + db: environment: POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" @@ -13,6 +16,8 @@ services: web: volumes: - graphiql:/public-console:ro + logging: + driver: gcplogs graphql-engine: cpus: 0.7 diff --git a/Resources/docker/app/Dockerfile b/Resources/docker/app/Dockerfile index c2d72940..a8d2ac4d 100644 --- a/Resources/docker/app/Dockerfile +++ b/Resources/docker/app/Dockerfile @@ -7,9 +7,9 @@ RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ -RUN \ - apk add --no-cache postgresql-libs libstdc++ && \ - apk add --no-cache --virtual .build-deps gcc g++ musl-dev postgresql-dev && \ +RUN apk add --no-cache postgresql-libs libstdc++ +RUN apk add --no-cache --virtual .build-deps gcc g++ musl-dev \ + postgresql-dev rust cargo && \ python3 -m pip install -r requirements.txt --no-cache-dir && \ apk --purge del .build-deps ADD . /code/ diff --git a/Resources/docker/app/README.md b/Resources/docker/app/README.md index 8e2b8779..48c5d548 100644 --- a/Resources/docker/app/README.md +++ b/Resources/docker/app/README.md @@ -35,7 +35,7 @@ The container connects to a Redis cache via the environment variable `REDIS_CONN ### Run the container -The container exposes port `80`. It needs a PostgreSQL and a Redis instance to connect to. Refer to the section [How to use this image](./how-to-use-this-image) for mapping the environment variables. +The container exposes port `80`. It needs a PostgreSQL and a Redis instance to connect to. Refer to the section [How to use this image](#how-to-use-this-image) for mapping the environment variables. It's recommended to use the provided [docker-compose.yml](https://github.com/PokeAPI/pokeapi/blob/master/docker-compose.yml) to start a container from this image. diff --git a/Resources/nginx/nginx.conf b/Resources/nginx/nginx.conf index 19797b04..0ce02689 100644 --- a/Resources/nginx/nginx.conf +++ b/Resources/nginx/nginx.conf @@ -2,26 +2,32 @@ worker_processes 1; events { worker_connections 1024; - multi_accept on; # accept each connection as soon as you can + multi_accept on; accept_mutex off; use epoll; } http { - include mime.types; - default_type application/octet-stream; + access_log off; + log_format pokeapilogformat + '$remote_addr ' + '"$request" $status cs:$upstream_cache_status s:$bytes_sent ' + 'r:"$http_referer"'; + error_log /dev/stdout warn; + include mime.types; + default_type application/octet-stream; - server_tokens off; # dont send unnecessary server info (like version) + server_tokens off; - add_header X-XSS-Protection "1; mode=block"; # prevent XSS + add_header X-XSS-Protection "1; mode=block"; - client_body_buffer_size 10K; # raise the threshold by which requests are written to HDD instead of RAM - client_header_buffer_size 2k; - client_max_body_size 8m; # we dont accept requests larger that 8mb + client_body_buffer_size 10K; + client_header_buffer_size 1k; + client_max_body_size 8m; - sendfile on; - tcp_nopush on; - tcp_nodelay on; + sendfile on; + tcp_nopush on; + tcp_nodelay on; keepalive_timeout 5; @@ -47,6 +53,16 @@ http { 192.168.0.0/24 0; } + map $http_user_agent $exclude_ua { + "~*monitoring*" 0; + default 1; + } + + map $request_method $only_post { + default 0; + POST $exclude_ua; + } + map $limit $limit_key { 0 ""; 1 $binary_remote_addr; @@ -69,7 +85,7 @@ http { # Admin console location /graphql/admin/ { - expires 1m; # client-side caching, one minute for each API resource + expires 1m; add_header Cache-Control "public"; add_header Pragma public; proxy_http_version 1.1; @@ -89,21 +105,15 @@ http { } location /graphql/v1beta { + access_log /dev/stdout pokeapilogformat if=$only_post; include /ssl/cache.conf*; - # proxy_cache small; - # proxy_cache_valid 200 10d; - # proxy_cache_valid any 0; - # proxy_cache_methods POST; - # proxy_cache_key "$request_method$request_uri$request_body"; limit_req zone=graphqlDefaultLimit burst=100 nodelay; limit_req_status 429; - expires 30m; # client-side caching, one minute for each API resource + expires 30m; add_header Cache-Control "public"; add_header Pragma public; - # add_header X-Proxy-Cache $upstream_cache_status; proxy_hide_header Access-Control-Allow-Origin; add_header Access-Control-Allow-Origin *; - # add_header X-Cache-Date $upstream_http_date; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; @@ -115,7 +125,7 @@ http { } location /api/ { - expires 1m; # client-side caching, one minute for each API resource + expires 1m; add_header Cache-Control "public"; add_header Pragma public; proxy_set_header X-Real-IP $remote_addr; diff --git a/config/settings.py b/config/settings.py index 8213dd2e..5459cc7d 100755 --- a/config/settings.py +++ b/config/settings.py @@ -99,6 +99,7 @@ INSTALLED_APPS = ( "corsheaders", "rest_framework", "cachalot", + "drf_spectacular", ) + CUSTOM_APPS @@ -116,6 +117,7 @@ REST_FRAMEWORK = { "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.LimitOffsetPagination", "PAGE_SIZE": 20, "PAGINATE_BY": 20, + "DEFAULT_SCHEMA_CLASS": "drf_spectacular.openapi.AutoSchema", } @@ -136,3 +138,42 @@ TEMPLATES = [ ] DEFAULT_AUTO_FIELD = "django.db.models.AutoField" + +SPECTACULAR_SETTINGS = { + "TITLE": "PokéAPI", + "DESCRIPTION": """All the Pokémon data you'll ever need in one place, easily accessible through a modern free open-source RESTful API. + +## What is this? + +This is a full RESTful API linked to an extensive database detailing everything about the Pokémon main game series. + +We've covered everything from Pokémon to Berry Flavors. + +## Where do I start? + +We have awesome [documentation](https://pokeapi.co/docs/v2) on how to use this API. It takes minutes to get started. + +This API will always be publicly available and will never require any extensive setup process to consume. + +Created by [**Paul Hallett**(]https://github.com/phalt) and other [**PokéAPI contributors***](https://github.com/PokeAPI/pokeapi#contributing) around the world. Pokémon and Pokémon character names are trademarks of Nintendo. + """, + "SERVERS": [{"url": "https://pokeapi.co"}], + "EXTERNAL_DOCS": {"url": "https://pokeapi.co/docs/v2"}, + "VERSION": "2.7.0", + "SERVE_INCLUDE_SCHEMA": False, + "OAS_VERSION": "3.1.0", + "COMPONENT_SPLIT_REQUEST": True, + "TAGS": [ + "pokemon", + "evolution", + "berries", + "items", + "machines", + "location", + "contest", + "moves", + "encounters", + "games", + "utility", + ], +} diff --git a/config/wsgi.py b/config/wsgi.py index 9642109b..d246049d 100755 --- a/config/wsgi.py +++ b/config/wsgi.py @@ -13,6 +13,7 @@ middleware here, or combine a Django application with an application of another framework. """ + import os from django.core.wsgi import get_wsgi_application diff --git a/data/v2/build.py b/data/v2/build.py index 76561b22..9e6459eb 100644 --- a/data/v2/build.py +++ b/data/v2/build.py @@ -36,8 +36,16 @@ MEDIA_DIR = "{prefix}{{file_name}}".format( "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/", ) ) +SOUND_DIR = "{prefix}{{file_name}}".format( + prefix=os.environ.get( + "POKEAPI_CRIES_PREFIX", + "https://raw.githubusercontent.com/PokeAPI/cries/main/cries/", + ) +) IMAGE_DIR = os.getcwd() + "/data/v2/sprites/sprites/" +CRIES_DIR = os.getcwd() + "/data/v2/cries/cries/" RESOURCE_IMAGES = [] +RESOURCE_CRIES = [] for root, dirs, files in os.walk(IMAGE_DIR): for file in files: @@ -45,8 +53,20 @@ for root, dirs, files in os.walk(IMAGE_DIR): image_path = image_path.replace("\\", "/") # convert Windows-style path to Unix RESOURCE_IMAGES.append(image_path) +for root, dirs, files in os.walk(CRIES_DIR): + for file in files: + cry_path = os.path.join(root.replace(CRIES_DIR, ""), file) + cry_path = cry_path.replace("\\", "/") # convert Windows-style path to Unix + RESOURCE_CRIES.append(cry_path) -def file_path_or_none(file_name): + +def file_path_or_none(file_name, image_file=True): + if not image_file: + return ( + SOUND_DIR.format(file_name=file_name) + if file_name in RESOURCE_CRIES + else None + ) return ( MEDIA_DIR.format(file_name=file_name) if file_name in RESOURCE_IMAGES else None ) @@ -1222,9 +1242,11 @@ def _build_locations(): id=int(info[0]), location_id=int(info[1]), game_index=int(info[2]), - name="{}-{}".format(location.name, info[3]) - if info[3] - else "{}-{}".format(location.name, "area"), + name=( + "{}-{}".format(location.name, info[3]) + if info[3] + else "{}-{}".format(location.name, "area") + ), ) build_generic((LocationArea,), "location_areas.csv", csv_record_to_objects) @@ -1931,6 +1953,26 @@ def _build_pokemons(): build_generic((PokemonSprites,), "pokemon.csv", csv_record_to_objects) + def try_cry_names(path, info, extension): + file_name = "%s.%s" % (info[0], extension) + return file_path_or_none(path + file_name, image_file=False) + + def csv_record_to_objects(info): + poke_cries = "pokemon" + latest = f"{poke_cries}/latest/" + legacy = f"{poke_cries}/legacy/" + cries = { + "latest": try_cry_names(latest, info, "ogg"), + "legacy": try_cry_names(legacy, info, "ogg"), + } + yield PokemonCries( + id=int(info[0]), + pokemon=Pokemon.objects.get(pk=int(info[0])), + cries=cries, + ) + + build_generic((PokemonCries,), "pokemon.csv", csv_record_to_objects) + def csv_record_to_objects(info): yield PokemonAbility( pokemon_id=int(info[0]), diff --git a/data/v2/csv/encounter_condition_value_prose.csv b/data/v2/csv/encounter_condition_value_prose.csv index e861e414..39f9ad0d 100644 --- a/data/v2/csv/encounter_condition_value_prose.csv +++ b/data/v2/csv/encounter_condition_value_prose.csv @@ -159,5 +159,5 @@ encounter_condition_value_id,local_language_id,name 69,5,Après avoir parlé à 32 personnes dans les souterrains 70,9,Returned Machine Part to Power Plant 70,5,Après avoir rapporté la pièce de machine à la centrale -10,9,Have an Event Arceus in the party -10,5,En ayant un Arceus événementiel dans l’équipe +71,9,Have an Event Arceus in the party +71,5,En ayant un Arceus événementiel dans l’équipe diff --git a/data/v2/csv/encounter_method_prose.csv b/data/v2/csv/encounter_method_prose.csv index 0db8c54f..2dd0f0f0 100644 --- a/data/v2/csv/encounter_method_prose.csv +++ b/data/v2/csv/encounter_method_prose.csv @@ -61,9 +61,9 @@ encounter_method_id,local_language_id,name 22,9,Headbutting a low encounter rate tree 22,5,En utilisant Coup d’Boule sur un arbre à taux bas 23,9,Headbutting a normal encounter rate tree -22,5,En utilisant Coup d’Boule sur un arbre à taux normal +23,5,En utilisant Coup d’Boule sur un arbre à taux normal 24,9,Headbutting a high encounter rate tree -22,5,En utilisant Coup d’Boule sur un arbre à taux élevé +24,5,En utilisant Coup d’Boule sur un arbre à taux élevé 25,9,Using the Squirt Bottle on a Sudowoodo 25,5,En utilisant la Carapuce à O sur Simularbre 26,9,Using the Wailmer Pail on a Sudowoodo diff --git a/data/v2/csv/evolution_trigger_prose.csv b/data/v2/csv/evolution_trigger_prose.csv index 85c0123c..adf56fad 100644 --- a/data/v2/csv/evolution_trigger_prose.csv +++ b/data/v2/csv/evolution_trigger_prose.csv @@ -3,8 +3,8 @@ evolution_trigger_id,local_language_id,name 1,6,Levelaufstieg 1,9,Level up 2,5,Échange -2,6,Tausch -2,9,Trade +2,6,Tausch oder Verbindungsschnur +2,9,Trade or Linking Cord 3,5,Utilisation d'un objet 3,6,Gegenstand nutzen 3,9,Use item diff --git a/data/v2/csv/item_flag_map.csv b/data/v2/csv/item_flag_map.csv index 842ccfcb..b7a11b45 100644 --- a/data/v2/csv/item_flag_map.csv +++ b/data/v2/csv/item_flag_map.csv @@ -610,3 +610,7 @@ item_id,item_flag_id 303,7 304,5 304,7 +2160,1 +2160,2 +2160,3 +2160,5 \ No newline at end of file diff --git a/data/v2/csv/item_names.csv b/data/v2/csv/item_names.csv index b9327daf..a9c08f82 100644 --- a/data/v2/csv/item_names.csv +++ b/data/v2/csv/item_names.csv @@ -17822,3 +17822,121 @@ item_id,local_language_id,name 2159,1,チャデスのこな 2159,9,Poltchageist Powder 2159,11,チャデスのこな +2160,9,Linking Cord +2160,11, つながりのヒモ +2161,9,TM172 +2161,11,わざマシン172 +2162,9,TM173 +2162,11,わざマシン173 +2163,9,TM174 +2163,11,わざマシン174 +2164,9,TM175 +2164,11,わざマシン175 +2165,9,TM176 +2165,11,わざマシン176 +2166,9,TM177 +2166,11,わざマシン177 +2167,9,TM178 +2167,11,わざマシン178 +2168,9,TM179 +2168,11,わざマシン179 +2169,9,TM180 +2169,11,わざマシン180 +2170,9,TM181 +2170,11,わざマシン181 +2171,9,TM182 +2171,11,わざマシン182 +2172,9,TM183 +2172,11,わざマシン183 +2173,9,TM184 +2173,11,わざマシン184 +2174,9,TM185 +2174,11,わざマシン185 +2175,9,TM186 +2175,11,わざマシン186 +2176,9,TM187 +2176,11,わざマシン187 +2177,9,TM188 +2177,11,わざマシン188 +2178,9,TM189 +2178,11,わざマシン189 +2179,9,TM190 +2179,11,わざマシン190 +2180,9,TM191 +2180,11,わざマシン191 +2181,9,TM192 +2181,11,わざマシン192 +2182,9,TM193 +2182,11,わざマシン193 +2183,9,TM194 +2183,11,わざマシン194 +2184,9,TM195 +2184,11,わざマシン195 +2185,9,TM196 +2185,11,わざマシン196 +2186,9,TM197 +2186,11,わざマシン197 +2187,9,TM198 +2187,11,わざマシン198 +2188,9,TM199 +2188,11,わざマシン199 +2189,9,TM200 +2189,11,わざマシン200 +2190,9,TM201 +2190,11,わざマシン201 +2191,9,TM202 +2191,11,わざマシン202 +2192,9,TM203 +2192,11,わざマシン203 +2193,9,TM204 +2193,11,わざマシン204 +2194,9,TM205 +2194,11,わざマシン205 +2195,9,TM206 +2195,11,わざマシン206 +2196,9,TM207 +2196,11,わざマシン207 +2197,9,TM208 +2197,11,わざマシン208 +2198,9,TM209 +2198,11,わざマシン209 +2199,9,TM210 +2199,11,わざマシン210 +2200,9,TM211 +2200,11,わざマシン211 +2201,9,TM212 +2201,11,わざマシン212 +2202,9,TM213 +2202,11,わざマシン213 +2203,9,TM214 +2203,11,わざマシン214 +2204,9,TM215 +2204,11,わざマシン215 +2205,9,TM216 +2205,11,わざマシン216 +2206,9,TM217 +2206,11,わざマシン217 +2207,9,TM218 +2207,11,わざマシン218 +2208,9,TM219 +2208,11,わざマシン219 +2209,9,TM220 +2209,11,わざマシン220 +2210,9,TM221 +2210,11,わざマシン221 +2211,9,TM222 +2211,11,わざマシン222 +2212,9,TM223 +2212,11,わざマシン223 +2213,9,TM224 +2213,11,わざマシン224 +2214,9,TM225 +2214,11,わざマシン225 +2215,9,TM226 +2215,11,わざマシン226 +2216,9,TM227 +2216,11,わざマシン227 +2217,9,TM228 +2217,11,わざマシン228 +2218,9,TM229 +2218,11,わざマシン229 diff --git a/data/v2/csv/item_prose.csv b/data/v2/csv/item_prose.csv index f636302a..6dfe32c6 100644 --- a/data/v2/csv/item_prose.csv +++ b/data/v2/csv/item_prose.csv @@ -1519,3 +1519,4 @@ This item can only be obtained or used via the Wonder Launcher." 1003,9,XXX new effect for roto-pp-restore,XXX new effect for roto-pp-restore 1004,9,XXX new effect for roto-boost,XXX new effect for roto-boost 1005,9,XXX new effect for roto-catch,XXX new effect for roto-catch +2160,9,Allows a Pokemon whose evolution is usually triggered by trading to evolve, The Linking Cord triggers the evolution of certain Pokémon (all of which can alternatively evolve when traded) upon use. This consumes the Linking Cord. diff --git a/data/v2/csv/items.csv b/data/v2/csv/items.csv index f90a3799..1978b2df 100644 --- a/data/v2/csv/items.csv +++ b/data/v2/csv/items.csv @@ -2049,7 +2049,7 @@ id,identifier,category_id,cost,fling_power,fling_effect_id 2099,yellow-dish,55,0,, 2100,roto-stick,21,0,, 2101,teal-style-card,21,0,, -2102,teak-mask,20,0,, +2102,teal-mask,20,0,, 2103,glimmering-charm,21,0,, 2104,cyrstal-cluster,20,0,, 2105,fairy-feather,12,750,, @@ -2107,5 +2107,64 @@ id,identifier,category_id,cost,fling_power,fling_effect_id 2157,cramorant-down,54,30,, 2158,morpeko-snack,54,15,, 2159,poltchageist-powder,54,30,, +2160,linking-cord,10,8000,, +2161,tm172,37,0,, +2162,tm173,37,0,, +2163,tm174,37,0,, +2164,tm175,37,0,, +2165,tm176,37,0,, +2166,tm177,37,0,, +2167,tm178,37,0,, +2168,tm179,37,0,, +2169,tm180,37,0,, +2170,tm181,37,0,, +2171,tm182,37,0,, +2172,tm183,37,0,, +2173,tm184,37,0,, +2174,tm185,37,0,, +2175,tm186,37,0,, +2176,tm187,37,0,, +2177,tm188,37,0,, +2178,tm189,37,0,, +2179,tm190,37,0,, +2180,tm191,37,0,, +2181,tm192,37,0,, +2182,tm193,37,0,, +2183,tm194,37,0,, +2184,tm195,37,0,, +2185,tm196,37,0,, +2186,tm197,37,0,, +2187,tm198,37,0,, +2188,tm199,37,0,, +2189,tm200,37,0,, +2190,tm201,37,0,, +2191,tm202,37,0,, +2192,tm203,37,0,, +2193,tm204,37,0,, +2194,tm205,37,0,, +2195,tm206,37,0,, +2196,tm207,37,0,, +2197,tm208,37,0,, +2198,tm209,37,0,, +2199,tm210,37,0,, +2200,tm211,37,0,, +2201,tm212,37,0,, +2202,tm213,37,0,, +2203,tm214,37,0,, +2204,tm215,37,0,, +2205,tm216,37,0,, +2206,tm217,37,0,, +2207,tm218,37,0,, +2208,tm219,37,0,, +2209,tm220,37,0,, +2210,tm221,37,0,, +2211,tm222,37,0,, +2212,tm223,37,0,, +2213,tm224,37,0,, +2214,tm225,37,0,, +2215,tm226,37,0,, +2216,tm227,37,0,, +2217,tm228,37,0,, +2218,tm229,37,0,, 10001,black-augurite,10,0,, 10002,peat-block,10,0,, diff --git a/data/v2/csv/machines.csv b/data/v2/csv/machines.csv index 288089de..59022bb7 100644 --- a/data/v2/csv/machines.csv +++ b/data/v2/csv/machines.csv @@ -1687,3 +1687,417 @@ machine_number,version_group_id,item_id,move_id 197,20,1285,706 198,20,1286,710 199,20,1287,776 +10,23,314,526 +21,23,325,605 +27,23,331,490 +43,23,347,521 +49,23,353,503 +62,23,366,405 +63,23,367,417 +78,23,382,555 +83,23,387,523 +93,23,397,15 +94,23,398,19 +95,23,399,57 +96,23,400,70 +97,23,401,432 +98,23,402,249 +99,23,403,127 +100,23,404,431 +1,25,305,36 +2,25,306,204 +3,25,307,313 +4,25,308,97 +5,25,309,189 +6,25,310,184 +7,25,311,182 +8,25,312,424 +9,25,313,422 +10,25,314,423 +11,25,315,352 +12,25,316,67 +13,25,317,491 +14,25,318,512 +15,25,319,522 +16,25,320,60 +17,25,321,109 +18,25,322,168 +19,25,323,574 +20,25,324,885 +21,25,325,884 +22,25,326,886 +23,25,327,451 +24,25,328,83 +25,25,329,263 +26,25,330,342 +27,25,331,332 +28,25,332,523 +29,25,333,506 +30,25,334,555 +31,25,335,232 +32,25,336,129 +33,25,337,345 +34,25,338,196 +35,25,339,341 +36,25,340,317 +37,25,341,577 +38,25,342,488 +39,25,343,490 +40,25,344,314 +41,25,345,500 +42,25,346,101 +43,25,347,374 +44,25,348,525 +45,25,349,474 +46,25,350,419 +47,25,351,203 +48,25,352,521 +49,25,353,241 +50,25,354,240 +51,25,355,201 +52,25,356,883 +53,25,357,684 +54,25,358,473 +55,25,359,91 +56,25,360,331 +57,25,361,206 +58,25,362,280 +59,25,363,428 +60,25,364,369 +61,25,365,421 +62,25,366,492 +63,25,367,706 +64,25,368,339 +65,25,369,403 +66,25,370,34 +67,25,371,7 +68,25,372,9 +69,25,373,8 +70,25,374,214 +71,25,375,402 +72,25,376,486 +73,25,377,409 +74,25,378,115 +75,25,379,113 +76,25,380,350 +77,25,381,127 +78,25,382,337 +79,25,383,605 +80,25,384,118 +81,25,385,447 +82,25,386,86 +83,25,387,398 +84,25,388,707 +85,25,389,156 +86,25,390,157 +87,25,391,269 +88,25,392,14 +89,25,393,776 +90,25,394,191 +91,25,395,390 +92,25,396,286 +93,25,659,430 +94,25,660,399 +95,25,661,141 +96,25,745,598 +97,25,746,19 +98,25,747,285 +99,25,748,442 +100,25,1943,349 +101,25,1944,408 +102,25,1945,441 +103,25,1946,164 +104,25,1947,334 +105,25,1948,404 +106,25,1949,529 +107,25,1950,261 +108,25,1951,242 +109,25,1952,271 +110,25,1953,710 +111,25,1954,202 +112,25,1955,396 +113,25,1956,366 +114,25,1957,247 +115,25,1958,406 +116,25,1959,446 +117,25,1960,304 +118,25,1961,257 +119,25,1962,412 +120,25,1963,94 +121,25,1964,484 +122,25,1965,227 +123,25,1966,57 +124,25,1967,861 +125,25,1968,53 +126,25,1969,85 +127,25,1970,583 +128,25,1971,133 +129,25,1972,347 +130,25,1973,270 +131,25,1974,676 +132,25,1975,226 +133,25,1976,414 +134,25,1977,179 +135,25,1978,58 +136,25,1979,604 +137,25,1980,580 +138,25,1981,678 +139,25,1982,581 +140,25,1983,417 +141,25,1984,126 +142,25,1985,56 +143,25,1986,59 +144,25,1987,519 +145,25,1988,518 +146,25,1989,520 +147,25,1990,528 +148,25,1991,188 +149,25,1992,89 +150,25,1993,444 +151,25,1994,566 +152,25,1995,416 +153,25,1996,307 +154,25,1997,308 +155,25,1998,338 +156,25,1999,200 +157,25,2000,315 +158,25,2001,411 +159,25,2002,437 +160,25,2003,542 +161,25,2004,433 +162,25,2005,405 +163,25,2006,63 +164,25,2007,413 +165,25,2008,394 +166,25,2009,87 +167,25,2010,370 +168,25,2011,76 +169,25,2012,434 +170,25,2013,796 +171,25,2014,851 +172,25,2161,46 +173,25,2162,268 +174,25,2163,114 +175,25,2164,92 +176,25,2165,328 +177,25,2166,180 +178,25,2167,356 +179,25,2168,479 +180,25,2169,360 +181,25,2170,282 +182,25,2171,450 +183,25,2172,162 +184,25,2173,410 +185,25,2174,679 +186,25,2175,667 +187,25,2176,333 +188,25,2177,503 +189,25,2178,535 +190,25,2179,669 +191,25,2180,253 +192,25,2181,264 +193,25,2182,311 +194,25,2183,803 +195,25,2184,807 +196,25,2185,812 +197,25,2186,814 +198,25,2187,809 +199,25,2188,808 +200,25,2189,799 +201,25,2190,802 +202,25,2191,220 +203,25,2192,244 +204,25,2193,38 +205,25,2194,283 +206,25,2195,572 +207,25,2196,915 +208,25,2197,250 +209,25,2198,330 +210,25,2199,916 +211,25,2200,527 +212,25,2201,813 +213,25,2202,811 +214,25,2203,482 +215,25,2204,815 +216,25,2205,297 +217,25,2206,248 +218,25,2207,797 +219,25,2208,806 +220,25,2209,800 +221,25,2210,675 +222,25,2211,784 +223,25,2212,319 +224,25,2213,174 +225,25,2214,912 +226,25,2215,913 +227,25,2216,914 +228,25,2217,917 +229,25,2218,918 +67,26,371,7 +68,26,372,9 +69,26,373,8 +132,26,1975,226 +170,26,2013,796 +172,26,2161,46 +173,26,2162,268 +174,26,2163,114 +175,26,2164,92 +176,26,2165,328 +177,26,2166,180 +178,26,2167,356 +179,26,2168,479 +180,26,2169,360 +181,26,2170,282 +182,26,2171,450 +183,26,2172,162 +184,26,2173,410 +185,26,2174,679 +186,26,2175,667 +187,26,2176,333 +188,26,2177,503 +189,26,2178,535 +190,26,2179,669 +191,26,2180,253 +192,26,2181,264 +193,26,2182,311 +194,26,2183,803 +195,26,2184,807 +196,26,2185,812 +197,26,2186,814 +198,26,2187,809 +199,26,2188,808 +200,26,2189,799 +201,26,2190,802 +2,27,306,204 +7,27,311,182 +13,27,317,491 +29,27,333,506 +30,27,334,555 +34,27,338,196 +39,27,343,490 +41,27,345,500 +44,27,348,525 +49,27,353,241 +50,27,354,240 +51,27,355,201 +52,27,356,883 +53,27,357,684 +59,27,363,428 +60,27,364,369 +63,27,367,706 +64,27,368,339 +67,27,371,7 +68,27,372,9 +69,27,373,8 +74,27,378,115 +75,27,379,113 +76,27,380,350 +77,27,381,127 +78,27,382,337 +81,27,385,447 +82,27,386,86 +83,27,387,398 +86,27,390,157 +87,27,391,269 +88,27,392,14 +89,27,393,776 +93,27,659,430 +94,27,660,399 +99,27,748,442 +100,27,1943,349 +103,27,1946,164 +104,27,1947,334 +106,27,1949,529 +107,27,1950,261 +108,27,1951,242 +109,27,1952,271 +110,27,1953,710 +111,27,1954,202 +112,27,1955,396 +113,27,1956,366 +115,27,1958,406 +117,27,1960,304 +118,27,1961,257 +119,27,1962,412 +121,27,1964,484 +124,27,1967,861 +125,27,1968,53 +126,27,1969,85 +127,27,1970,583 +128,27,1971,133 +129,27,1972,347 +130,27,1973,270 +131,27,1974,676 +133,27,1976,414 +135,27,1978,58 +136,27,1979,604 +137,27,1980,580 +138,27,1981,678 +139,27,1982,581 +140,27,1983,417 +141,27,1984,126 +142,27,1985,56 +143,27,1986,59 +144,27,1987,519 +145,27,1988,518 +146,27,1989,520 +148,27,1991,188 +149,27,1992,89 +150,27,1993,444 +153,27,1996,307 +154,27,1997,308 +155,27,1998,338 +156,27,1999,200 +157,27,2000,315 +158,27,2001,411 +159,27,2002,437 +160,27,2003,542 +161,27,2004,433 +162,27,2005,405 +163,27,2006,63 +164,27,2007,413 +165,27,2008,394 +166,27,2009,87 +168,27,2011,76 +171,27,2014,851 +174,27,2163,114 +181,27,2170,282 +185,27,2174,679 +186,27,2175,667 +187,27,2176,333 +188,27,2177,503 +190,27,2179,669 +193,27,2182,311 +194,27,2183,803 +196,27,2185,812 +197,27,2186,814 +200,27,2189,799 +201,27,2190,802 +202,27,2191,220 +203,27,2192,244 +204,27,2193,38 +205,27,2194,283 +206,27,2195,572 +207,27,2196,915 +208,27,2197,250 +209,27,2198,330 +210,27,2199,916 +211,27,2200,527 +212,27,2201,813 +213,27,2202,811 +214,27,2203,482 +215,27,2204,815 +216,27,2205,297 +217,27,2206,248 +218,27,2207,797 +219,27,2208,806 +220,27,2209,800 +221,27,2210,675 +222,27,2211,784 +223,27,2212,319 +224,27,2213,174 +225,27,2214,912 +226,27,2215,913 +227,27,2216,914 +228,27,2217,917 +229,27,2218,918 diff --git a/data/v2/csv/move_meta.csv b/data/v2/csv/move_meta.csv index bb4e78fa..0e2d6122 100644 --- a/data/v2/csv/move_meta.csv +++ b/data/v2/csv/move_meta.csv @@ -303,7 +303,7 @@ move_id,meta_category_id,meta_ailment_id,min_hits,max_hits,min_turns,max_turns,d 302,0,0,,,,,0,0,0,0,30,0 303,3,0,,,,,0,50,0,0,0,0 304,0,0,,,,,0,0,0,0,0,0 -305,4,5,,,15,15,0,0,0,50,0,0 +305,4,5,,,,,0,0,0,50,0,0 306,6,0,,,,,0,0,0,0,0,50 307,0,0,,,,,0,0,0,0,0,0 308,0,0,,,,,0,0,0,0,0,0 diff --git a/data/v2/csv/moves.csv b/data/v2/csv/moves.csv index 3ac69894..fb2f0a96 100644 --- a/data/v2/csv/moves.csv +++ b/data/v2/csv/moves.csv @@ -719,12 +719,12 @@ id,identifier,generation_id,type_id,power,pp,accuracy,priority,target_id,damage_ 718,multi-attack,7,1,120,10,100,0,10,2,269,,,, 719,10-000-000-volt-thunderbolt,7,13,195,1,,0,10,3,1,,,, 720,mind-blown,7,10,150,5,100,0,9,3,420,,,, -721,plasma-fists,7,13,100,15,100,0,10,2,1,,,, +721,plasma-fists,7,13,100,15,100,0,10,2,417,,,, 722,photon-geyser,7,14,100,5,100,0,10,3,1,,,, 723,light-that-burns-the-sky,7,14,200,1,,0,10,3,416,,,, 724,searing-sunraze-smash,7,9,200,1,,0,10,2,411,,,, 725,menacing-moonraze-maelstrom,7,8,200,1,,0,10,3,411,,,, -726,lets-snuggle-forever,7,18,190,1,,0,10,2,417,,,, +726,lets-snuggle-forever,7,18,190,1,,0,10,2,1,,,, 727,splintered-stormshards,7,6,190,1,,0,10,2,418,,,, 728,clangorous-soulblaze,7,16,185,1,,0,11,3,419,100,,, 729,zippy-zap,7,13,80,10,100,2,10,2,1,100,,, diff --git a/data/v2/csv/pokemon.csv b/data/v2/csv/pokemon.csv index 46f3675b..2b40b300 100644 --- a/data/v2/csv/pokemon.csv +++ b/data/v2/csv/pokemon.csv @@ -897,133 +897,133 @@ id,identifier,species_id,height,weight,base_experience,order,is_default 896,glastrier,896,22,8000,290,1088,1 897,spectrier,897,20,445,290,1089,1 898,calyrex,898,11,77,250,1090,1 -899,wyrdeer,899,18,951,,,1 -900,kleavor,900,18,890,,,1 -901,ursaluna,901,24,2900,,,1 -902,basculegion-male,902,30,1100,,,1 -903,sneasler,903,13,430,,,1 -904,overqwil,904,25,605,,,1 -905,enamorus-incarnate,905,16,480,,,1 -906,sprigatito,906,4,41,,906,1 -907,floragato,907,9,122,,907,1 -908,meowscarada,908,15,312,,908,1 -909,fuecoco,909,4,98,,909,1 -910,crocalor,910,10,307,,910,1 -911,skeledirge,911,16,3265,,911,1 -912,quaxly,912,5,61,,912,1 -913,quaxwell,913,12,215,,913,1 -914,quaquaval,914,18,619,,914,1 -915,lechonk,915,5,102,,915,1 -916,oinkologne,916,10,1200,,916,1 -917,tarountula,917,3,40,,918,1 -918,spidops,918,10,165,,919,1 -919,nymble,919,2,10,,920,1 -920,lokix,920,10,175,,921,1 -921,pawmi,921,3,25,,954,1 -922,pawmo,922,4,65,,955,1 -923,pawmot,923,9,410,,956,1 -924,tandemaus,924,3,18,,945,1 -925,maushold,925,3,23,,946,1 -926,fidough,926,3,109,,970,1 -927,dachsbun,927,5,149,,971,1 -928,smoliv,928,3,65,,935,1 -929,dolliv,929,6,119,,936,1 -930,arboliva,930,14,482,,937,1 -931,squawkabilly,931,6,24,,960,1 -932,nacli,932,4,160,,963,1 -933,naclstack,933,6,1050,,964,1 -934,garganacl,934,23,2400,,965,1 -935,charcadet,935,6,105,,1003,1 -936,armarouge,936,15,850,,1004,1 -937,ceruledge,937,16,620,,1005,1 -938,tadbulb,938,3,4,,940,1 -939,bellibolt,939,12,1130,,941,1 -940,wattrel,940,4,36,,957,1 -941,kilowattrel,941,14,386,,958,1 -942,maschiff,942,5,160,,972,1 -943,mabosstiff,943,11,610,,973,1 -944,shroodle,944,2,7,,968,1 -945,grafaiai,945,7,272,,969,1 -946,bramblin,946,6,6,,974,1 -947,brambleghast,947,12,60,,975,1 -948,toedscool,948,9,330,,1006,1 -949,toedscruel,949,19,580,,1007,1 -950,klawf,950,13,790,,962,1 -951,capsakid,951,3,30,,938,1 -952,scovillain,952,9,150,,939,1 -953,rellor,953,2,10,,922,1 -954,rabsca,954,3,35,,923,1 -955,flittle,955,2,15,,926,1 -956,espathra,956,19,900,,927,1 -957,tinkatink,957,4,89,,1000,1 -958,tinkatuff,958,7,591,,1001,1 -959,tinkaton,959,7,1128,,1002,1 -960,wiglett,960,12,18,,929,1 -961,wugtrio,961,12,54,,930,1 -962,bombirdier,962,15,429,,959,1 -963,finizen,963,13,602,,933,1 -964,palafin,964,13,602,,934,1 -965,varoom,965,10,350,,942,1 -966,revavroom,966,18,1200,,943,1 -967,cyclizar,967,16,630,,953,1 -968,orthworm,968,25,3100,,944,1 -969,glimmet,969,7,80,,966,1 -970,glimmora,970,15,450,,967,1 -971,greavard,971,6,350,,924,1 -972,houndstone,972,20,150,,925,1 -973,flamigo,973,16,370,,961,1 -974,cetoddle,974,12,450,,947,1 -975,cetitan,975,45,7000,,948,1 -976,veluza,976,25,900,,932,1 -977,dondozo,977,120,2200,,931,1 -978,tatsugiri,978,3,80,,952,1 -979,annihilape,979,12,560,,1010,1 -980,clodsire,980,18,2230,,1009,1 -981,farigiraf,981,32,1600,,928,1 -982,dudunsparce,982,36,392,,917,1 -983,kingambit,983,20,1200,,1008,1 -984,great-tusk,984,22,3200,,978,1 -985,scream-tail,985,12,80,,982,1 -986,brute-bonnet,986,12,210,,979,1 -987,flutter-mane,987,14,40,,983,1 -988,slither-wing,988,32,920,,984,1 -989,sandy-shocks,989,23,600,,981,1 -990,iron-treads,990,9,2400,,986,1 -991,iron-bundle,991,6,110,,992,1 -992,iron-hands,992,18,3807,,989,1 -993,iron-jugulis,993,13,1110,,990,1 -994,iron-moth,994,12,360,,988,1 -995,iron-thorns,995,16,3030,,991,1 -996,frigibax,996,5,170,,949,1 -997,arctibax,997,8,300,,950,1 -998,baxcalibur,998,21,2100,,951,1 -999,gimmighoul,999,3,50,,976,1 -1000,gholdengo,1000,12,300,,977,1 -1001,wo-chien,1001,15,742,,996,1 -1002,chien-pao,1002,19,1522,,995,1 -1003,ting-lu,1003,27,6997,,994,1 -1004,chi-yu,1004,4,49,,997,1 -1005,roaring-moon,1005,20,3800,,985,1 -1006,iron-valiant,1006,14,350,,993,1 -1007,koraidon,1007,25,3030,,998,1 -1008,miraidon,1008,35,2400,,999,1 -1009,walking-wake,1009,35,2800,,1093,1 -1010,iron-leaves,1010,15,1250,,1094,1 -1011,dipplin,1011,4,97,,1095,1 -1012,poltchageist,1012,1,11,,1096,1 -1013,sinistcha,1013,2,22,,1097,1 -1014,okidogi,1014,18,922,,1098,1 -1015,munkidori,1015,10,122,,1099,1 -1016,fezandipiti,1016,14,301,,1100,1 -1017,ogerpon,1017,12,398,,1101,1 -1018,archaludon,1018,20,600,,1102,1 -1019,hydrapple,1019,18,930,,1103,1 -1020,gouging-fire,1020,35,5900,,1104,1 -1021,raging-bolt,1021,52,4800,,1105,1 -1022,iron-boulder,1022,15,1625,,1106,1 -1023,iron-crown,1023,16,1560,,1107,1 -1024,terapagos,1024,2,65,,1108,1 -1025,pecharunt,1025,3,3,,1109,1 +899,wyrdeer,899,18,951,263,,1 +900,kleavor,900,18,890,175,,1 +901,ursaluna,901,24,2900,275,,1 +902,basculegion-male,902,30,1100,265,,1 +903,sneasler,903,13,430,102,,1 +904,overqwil,904,25,605,179,,1 +905,enamorus-incarnate,905,16,480,116,,1 +906,sprigatito,906,4,41,62,906,1 +907,floragato,907,9,122,144,907,1 +908,meowscarada,908,15,312,265,908,1 +909,fuecoco,909,4,98,62,909,1 +910,crocalor,910,10,307,144,910,1 +911,skeledirge,911,16,3265,265,911,1 +912,quaxly,912,5,61,62,912,1 +913,quaxwell,913,12,215,144,913,1 +914,quaquaval,914,18,619,265,914,1 +915,lechonk,915,5,102,51,915,1 +916,oinkologne,916,10,1200,171,916,1 +917,tarountula,917,3,40,42,918,1 +918,spidops,918,10,165,141,919,1 +919,nymble,919,2,10,42,920,1 +920,lokix,920,10,175,158,921,1 +921,pawmi,921,3,25,48,954,1 +922,pawmo,922,4,65,123,955,1 +923,pawmot,923,9,410,245,956,1 +924,tandemaus,924,3,18,61,945,1 +925,maushold,925,3,23,165,946,1 +926,fidough,926,3,109,62,970,1 +927,dachsbun,927,5,149,167,971,1 +928,smoliv,928,3,65,52,935,1 +929,dolliv,929,6,119,124,936,1 +930,arboliva,930,14,482,255,937,1 +931,squawkabilly,931,6,24,146,960,1 +932,nacli,932,4,160,56,963,1 +933,naclstack,933,6,1050,124,964,1 +934,garganacl,934,23,2400,250,965,1 +935,charcadet,935,6,105,51,1003,1 +936,armarouge,936,15,850,263,1004,1 +937,ceruledge,937,16,620,263,1005,1 +938,tadbulb,938,3,4,54,940,1 +939,bellibolt,939,12,1130,173,941,1 +940,wattrel,940,4,36,56,957,1 +941,kilowattrel,941,14,386,172,958,1 +942,maschiff,942,5,160,68,972,1 +943,mabosstiff,943,11,610,177,973,1 +944,shroodle,944,2,7,58,968,1 +945,grafaiai,945,7,272,170,969,1 +946,bramblin,946,6,6,55,974,1 +947,brambleghast,947,12,60,168,975,1 +948,toedscool,948,9,330,67,1006,1 +949,toedscruel,949,19,580,180,1007,1 +950,klawf,950,13,790,158,962,1 +951,capsakid,951,3,30,61,938,1 +952,scovillain,952,9,150,170,939,1 +953,rellor,953,2,10,54,922,1 +954,rabsca,954,3,35,165,923,1 +955,flittle,955,2,15,51,926,1 +956,espathra,956,19,900,168,927,1 +957,tinkatink,957,4,89,59,1000,1 +958,tinkatuff,958,7,591,133,1001,1 +959,tinkaton,959,7,1128,253,1002,1 +960,wiglett,960,12,18,49,929,1 +961,wugtrio,961,12,54,149,930,1 +962,bombirdier,962,15,429,243,959,1 +963,finizen,963,13,602,63,933,1 +964,palafin,964,13,602,160,934,1 +965,varoom,965,10,350,60,942,1 +966,revavroom,966,18,1200,175,943,1 +967,cyclizar,967,16,630,175,953,1 +968,orthworm,968,25,3100,240,944,1 +969,glimmet,969,7,80,70,966,1 +970,glimmora,970,15,450,184,967,1 +971,greavard,971,6,350,58,924,1 +972,houndstone,972,20,150,171,925,1 +973,flamigo,973,16,370,175,961,1 +974,cetoddle,974,12,450,67,947,1 +975,cetitan,975,45,7000,182,948,1 +976,veluza,976,25,900,167,932,1 +977,dondozo,977,120,2200,265,931,1 +978,tatsugiri,978,3,80,166,952,1 +979,annihilape,979,12,560,268,1010,1 +980,clodsire,980,18,2230,151,1009,1 +981,farigiraf,981,32,1600,260,928,1 +982,dudunsparce,982,36,392,182,917,1 +983,kingambit,983,20,1200,275,1008,1 +984,great-tusk,984,22,3200,285,978,1 +985,scream-tail,985,12,80,285,982,1 +986,brute-bonnet,986,12,210,285,979,1 +987,flutter-mane,987,14,40,285,983,1 +988,slither-wing,988,32,920,285,984,1 +989,sandy-shocks,989,23,600,285,981,1 +990,iron-treads,990,9,2400,285,986,1 +991,iron-bundle,991,6,110,285,992,1 +992,iron-hands,992,18,3807,285,989,1 +993,iron-jugulis,993,13,1110,285,990,1 +994,iron-moth,994,12,360,285,988,1 +995,iron-thorns,995,16,3030,285,991,1 +996,frigibax,996,5,170,64,949,1 +997,arctibax,997,8,300,148,950,1 +998,baxcalibur,998,21,2100,300,951,1 +999,gimmighoul,999,3,50,60,976,1 +1000,gholdengo,1000,12,300,275,977,1 +1001,wo-chien,1001,15,742,285,996,1 +1002,chien-pao,1002,19,1522,285,995,1 +1003,ting-lu,1003,27,6997,285,994,1 +1004,chi-yu,1004,4,49,285,997,1 +1005,roaring-moon,1005,20,3800,295,985,1 +1006,iron-valiant,1006,14,350,295,993,1 +1007,koraidon,1007,25,3030,335,998,1 +1008,miraidon,1008,35,2400,335,999,1 +1009,walking-wake,1009,35,2800,295,1093,1 +1010,iron-leaves,1010,15,1250,295,1094,1 +1011,dipplin,1011,4,97,170,1095,1 +1012,poltchageist,1012,1,11,62,1096,1 +1013,sinistcha,1013,2,22,178,1097,1 +1014,okidogi,1014,18,922,278,1098,1 +1015,munkidori,1015,10,122,278,1099,1 +1016,fezandipiti,1016,14,301,278,1100,1 +1017,ogerpon,1017,12,398,275,1101,1 +1018,archaludon,1018,20,600,300,1102,1 +1019,hydrapple,1019,18,930,270,1103,1 +1020,gouging-fire,1020,35,5900,295,1104,1 +1021,raging-bolt,1021,52,4800,295,1105,1 +1022,iron-boulder,1022,15,1625,295,1106,1 +1023,iron-crown,1023,16,1560,295,1107,1 +1024,terapagos,1024,2,65,90,1108,1 +1025,pecharunt,1025,3,3,300,1109,1 10001,deoxys-attack,386,17,608,270,515,0 10002,deoxys-defense,386,17,608,270,516,0 10003,deoxys-speed,386,17,608,270,517,0 diff --git a/data/v2/csv/pokemon_form_names.csv b/data/v2/csv/pokemon_form_names.csv index 7c2f0dfa..cc2cf18c 100644 --- a/data/v2/csv/pokemon_form_names.csv +++ b/data/v2/csv/pokemon_form_names.csv @@ -9,7 +9,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 351,1,ポワルンのすがた, 351,3,캐스퐁의 모습, 351,4,飄浮泡泡的樣子, -351,5,Forme de Morphéo, +351,5,Forme de Morphéo,Morphéo 351,6,Formeo,Formeo 351,7,Forma de Castform, 351,8,Forma Castform, @@ -19,7 +19,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 382,1,カイオーガのすがた, 382,3,가이오가의 모습, 382,4,蓋歐卡的樣子, -382,5,Kyogre, +382,5,Kyogre,Kyogre 382,6,Kyogre,Kyogre 382,7,Kyogre, 382,9,Kyogre, @@ -28,7 +28,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 383,1,グラードンのすがた, 383,3,그란돈의 모습, 383,4,固拉多的樣子, -383,5,Groudon, +383,5,Groudon,Groudon 383,6,Groudon,Groudon 383,7,Groudon, 383,9,Groudon, @@ -94,7 +94,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 479,1,ロトムのすがた, 479,3,로토무의 모습, 479,4,洛托姆的樣子, -479,5,Forme de Motisma, +479,5,Forme de Motisma,Motisma 479,6,Rotom,Rotom 479,7,Forma de Rotom, 479,8,Forma Rotom, @@ -104,7 +104,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 487,1,アナザーフォルム, 487,3,어나더폼, 487,4,別種形態, -487,5,Forme Alternative,Giratina Alternative +487,5,Forme Alternative,Giratina Alternatif 487,6,Wandelform,Giratina 487,7,Forma Modificada, 487,8,Forma Alterata, @@ -194,7 +194,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 646,1,キュレムのすがた, 646,3,큐레무의 모습, 646,4,酋雷姆的樣子, -646,5,Forme de Kyurem, +646,5,Forme de Kyurem,Kyurem 646,6,Kyurem,Kyurem 646,7,Forma de Kyurem, 646,8,Forma di Kyurem, @@ -309,7 +309,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 718,1,50%フォルム, 718,3,50%폼, 718,4,50%形態, -718,5,Forme 50 %, +718,5,Forme 50 %,Zygarde Forme 50 % 718,6,50%-Form,Zygarde (50%) 718,7,Forma 50%, 718,8,Forma 50%, @@ -319,7 +319,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 720,1,いましめられしフーパ, 720,3,굴레에 빠진 후파, 720,4,懲戒胡帕, -720,5,Hoopa Enchaîné, +720,5,Hoopa Enchaîné,Hoopa Enchaîné 720,6,Gebanntes Hoopa,Gebanntes Hoopa 720,7,Hoopa Contenido, 720,8,Hoopa Vincolato, @@ -329,7 +329,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 741,1,めらめらスタイル, 741,3,이글이글스타일, 741,4,熱辣熱辣風格, -741,5,Style Flamenco, +741,5,Style Flamenco,Plumeline Style Flamenco 741,6,Flamenco-Stil,Choreogel (Flamenco) 741,7,Estilo Apasionado, 741,8,Stile Flamenco, @@ -339,7 +339,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 745,1,まひるのすがた, 745,3,한낮의 모습, 745,4,白晝的樣子, -745,5,Forme Diurne, +745,5,Forme Diurne,Lougaroc Forme Diurne 745,6,Tagform,Wolwerock (Tag) 745,7,Forma Diurna, 745,8,Forma Giorno, @@ -349,7 +349,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 746,1,たんどくのすがた, 746,3,단독의 모습, 746,4,單獨的樣子, -746,5,Forme Solitaire, +746,5,Forme Solitaire,Froussardine Forme Solitaire 746,6,Einzelform,Lusardin 746,7,Forma Individual, 746,8,Forma Individuale, @@ -369,7 +369,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 774,1,りゅうせいのすがた, 774,3,유성의 모습, 774,4,流星的樣子, -774,5,Forme Météore, +774,5,Forme Météore,Météno Forme Météore Noyeau Rouge 774,6,Meteorform,Meteno (Meteor Rot) 774,7,Forma Meteorito, 774,8,Forma Meteora, @@ -379,7 +379,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 778,1,ばけたすがた, 778,3,둔갑한 모습, 778,4,化形的樣子, -778,5,Forme Déguisée, +778,5,Forme Déguisée,Mimiqui Déguisé 778,6,Verkleidete Form,Mimigma (Getarnt) 778,7,Forma Encubierta, 778,8,Forma Mascherata, @@ -389,7 +389,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 849,1,ハイなすがた, 849,3,하이한 모습, 849,4,高調的樣子, -849,5,Forme Aigüe, +849,5,Forme Aigüe,Salarsen Forme Aigüe 849,6,Hoch-Form,Riffex (Hochform) 849,7,Forma Aguda, 849,8,Forma Melodia, @@ -397,17 +397,19 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 849,11,ハイなすがた, 849,12,高调的样子, 854,1,がんさくフォルム, +854,5,Forme Contrefaçon,Théffroi Contrefaçon 854,6,Fälschungsform,Fatalitee (Fälschung) 854,9,Phony Form,Phony Sinistea 854,11,がんさくフォルム, 855,1,がんさくフォルム, +854,5,Forme Contrefaçon,Polthégeist Contrefaçon 855,6,Fälschungsform,Mortipot (Fälschung) 855,9,Phony Form,Phony Polteageist 855,11,がんさくフォルム, 869,1,ミルキィバニラ, 869,3,밀키바닐라, 869,4,奶香香草, -869,5,Lait Vanille, +869,5,Lait Vanille,Charmilly Lait Vanille 869,6,Vanille-Creme,Pokusan (Vanille-Creme) 869,7,Crema de Vainilla, 869,8,Lattevaniglia, @@ -417,7 +419,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 875,1,アイスフェイス, 875,3,아이스페이스, 875,4,結凍頭, -875,5,Tête de Gel, +875,5,Tête de Gel,Bekaglaçon Tête de Gel 875,6,Tiefkühlkopf,Kubuin (Tiefkühlkopf) 875,7,Cara de Hielo, 875,8,Gelofaccia, @@ -427,7 +429,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 876,1,オスのすがた, 876,3,수컷의 모습, 876,4,雄性的樣子, -876,5,Mâle, +876,5,Mâle,Wimessir Mâle 876,6,Männlich,Servol ♂ 876,7,Macho, 876,8,Maschio, @@ -437,7 +439,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 877,1,まんぷくもよう, 877,3,배부른 모양, 877,4,滿腹花紋, -877,5,Mode Rassasié, +877,5,Mode Rassasié,Morpeko Rassasié 877,6,Pappsattmuster,Morpeko (Pappsattmuster) 877,7,Forma Saciada, 877,8,Motivo Panciapiena, @@ -447,7 +449,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 888,1,れきせんのゆうしゃ, 888,3,역전의 용사, 888,4,百戰勇者, -888,5,Héros Aguerri, +888,5,Héros Aguerri,Zacian 888,6,Heldenhafter Krieger,Zacian 888,7,Guerrero Avezado, 888,8,Eroe di Mille Lotte, @@ -457,7 +459,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 889,1,れきせんのゆうしゃ, 889,3,역전의 용사, 889,4,百戰勇者, -889,5,Héros Aguerri, +889,5,Héros Aguerri,Zamazenta 889,6,Heldenhafter Krieger,Zamazenta 889,7,Guerrero Avezado, 889,8,Eroe di Mille Lotte, @@ -467,7 +469,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 892,1,いちげきのかた, 892,3,일격의 태세, 892,4,一擊流, -892,5,Style Poing Final, +892,5,Style Poing Final,Shifours Style Poing Final 892,6,Fokussierter Stil,Wulaosu (Fokussiert) 892,7,Estilo Brusco, 892,8,Stile Singolcolpo, @@ -475,42 +477,53 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 892,11,いちげきのかた, 892,12,一击流, 902,1,オスのすがた, +902,5,Mâle,Paragruel Mâle 902,9,Male,Male Basculegion 902,11,オスのすがた, 905,1,けしんフォルム, +905,5,Forme Avatar,Amovénus Avatar 905,9,Incarnate Forme,Incarnate Enamorus 905,11,けしんフォルム, 916,1,オスのすがた, +916,5,Mâle,Fragroin Mâle 916,9,Male, 916,11,オスのすがた, 925,1,4ひきかぞく, +925,5,Famille de Quatre,Famignol Famille de Quatre 925,9,Family of Four, 925,11,4ひきかぞく, 931,1,グリーンフェザー, +931,5,Plumage Vert,Tapatoès Plumage Vert 931,9,Green Plumage, 931,11,グリーンフェザー, 964,1,ナイーブフォルム, +964,5,Forme Ordinaire,Superdofin Forme Ordinaire 964,9,Zero Form, 964,11,ナイーブフォルム, 978,1,そったすがた, +978,5,Forme Courbée,Nigirigon Forme Courbée 978,9,Curly Form, 978,11,そったすがた, 982,1,ふたふしフォルム, +982,5,Forme Double,Deusolourdo Forme Double 982,9,Two-Segment Form, 982,11,ふたふしフォルム, 999,1,はこフォルム, +999,5,Forme Coffre,Mordudor Forme Coffre 999,9,Chest Form, 999,11,はこフォルム, 1007,1,かんぜんけいたい, +1007,5,Forme Finale,Koraidon Forme Finale 1007,9,Apex Build, 1007,11,かんぜんけいたい, 1008,1,コンプリートモード, +1008,5,Mode Ultime,Miraidon Mode Ultime 1008,9,Ultimate Mode, 1008,11,コンプリートモード, 1012,1,マガイモノのすがた, 1012,3,가짜배기의 모습, 1012,4,冒牌貨的樣子, -1012,5,Forme Imitation, +1012,5,Forme Imitation,Poltchageist Forme Imitation 1012,6,Imitationsform, 1012,7,Forma Fraudulenta, 1012,8,Forma Taroccata, @@ -520,7 +533,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 1013,1,ボンサクのすがた, 1013,3,범작의 모습, 1013,4,凡作的樣子, -1013,5,Forme Médiocre, +1013,5,Forme Médiocre,Théffroyable Forme Médiocre 1013,6,Simple Form, 1013,7,Forma Mediocre, 1013,8,Forma Dozzinale, @@ -530,7 +543,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 1017,1,みどりのめん, 1017,3,벽록의가면, 1017,4,碧草面具, -1017,5,Masque Turquoise, +1017,5,Masque Turquoise,Ogerpon Turquoise 1017,6,Türkisgrüne Maske, 1017,7,Máscara Turquesa, 1017,8,Maschera Turchese, @@ -538,7 +551,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 1017,11,みどりのめん, 1017,12,碧草面具, 1024,1,ノーマルフォルム, -1024,5,Forme Normale, +1024,5,Forme Normale,Terapagos Forme Normale 1024,7,Forma normal, 1024,8,Forma Normale, 1024,9,Normal Form, @@ -2105,7 +2118,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10193,1,アローラのすがた, 10193,3,알로라의 모습, 10193,4,阿羅拉的樣子, -10193,5,Forme d’Alola,Rattata d'Alola +10193,5,Forme d'Alola,Rattata d'Alola 10193,6,Alola-Form,Alola Rattfratz 10193,7,Forma de Alola, 10193,8,Forma di Alola, @@ -2115,7 +2128,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10194,1,アローラのすがた, 10194,3,알로라의 모습, 10194,4,阿羅拉的樣子, -10194,5,Forme d’Alola,Rattatac d'Alola +10194,5,Forme d'Alola,Rattatac d'Alola 10194,6,Alola-Form,Alola Rattikarl 10194,7,Forma de Alola, 10194,8,Forma di Alola, @@ -2158,7 +2171,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10199,1,イッシュキャップ, 10199,3,하나캡, 10199,4,合眾帽子, -10199,5,Casquette d’Unys,Pikachu Casquette d’Unys +10199,5,Casquette d'Unys,Pikachu Casquette d’Unys 10199,6,Einall-Kappe,Pikachu (Einall-Kappe) 10199,7,Gorra Teselia, 10199,8,Berretto Unima, @@ -2178,7 +2191,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10201,1,アローラキャップ, 10201,3,알로라캡, 10201,4,阿羅拉帽子, -10201,5,Casquette d’Alola,Pikachu Casquette d’Alola +10201,5,Casquette d'Alola,Pikachu Casquette d’Alola 10201,6,Alola-Kappe,Pikachu (Alola-Kappe) 10201,7,Gorra Alola, 10201,8,Berretto Alola, @@ -2188,7 +2201,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10202,1,アローラのすがた, 10202,3,알로라의 모습, 10202,4,阿羅拉的樣子, -10202,5,Forme d’Alola,Raichu d'Alola +10202,5,Forme d'Alola,Raichu d'Alola 10202,6,Alola-Form,Alola Raichu 10202,7,Forma de Alola, 10202,8,Forma di Alola, @@ -2198,7 +2211,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10203,1,アローラのすがた, 10203,3,알로라의 모습, 10203,4,阿羅拉的樣子, -10203,5,Forme d’Alola,Sabelette d'Alola +10203,5,Forme d'Alola,Sabelette d'Alola 10203,6,Alola-Form,Alola Sandan 10203,7,Forma de Alola, 10203,8,Forma di Alola, @@ -2208,7 +2221,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10204,1,アローラのすがた, 10204,3,알로라의 모습, 10204,4,阿羅拉的樣子, -10204,5,Forme d’Alola,Sablaireau d'Alola +10204,5,Forme d'Alola,Sablaireau d'Alola 10204,6,Alola-Form,Alola Sandamer 10204,7,Forma de Alola, 10204,8,Forma di Alola, @@ -2218,7 +2231,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10205,1,アローラのすがた, 10205,3,알로라의 모습, 10205,4,阿羅拉的樣子, -10205,5,Forme d’Alola,Goupix d'Alola +10205,5,Forme d'Alola,Goupix d'Alola 10205,6,Alola-Form,Alola Vulpix 10205,7,Forma de Alola, 10205,8,Forma di Alola, @@ -2228,7 +2241,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10206,1,アローラのすがた, 10206,3,알로라의 모습, 10206,4,阿羅拉的樣子, -10206,5,Forme d’Alola,Feunard d'Alola +10206,5,Forme d'Alola,Feunard d'Alola 10206,6,Alola-Form,Alola Vulnona 10206,7,Forma de Alola, 10206,8,Forma di Alola, @@ -2238,7 +2251,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10207,1,アローラのすがた, 10207,3,알로라의 모습, 10207,4,阿羅拉的樣子, -10207,5,Forme d’Alola,Taupiqueur d'Alola +10207,5,Forme d'Alola,Taupiqueur d'Alola 10207,6,Alola-Form,Alola Digda 10207,7,Forma de Alola, 10207,8,Forma di Alola, @@ -2248,7 +2261,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10208,1,アローラのすがた, 10208,3,알로라의 모습, 10208,4,阿羅拉的樣子, -10208,5,Forme d’Alola,Triopikeur d'Alola +10208,5,Forme d'Alola,Triopikeur d'Alola 10208,6,Alola-Form,Alola Digdri 10208,7,Forma de Alola, 10208,8,Forma di Alola, @@ -2258,7 +2271,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10209,1,アローラのすがた, 10209,3,알로라의 모습, 10209,4,阿羅拉的樣子, -10209,5,Forme d’Alola,Miaouss d'Alola +10209,5,Forme d'Alola,Miaouss d'Alola 10209,6,Alola-Form,Alola Mauzi 10209,7,Forma de Alola, 10209,8,Forma di Alola, @@ -2278,7 +2291,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10211,1,アローラのすがた, 10211,3,알로라의 모습, 10211,4,阿羅拉的樣子, -10211,5,Forme d’Alola,Racaillou d'Alola +10211,5,Forme d'Alola,Racaillou d'Alola 10211,6,Alola-Form,Alola Kleinstein 10211,7,Forma de Alola, 10211,8,Forma di Alola, @@ -2288,7 +2301,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10212,1,アローラのすがた, 10212,3,알로라의 모습, 10212,4,阿羅拉的樣子, -10212,5,Forme d’Alola,Gravalanch d'Alola +10212,5,Forme d'Alola,Gravalanch d'Alola 10212,6,Alola-Form,Alola Georok 10212,7,Forma de Alola, 10212,8,Forma di Alola, @@ -2298,7 +2311,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10213,1,アローラのすがた, 10213,3,알로라의 모습, 10213,4,阿羅拉的樣子, -10213,5,Forme d’Alola,Grolem d'Alola +10213,5,Forme d'Alola,Grolem d'Alola 10213,6,Alola-Form,Alola Geowaz 10213,7,Forma de Alola, 10213,8,Forma di Alola, @@ -2308,7 +2321,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10214,1,アローラのすがた, 10214,3,알로라의 모습, 10214,4,阿羅拉的樣子, -10214,5,Forme d’Alola,Tadmorv d'Alola +10214,5,Forme d'Alola,Tadmorv d'Alola 10214,6,Alola-Form,Alola Sleima 10214,7,Forma de Alola, 10214,8,Forma di Alola, @@ -2318,7 +2331,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10215,1,アローラのすがた, 10215,3,알로라의 모습, 10215,4,阿羅拉的樣子, -10215,5,Forme d’Alola,Grotadmorv d'Alola +10215,5,Forme d'Alola,Grotadmorv d'Alola 10215,6,Alola-Form,Alola Sleimok 10215,7,Forma de Alola, 10215,8,Forma di Alola, @@ -2328,7 +2341,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10216,1,アローラのすがた, 10216,3,알로라의 모습, 10216,4,阿羅拉的樣子, -10216,5,Forme d’Alola,Noadkoko d'Alola +10216,5,Forme d'Alola,Noadkoko d'Alola 10216,6,Alola-Form,Alola Kokowei 10216,7,Forma de Alola, 10216,8,Forma di Alola, @@ -2338,7 +2351,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10217,1,アローラのすがた, 10217,3,알로라의 모습, 10217,4,阿羅拉的樣子, -10217,5,Forme d’Alola,Ossatueur d'Alola +10217,5,Forme d'Alola,Ossatueur d'Alola 10217,6,Alola-Form,Alola Knogga 10217,7,Forma de Alola, 10217,8,Forma di Alola, @@ -2673,7 +2686,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10254,1,りゅうせいのすがた, 10254,3,유성의 모습, 10254,4,流星的樣子, -10254,5,Forme Météore,Météno NoyeaForme Météore u Violet +10254,5,Forme Météore,Météno Forme Météore Noyeau Violet 10254,6,Meteorform,Meteno (Meteor Violet) 10254,7,Forma Meteorito, 10254,8,Forma Meteora, @@ -2830,7 +2843,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10315,1,あかつきのつばさ, 10315,3,새벽의 날개, 10315,4,拂曉之翼, -10315,5,Ailes de l’Aurore,Necrozma Ailes de l’Aurore +10315,5,Ailes de l'Aurore,Necrozma Ailes de l’Aurore 10315,6,Morgenschwingen,Necrozma (Morgenschwingen) 10315,7,Alas del Alba, 10315,8,Ali dell’Aurora, @@ -3104,17 +3117,19 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10343,11,ローなすがた, 10343,12,低调的样子, 10344,1,しんさくフォルム, +10344,5,Forme Authentique,Théffroi Authentique 10344,6,Originalform,Fatalitee (Original) 10344,9,Antique Form,Antique Sinistea 10344,11,しんさくフォルム, 10345,1,しんさくフォルム, +10345,5,Forme Authentique,Polthégeist Authentique 10345,6,Originalform,Mortipot (Original) 10345,9,Antique Form,Antique Polteageist 10345,11,しんさくフォルム, 10346,1,ミルキィルビー, 10346,3,밀키루비, 10346,4,奶香紅鑽, -10346,5,Lait Ruby, +10346,5,Lait Ruby,Charmilly Lait Ruby 10346,6,Ruby-Creme,Pokusan (Ruby-Creme) 10346,7,Crema Rosa, 10346,8,Latterosa, @@ -3124,7 +3139,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10347,1,ミルキィまっちゃ, 10347,3,밀키말차, 10347,4,奶香抹茶, -10347,5,Lait Matcha, +10347,5,Lait Matcha,Charmilly Lait Matcha 10347,6,Matcha-Creme,Pokusan (Matcha-Creme) 10347,7,Crema de Té, 10347,8,Lattematcha, @@ -3134,7 +3149,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10348,1,ミルキィミント, 10348,3,밀키민트, 10348,4,奶香薄荷, -10348,5,Lait Menthe, +10348,5,Lait Menthe,Charmilly Lait Menthe 10348,6,Minz-Creme,Pokusan (Minz-Creme) 10348,7,Crema de Menta, 10348,8,Lattementa, @@ -3144,7 +3159,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10349,1,ミルキィレモン, 10349,3,밀키레몬, 10349,4,奶香檸檬, -10349,5,Lait Citron, +10349,5,Lait Citron,Charmilly Lait Citron 10349,6,Zitronen-Creme,Pokusan (Zitronen-Creme) 10349,7,Crema de Limón, 10349,8,Lattelimone, @@ -3154,7 +3169,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10350,1,ミルキィソルト, 10350,3,밀키솔트, 10350,4,奶香雪鹽, -10350,5,Lait Salé, +10350,5,Lait Salé,Charmilly Lait Salé 10350,6,Salz-Creme,Pokusan (Salz-Creme) 10350,7,Crema Salada, 10350,8,Lattesale, @@ -3164,7 +3179,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10351,1,ルビーミックス, 10351,3,루비믹스, 10351,4,紅鑽綜合, -10351,5,Mélange Ruby, +10351,5,Mélange Ruby,Charmilly Mélange Ruby 10351,6,Ruby-Mix,Pokusan (Ruby-Mix) 10351,7,Mezcla Rosa, 10351,8,Rosamix, @@ -3174,7 +3189,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10352,1,キャラメルミックス, 10352,3,캐러멜믹스, 10352,4,焦糖綜合, -10352,5,Mélange Caramel, +10352,5,Mélange Caramel,Charmilly Mélange Caramel 10352,6,Karamell-Mix,Pokusan (Karamell-Mix) 10352,7,Mezcla Caramelo, 10352,8,Caramelmix, @@ -3184,7 +3199,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10353,1,トリプルミックス, 10353,3,트리플믹스, 10353,4,三色綜合, -10353,5,Mélange Tricolore, +10353,5,Mélange Tricolore,Charmilly Mélange Tricolore 10353,6,Trio-Mix,Pokusan (Trio-Mix) 10353,7,Tres Sabores, 10353,8,Triplomix, @@ -3214,7 +3229,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10356,1,はらぺこもよう, 10356,3,배고픈 모양, 10356,4,空腹花紋, -10356,5,Mode Affamé,Morpeko Mode Affamé +10356,5,Mode Affamé,Morpeko Affamé 10356,6,Kohldampfmuster,Morpeko (Kohldampf) 10356,7,Forma Voraz, 10356,8,Motivo Panciavuota, @@ -3360,7 +3375,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10386,5,Forme Gigamax,Dratatin Gigamax 10386,6,Gigadynamax-Form,Gigadynamax-Schlapfel 10386,9,Gigantamax Form,Gigantamax Appletun -10387,5,Forme Gigamax,Dunaconda +10387,5,Forme Gigamax,Dunaconda Gigamax 10387,6,Gigadynamax-Form,Gigadynamax-Sanaconda 10387,9,Gigantamax Form,Gigantamax Sandaconda 10388,5,Forme Gigamax,Salarsen Forme Aigüe Gigamax @@ -3484,7 +3499,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10415,9,Origin Forme,Origin Palkia 10415,11,オリジンフォルム, 10416,1,しろすじのすがた, -10416,5,Motif Blanch,Basculin Blanc +10416,5,Motif Blanc,Bargantua Blanc 10416,6,Weißlinienform,Weißliniges Barschuft 10416,9,White-Striped Form,White-Striped Basculin 10416,11,しろすじのすがた, @@ -3494,80 +3509,102 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10417,9,Female,Female Basculegion 10417,11,メスのすがた, 10418,1,れいじゅうフォルム, -10418,5,Forme Avatar,Amovénus Avatar +10418,5,Forme Totémique,Amovénus Totémique 10418,6,Tiergeistform,Enamorus (Tiergeist) 10418,9,Therian Forme,Therian Enamorus 10418,11,れいじゅうフォルム, 10419,1,パルデアのすがた, +10419,5,Forme de Paldéa,Tauros de Paldéa Race Combative 10419,9,Paldean Form, 10419,11,パルデアのすがた, 10420,1,パルデアのすがた, +10420,5,Forme de Paldéa,Tauros de Paldéa Race Flamboyante 10420,9,Paldean Form, 10420,11,パルデアのすがた, 10421,1,パルデアのすがた, +10421,5,Forme de Paldéa,Tauros de Paldéa Race Aquatique 10421,9,Paldean Form, 10421,11,パルデアのすがた, 10422,1,パルデアのすがた, +10422,5,Forme de Paldéa,Axoloto de Paldéa 10422,9,Paldean Form, 10422,11,パルデアのすがた, 10423,1,メスのすがた, +10423,5,Femelle,Fragroin Femelle 10423,9,Female, 10423,11,メスのすがた, 10424,1,みつふしフォルム, +10424,5,Forme Triple,Deusolourdo Forme Triple 10424,9,Three-Segment Form, 10424,11,みつふしフォルム, 10425,1,マイティフォルム, +10425,5,Forme Super,Superdofin Forme Super 10425,9,Hero Form, 10425,11,マイティフォルム, 10426,1,3びきかぞく, +10426,5,Famille de Trois,Famignol Famille de Trois 10426,9,Family of Three, 10426,11,3びきかぞく, 10427,1,たれたすがた, +10427,5,Forme Affalée,Nigirigon Forme Affalée 10427,9,Droopy Form, 10427,11,たれたすがた, 10428,1,のびたすがた, +10428,5,Forme Raide,Nigirigon Forme Raide 10428,9,Stretchy Form, 10428,11,のびたすがた, 10429,1,ブルーフェザー, +10429,5,Plumage Bleu,Tapatoès Plumage Bleu 10429,9,Blue Plumage, 10429,11,ブルーフェザー, 10430,1,イエローフェザー, +10430,5,Plumage Jaune,Tapatoès Plumage Jaune 10430,9,Yellow Plumage, 10430,11,イエローフェザー, 10431,1,ホワイトフェザー, +10431,5,Plumage Blanc,Tapatoès Plumage Blanc 10431,9,White Plumage, 10431,11,ホワイトフェザー, 10432,1,とほフォルム, +10432,5,Forme Marche,Mordudor Forme Marche 10432,9,Roaming Form, 10432,11,とほフォルム, 10433,1,せいげんけいたい, +10433,5,Forme Limitée,Koraidon Forme Limitée 10433,9,Limited Build, 10433,11,せいげんけいたい, 10434,1,しっそうけいたい, +10433,5,Forme de Course,Koraidon Forme de Course 10434,9,Sprinting Build, 10434,11,しっそうけいたい, 10435,1,ゆうえいけいたい, +10433,5,Forme de Nage,Koraidon Forme de Nage 10435,9,Swimming Build, 10435,11,ゆうえいけいたい, 10436,1,かっくうけいたい, +10433,5,Forme de Vol,Koraidon Forme de Vol 10436,9,Gliding Build, 10436,11,かっくうけいたい, 10437,1,リミテッドモード, +10437,5,Mode Bridé,Miraidon Mode Bridé 10437,9,Low-Power Mode, 10437,11,リミテッドモード, 10438,1,ドライブモード, +10438,5,Mode Terrestre,Miraidon Mode Terrestre 10438,9,Drive Mode, 10438,11,ドライブモード, 10439,1,フロートモード, +10439,5,Mode Aquatique,Miraidon Mode Aquatique 10439,9,Aquatic Mode, 10439,11,フロートモード, 10440,1,グライドモード, +10440,5,Mode Aérien,Miraidon Mode Aérien 10440,9,Glide Mode, 10440,11,グライドモード, 10441,1,アカツキ, 10441,3,붉은 달, 10441,4,赫月, -10441,5,Lune Vermeille, +10441,5,Lune Vermeille,Ursaking Lune Vermeille 10441,6,Blutmond, 10441,7,Luna Carmesí, 10441,8,Luna Cremisi, @@ -3577,7 +3614,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10442,1,いどのめん, 10442,3,우물의가면, 10442,4,水井面具, -10442,5,Masque du Puits, +10442,5,Masque du Puits,Ogerpon du Puits 10442,6,Brunnenmaske, 10442,7,Máscara Fuente, 10442,8,Maschera Pozzo, @@ -3587,7 +3624,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10443,1,かまどのめん, 10443,3,화덕의가면, 10443,4,火灶面具, -10443,5,Masque du Fourneau, +10443,5,Masque du Fourneau,Ogerpon du Fourneau 10443,6,Ofenmaske, 10443,7,Máscara Horno, 10443,8,Maschera Focolare, @@ -3597,7 +3634,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10444,1,いしずえのめん, 10444,3,주춧돌의가면, 10444,4,礎石面具, -10444,5,Masque de la Pierre, +10444,5,Masque de la Pierre,Ogerpon de la Pierre 10444,6,Fundamentmaske, 10444,7,Máscara Cimiento, 10444,8,Maschera Fondamenta, @@ -3605,13 +3642,14 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10444,11,いしずえのめん, 10444,12,礎石面具, 10445,1,テラスタルフォルム, -10445,5,Forme Téracristal, +10445,5,Forme Téracristal,Terapagos Téracristal 10445,6,Terakristall-Form, 10445,7,Forma teracristal, 10445,8,Forma Teracristal, 10445,9,Terastal Form, 10445,11,テラスタルフォルム, 10446,1,ステラフォルム, +10446,5,Forme Stellaire,Terapagos Stellaire 10446,6,Stellarform, 10446,7,Forma astral, 10446,9,Stellar Form, @@ -3619,7 +3657,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10447,1,タカイモノのすがた, 10447,3,알짜배기의 모습, 10447,4,高檔貨的樣子, -10447,5,Forme Onéreuse, +10447,5,Forme Onéreuse,Poltchageist Forme Onéreuse 10447,6,Kostbarkeitsform, 10447,7,Forma Opulenta, 10447,8,Forma Pregiata, @@ -3629,7 +3667,7 @@ pokemon_form_id,local_language_id,form_name,pokemon_name 10448,1,ケッサクのすがた, 10448,3,걸작의 모습, 10448,4,傑作的樣子, -10448,5,Forme Exceptionnelle, +10448,5,Forme Exceptionnelle,Théffroyable Forme Exceptionnelle 10448,6,Edle Form, 10448,7,Forma Exquisita, 10448,8,Forma Eccezionale, diff --git a/data/v2/csv/pokemon_forms.csv b/data/v2/csv/pokemon_forms.csv index 515f9e13..68f70b1c 100644 --- a/data/v2/csv/pokemon_forms.csv +++ b/data/v2/csv/pokemon_forms.csv @@ -1218,7 +1218,7 @@ id,identifier,form_identifier,pokemon_id,introduced_in_version_group_id,is_defau 10192,beedrill-mega,mega,10090,16,1,1,1,2,20 10193,rattata-alola,alola,10091,17,1,0,0,2,26 10194,raticate-alola,alola,10092,17,1,0,0,2,28 -10195,raticate-totem-alola,totem-alola,10093,17,1,1,0,3,29 +10195,raticate-totem-alola,totem-alola,10093,17,1,0,0,3,29 10196,pikachu-original-cap,original-cap,10094,17,1,0,0,8,43 10197,pikachu-hoenn-cap,hoenn-cap,10095,17,1,0,0,9,44 10198,pikachu-sinnoh-cap,sinnoh-cap,10096,17,1,0,0,10,45 @@ -1245,16 +1245,16 @@ id,identifier,form_identifier,pokemon_id,introduced_in_version_group_id,is_defau 10219,greninja-ash,ash,10117,17,1,1,0,3,853 10220,zygarde-10-power-construct,10-power-construct,10118,17,1,0,0,3,1002 10221,zygarde-50-power-construct,50-power-construct,10119,17,1,0,0,4,1003 -10222,zygarde-complete,complete,10120,17,1,0,0,5,1004 -10223,gumshoos-totem,totem,10121,17,1,1,0,2,1024 -10224,vikavolt-totem,totem,10122,17,1,1,0,2,1028 +10222,zygarde-complete,complete,10120,17,1,1,0,5,1004 +10223,gumshoos-totem,totem,10121,17,1,0,0,2,1024 +10224,vikavolt-totem,totem,10122,17,1,0,0,2,1028 10225,oricorio-pom-pom,pom-pom,10123,17,1,0,0,2,1032 10226,oricorio-pau,pau,10124,17,1,0,0,3,1033 10227,oricorio-sensu,sensu,10125,17,1,0,0,4,1034 10228,lycanroc-midnight,midnight,10126,17,1,0,0,2,1041 10229,wishiwashi-school,school,10127,17,1,1,0,2,1044 -10230,lurantis-totem,totem,10128,17,1,1,0,2,1054 -10231,salazzle-totem,totem,10129,17,1,1,0,2,1059 +10230,lurantis-totem,totem,10128,17,1,0,0,2,1054 +10231,salazzle-totem,totem,10129,17,1,0,0,2,1059 10232,silvally-fighting,fighting,773,17,0,0,0,2,1075 10233,silvally-flying,flying,773,17,0,0,0,3,1076 10234,silvally-poison,poison,773,17,0,0,0,4,1077 @@ -1286,9 +1286,9 @@ id,identifier,form_identifier,pokemon_id,introduced_in_version_group_id,is_defau 10260,minior-indigo,indigo,10141,17,1,0,0,13,1104 10261,minior-violet,violet,10142,17,1,0,0,14,1105 10262,mimikyu-busted,busted,10143,17,1,1,0,2,1111 -10263,mimikyu-totem-disguised,totem-disguised,10144,17,1,1,0,3,1112 +10263,mimikyu-totem-disguised,totem-disguised,10144,17,1,0,0,3,1112 10264,mimikyu-totem-busted,totem-busted,10145,17,1,1,0,4,1113 -10265,kommo-o-totem,totem,10146,17,1,1,0,2,1120 +10265,kommo-o-totem,totem,10146,17,1,0,0,2,1120 10266,magearna-original,original,10147,17,1,0,0,2,1141 10267,pikachu-partner-cap,partner-cap,10148,18,1,0,0,14,49 10268,marowak-totem,totem,10149,18,1,0,0,3,167 @@ -1360,12 +1360,12 @@ id,identifier,form_identifier,pokemon_id,introduced_in_version_group_id,is_defau 10334,linoone-galar,galar,10175,20,1,0,0,2,392 10335,darumaka-galar,galar,10176,20,1,0,0,2,725 10336,darmanitan-galar-standard,galar-standard,10177,20,1,0,0,3,728 -10337,darmanitan-galar-zen,galar-zen,10178,20,1,0,0,4,729 +10337,darmanitan-galar-zen,galar-zen,10178,20,1,1,0,4,729 10338,yamask-galar,galar,10179,20,1,0,0,2,737 10339,stunfisk-galar,galar,10180,20,1,0,0,2,800 10340,zygarde-10,10,10181,17,1,0,0,2,1001 -10341,cramorant-gulping,gulping,10182,20,1,0,0,2,1186 -10342,cramorant-gorging,gorging,10183,20,1,0,0,3,1187 +10341,cramorant-gulping,gulping,10182,20,1,1,0,2,1186 +10342,cramorant-gorging,gorging,10183,20,1,1,0,3,1187 10343,toxtricity-low-key,low-key,10184,20,1,0,0,2,1192 10344,sinistea-antique,antique,854,20,0,0,0,2,1198 10345,polteageist-antique,antique,855,20,0,0,0,2,1200 @@ -1377,11 +1377,11 @@ id,identifier,form_identifier,pokemon_id,introduced_in_version_group_id,is_defau 10351,alcremie-ruby-swirl,ruby-swirl,869,20,0,0,0,7,1220 10352,alcremie-caramel-swirl,caramel-swirl,869,20,0,0,0,8,1221 10353,alcremie-rainbow-swirl,rainbow-swirl,869,20,0,0,0,9,1222 -10354,eiscue-noice,noice,10185,20,1,0,0,2,1229 +10354,eiscue-noice,noice,10185,20,1,1,0,2,1229 10355,indeedee-female,female,10186,20,1,0,0,2,1231 -10356,morpeko-hangry,hangry,10187,20,1,0,0,2,1233 -10357,zacian-crowned,crowned,10188,20,1,0,0,2,1245 -10358,zamazenta-crowned,crowned,10189,20,1,0,0,2,1247 +10356,morpeko-hangry,hangry,10187,20,1,1,0,2,1233 +10357,zacian-crowned,crowned,10188,20,1,1,0,2,1245 +10358,zamazenta-crowned,crowned,10189,20,1,1,0,2,1247 10359,eternatus-eternamax,eternamax,10190,20,1,0,0,2,1249 10360,urshifu-rapid-strike,rapid-strike,10191,20,1,0,0,2,1252 10361,zarude-dada,dada,10192,20,1,0,0,2,1254 diff --git a/data/v2/csv/pokemon_species.csv b/data/v2/csv/pokemon_species.csv index 86376cf6..58e11c8c 100644 --- a/data/v2/csv/pokemon_species.csv +++ b/data/v2/csv/pokemon_species.csv @@ -131,7 +131,7 @@ id,identifier,generation_id,evolves_from_species_id,evolution_chain_id,color_id, 130,gyarados,1,129,64,2,2,9,4,45,50,0,5,1,1,1,0,0,154,14 131,lapras,1,,65,2,3,7,4,45,50,0,40,0,1,0,0,0,155,190 132,ditto,1,,66,7,1,8,-1,35,50,0,20,0,2,0,0,0,156, -133,eevee,1,,67,3,8,8,1,45,50,0,35,0,2,0,0,0,157,1 +133,eevee,1,,67,3,8,8,1,45,50,0,35,1,2,0,0,0,157,1 134,vaporeon,1,133,67,2,8,8,1,45,50,0,35,0,2,0,0,0,158,2 135,jolteon,1,133,67,10,8,8,1,45,50,0,35,0,2,0,0,0,159,3 136,flareon,1,133,67,8,8,8,1,45,50,0,35,0,2,0,0,0,160,4 @@ -874,7 +874,7 @@ id,identifier,generation_id,evolves_from_species_id,evolution_chain_id,color_id, 873,frosmoth,8,872,455,9,13,,4,75,50,0,20,0,2,0,0,0,873, 874,stonjourner,8,,456,4,7,,4,60,50,0,25,0,1,0,0,0,874, 875,eiscue,8,,457,2,6,,4,60,50,0,25,0,1,0,0,0,875, -876,indeedee,8,,458,7,6,,4,30,140,0,40,0,3,0,0,0,876, +876,indeedee,8,,458,7,6,,4,30,140,0,40,1,3,0,0,0,876, 877,morpeko,8,,459,10,12,,4,180,50,0,10,0,2,0,0,0,877, 878,cufant,8,,460,10,8,,4,190,50,0,25,0,2,0,0,0,878, 879,copperajah,8,878,460,5,8,,4,90,50,0,25,0,2,0,0,0,879, @@ -914,7 +914,7 @@ id,identifier,generation_id,evolves_from_species_id,evolution_chain_id,color_id, 913,quaxwell,9,912,480,2,,,1,45,50,0,20,0,4,0,0,0,913, 914,quaquaval,9,913,480,2,,,1,45,50,0,20,0,4,0,0,0,914, 915,lechonk,9,,481,4,,,4,255,50,0,15,0,2,0,0,0,915, -916,oinkologne,9,915,481,4,,,0,100,50,0,15,0,2,0,0,0,916, +916,oinkologne,9,915,481,4,,,0,100,50,0,15,1,2,0,0,0,916, 917,tarountula,9,,482,9,,,4,255,50,0,15,0,5,0,0,0,918, 918,spidops,9,917,482,5,,,4,120,50,0,15,0,5,0,0,0,919, 919,nymble,9,,483,4,,,4,190,20,0,20,0,2,0,0,0,920, diff --git a/data/v2/csv/pokemon_species_flavor_text.csv b/data/v2/csv/pokemon_species_flavor_text.csv index fd832e6f..2bb905db 100644 --- a/data/v2/csv/pokemon_species_flavor_text.csv +++ b/data/v2/csv/pokemon_species_flavor_text.csv @@ -183571,4 +183571,38 @@ gives rise to the budding of fresh life across Hisui." 1007,40,9,"This seems to be the Winged King mentioned in an old expedition journal. It was said to have split the land with its bare fists." 1007,41,9,"This Pokémon resembles Cyclizar, but it is far burlier and more ferocious. Nothing is known about its ecology or other features." 1008,40,9,"Much remains unknown about this creature. It resembles Cyclizar, but it is far more ruthless and powerful." -1008,41,9,"This seems to be the Iron Serpent mentioned in an old book. The Iron Serpent is said to have turned the land to ash with its lightning." \ No newline at end of file +1008,41,9,"This seems to be the Iron Serpent mentioned in an old book. The Iron Serpent is said to have turned the land to ash with its lightning." +1009,40,9,"This ferocious creature is shrouded in mystery. It's named after an aquatic monster mentioned in an old expedition journal." +1009,41,9,"It resembles an illustration published in a paranormal magazine, said to be a depiction of a super-ancient Suicune." +1010,40,9,"Many of its physical characteristics match those of a Virizion from the future that was covered in a paranormal magazine." +1010,41,9,"According to the few eyewitness accounts that exist, it used its shining blades to julienne large trees and boulders." +1011,40,9,"Dipplin is two creatures in one Pokémon. Its evolution was triggered by a special apple grown only in one place." +1011,41,9,"The head sticking out belongs to the fore-wyrm, while the tail belongs to the core-wyrm. The two share one apple and help each other out." +1012,40,9,"Supposedly, the regrets of a tea ceremony master who died before perfecting his craft lingered in some matcha and became a Pokémon." +1012,41,9,"Poltchageist looks like a regional form of Sinistea, but it was recently discovered that the two Pokémon are entirely unrelated." +1013,40,9,"It pretends to be tea, trying to fool people into drinking it so it can drain their life-force. Its ruse is generally unsuccessful." +1013,41,9,"It prefers cool, dark places, such as the back of a shelf or the space beneath a home's floorboards. It wanders in search of prey after sunset." +1014,40,9,"After all its muscles were stimulated by the toxic chain around its neck, Okidogi transformed and gained a powerful physique." +1014,41,9,"Okidogi is a ruffian with a short temper. It can pulverize anything by swinging around the chain on its neck." +1015,40,9,"The chain is made from toxins that enhance capabilities. It stimulated Munkidori's brain and caused the Pokémon's psychic powers to bloom." +1015,41,9,"Munkidori keeps itself somewhere safe while it toys with its foes, using psychokinesis to induce intense dizziness." +1016,40,9,"Fezandipiti owes its beautiful looks and lovely voice to the toxic stimulants emanating from the chain wrapped around its body." +1016,41,9,"Fezandipiti beats its glossy wings to scatter pheromones that captivate people and Pokémon." +1017,40,9,"This Pokémon's type changes based on which mask it's wearing. It confounds its enemies with nimble movements and kicks." +1017,41,9,"This mischief-loving Pokémon is full of curiosity. It battles by drawing out the type-based energy contained within its masks." +1018,40,9,"It gathers static electricity from its surroundings. The beams it launches when down on all fours are tremendously powerful." +1018,41,9,"It digs holes on mountains, searching for food. It’s so durable that being caught in a cave-in won’t faze it." +1019,40,9,"Seven syrpents live inside an apple made of syrup. The syrpent in the center is the commander." +1019,41,9,"These capricious syrpents have banded together. On the rare occasion that their moods align, their true power is unleashed." +1020,40,9,"There are scant few reports of this creature being sighted. One short video shows it rampaging and spouting pillars of flame." +1020,41,9,"It resembles an eerie Pokémon once shown in a paranormal magazine. That Pokémon was said to be an Entei regenerated from a fossil." +1021,40,9,"It's said to incinerate everything around it with lightning launched from its fur. Very little is known about this creature." +1021,41,9,"It bears resemblance to a Pokémon that became a hot topic for a short while after a paranormal magazine touted it as Raikou's ancestor." +1022,40,9,"It resembles a Pokémon described in a dubious magazine as a Terrakion that had been modified by an evil organization." +1022,41,9,"It was named after a mysterious object recorded in an old book. Its body seems to be metallic." +1023,40,9,"It resembles a mysterious object introduced in a paranormal magazine as a cutting-edge weapon shaped like a Cobalion." +1023,41,9,"There was supposedly an incident in which it launched shining blades to cut everything around it to pieces. Little else is known about it." +1024,40,9,"Terapagos protects itself using its power to transform energy into hard crystals. This Pokémon is the source of the Terastal phenomenon." +1024,41,9,"It’s thought that this Pokémon lived in ancient Paldea until it got caught in seismic shifts and went extinct." +1025,40,9,"It feeds others toxic mochi that draw out desires and capabilities. Those who eat the mochi fall under Pecharunt’s control, chained to its will." +1025,41,9,"Its peach-shaped shell serves as storage for a potent poison. It makes poisonous mochi and serves them to people and Pokémon." diff --git a/data/v2/csv/pokemon_species_names.csv b/data/v2/csv/pokemon_species_names.csv index e0217cee..260017ce 100644 --- a/data/v2/csv/pokemon_species_names.csv +++ b/data/v2/csv/pokemon_species_names.csv @@ -11116,7 +11116,7 @@ pokemon_species_id,local_language_id,name,genus 1011,6,Sirapfel, 1011,7,Dipplin, 1011,8,Dipplin, -1011,9,Dipplin, +1011,9,Dipplin,Candy Apple Pokémon 1011,11,カミッチュ, 1011,12,裹蜜虫, 1012,1,チャデス, @@ -11126,7 +11126,7 @@ pokemon_species_id,local_language_id,name,genus 1012,6,Mortcha, 1012,7,Poltchageist, 1012,8,Poltchageist, -1012,9,Poltchageist, +1012,9,Poltchageist,Matcha Pokémon 1012,11,チャデス, 1012,12,斯魔茶, 1013,1,ヤバソチャ, @@ -11136,7 +11136,7 @@ pokemon_species_id,local_language_id,name,genus 1013,6,Fatalitcha, 1013,7,Sinistcha, 1013,8,Sinistcha, -1013,9,Sinistcha, +1013,9,Sinistcha,Matcha Pokémon 1013,11,ヤバソチャ, 1013,12,来悲粗茶, 1014,1,イイネイヌ, @@ -11146,7 +11146,7 @@ pokemon_species_id,local_language_id,name,genus 1014,6,Boninu, 1014,7,Okidogi, 1014,8,Okidogi, -1014,9,Okidogi, +1014,9,Okidogi,Retainer Pokémon 1014,11,イイネイヌ, 1014,12,够赞狗, 1015,1,マシマシラ, @@ -11156,7 +11156,7 @@ pokemon_species_id,local_language_id,name,genus 1015,6,Benesaru, 1015,7,Munkidori, 1015,8,Munkidori, -1015,9,Munkidori, +1015,9,Munkidori,Retainer Pokémon 1015,11,マシマシラ, 1015,12,愿增猿, 1016,1,キチキギス, @@ -11166,7 +11166,7 @@ pokemon_species_id,local_language_id,name,genus 1016,6,Beatori, 1016,7,Fezandipiti, 1016,8,Fezandipiti, -1016,9,Fezandipiti, +1016,9,Fezandipiti,Retainer Pokémon 1016,11,キチキギス, 1016,12,吉雉鸡, 1017,1,オーガポン, @@ -11176,7 +11176,7 @@ pokemon_species_id,local_language_id,name,genus 1017,6,Ogerpon, 1017,7,Ogerpon, 1017,8,Ogerpon, -1017,9,Ogerpon, +1017,9,Ogerpon,Mask Pokémon 1017,11,オーガポン, 1017,12,厄诡椪, 1018,1,ブリジュラス,ごうきんポケモン @@ -11206,7 +11206,7 @@ pokemon_species_id,local_language_id,name,genus 1020,6,Keilflamme, 1020,7,Flamariete, 1020,8,Vampeaguzze, -1020,9,Gouging Fire,Paladox Pokémon +1020,9,Gouging Fire,Paradox Pokémon 1020,11,ウガツホムラ,パラドックスポケモン 1020,12,破空焰, 1021,1,タケルライコ,パラドックスポケモン @@ -11216,7 +11216,7 @@ pokemon_species_id,local_language_id,name,genus 1021,6,Furienblitz, 1021,7,Electrofuria, 1021,8,Furiatonante, -1021,9,Raging Bolt,Paladox Pokémon +1021,9,Raging Bolt,Paradox Pokémon 1021,11,タケルライコ,パラドックスポケモン 1021,12,猛雷鼓, 1022,1,テツノイワオ,パラドックスポケモン @@ -11226,7 +11226,7 @@ pokemon_species_id,local_language_id,name,genus 1022,6,Eisenfels, 1022,7,Ferromole, 1022,8,Massoferreo, -1022,9,Iron Boulder,Paladox Pokémon +1022,9,Iron Boulder,Paradox Pokémon 1022,11,テツノイワオ,パラドックスポケモン 1022,12,鐵磐岩, 1023,1,テツノカシラ,パラドックスポケモン @@ -11236,7 +11236,7 @@ pokemon_species_id,local_language_id,name,genus 1023,6,Eisenhaupt, 1023,7,Ferrotesta, 1023,8,Capoferreo, -1023,9,Iron Crown,Paladox Pokémon +1023,9,Iron Crown,Paradox Pokémon 1023,11,テツノカシラ,パラドックスポケモン 1023,12,鐵頭殼, 1024,1,テラパゴス,テラスタルポケモン diff --git a/data/v2/csv/type_names.csv b/data/v2/csv/type_names.csv index 5a4b834a..a57cba16 100644 --- a/data/v2/csv/type_names.csv +++ b/data/v2/csv/type_names.csv @@ -179,6 +179,16 @@ type_id,local_language_id,name 18,9,Fairy 18,11,フェアリー 18,12,妖精 +19,1,ステラ +19,2, Stella +19,3, 스텔라 +19,4,星晶 +19,5,Stellaire +19,6,Stellar +19,7,Astral +19,8,Astrale +19,9,Stellar +19,11,ステラ 10001,1,??? 10001,3,??? 10001,4,??? diff --git a/data/v2/csv/types.csv b/data/v2/csv/types.csv index 0603c393..d0ec10c3 100644 --- a/data/v2/csv/types.csv +++ b/data/v2/csv/types.csv @@ -17,5 +17,6 @@ id,identifier,generation_id,damage_class_id 16,dragon,1,3 17,dark,2,3 18,fairy,6, +19,stellar,9, 10001,unknown,2, 10002,shadow,3, diff --git a/default.nix b/default.nix new file mode 100644 index 00000000..c85dbe3e --- /dev/null +++ b/default.nix @@ -0,0 +1,32 @@ +with import { }; +pkgs.mkShell { + name = "onix-shellder"; + venvDir = "./.venv"; + buildInputs = [ + python310Packages.python + python310Packages.venvShellHook + + # Required dependancies + black + taglib + openssl + git + libxml2 + libxslt + libzip + zlib + ]; + + # Run this command, only after creating the virtual environment + postVenvCreation = '' + unset SOURCE_DATE_EPOCH + pip install -r requirements.txt + ''; + + postShellHook = '' + # allow pip to install wheels + unset SOURCE_DATE_EPOCH + zsh -l + ''; + +} diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index 77e0dc5e..4df009e6 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -6,4 +6,4 @@ services: context: . dockerfile: ./Resources/docker/app/Dockerfile -# docker-compose -f docker-compose.yml -f docker-compose-dev.yml up -d +# docker compose -f docker-compose.yml -f docker-compose-dev.yml up -d diff --git a/graphql/metadata/databases/default/tables/public_pokemon_v2_pokemon.yaml b/graphql/metadata/databases/default/tables/public_pokemon_v2_pokemon.yaml index 27851bc1..4c7308c5 100644 --- a/graphql/metadata/databases/default/tables/public_pokemon_v2_pokemon.yaml +++ b/graphql/metadata/databases/default/tables/public_pokemon_v2_pokemon.yaml @@ -27,6 +27,13 @@ array_relationships: table: name: pokemon_v2_pokemonabilitypast schema: public + - name: pokemon_v2_pokemoncries + using: + foreign_key_constraint_on: + column: pokemon_id + table: + name: pokemon_v2_pokemoncries + schema: public - name: pokemon_v2_pokemonforms using: foreign_key_constraint_on: diff --git a/graphql/metadata/databases/default/tables/public_pokemon_v2_pokemonabilitypast.yaml b/graphql/metadata/databases/default/tables/public_pokemon_v2_pokemonabilitypast.yaml index 9e349111..bd9da154 100644 --- a/graphql/metadata/databases/default/tables/public_pokemon_v2_pokemonabilitypast.yaml +++ b/graphql/metadata/databases/default/tables/public_pokemon_v2_pokemonabilitypast.yaml @@ -11,3 +11,10 @@ object_relationships: - name: pokemon_v2_pokemon using: foreign_key_constraint_on: pokemon_id +select_permissions: + - role: anon + permission: + columns: '*' + filter: {} + limit: 100000 + allow_aggregations: true diff --git a/graphql/metadata/databases/default/tables/public_pokemon_v2_pokemoncries.yaml b/graphql/metadata/databases/default/tables/public_pokemon_v2_pokemoncries.yaml new file mode 100644 index 00000000..df3cde64 --- /dev/null +++ b/graphql/metadata/databases/default/tables/public_pokemon_v2_pokemoncries.yaml @@ -0,0 +1,14 @@ +table: + name: pokemon_v2_pokemoncries + schema: public +object_relationships: + - name: pokemon_v2_pokemon + using: + foreign_key_constraint_on: pokemon_id +select_permissions: + - role: anon + permission: + columns: '*' + filter: {} + limit: 100000 + allow_aggregations: true diff --git a/graphql/metadata/databases/default/tables/public_pokemon_v2_typeefficacypast.yaml b/graphql/metadata/databases/default/tables/public_pokemon_v2_typeefficacypast.yaml index 4c71b2b0..8c0d6de8 100644 --- a/graphql/metadata/databases/default/tables/public_pokemon_v2_typeefficacypast.yaml +++ b/graphql/metadata/databases/default/tables/public_pokemon_v2_typeefficacypast.yaml @@ -11,3 +11,10 @@ object_relationships: - name: pokemon_v2_type using: foreign_key_constraint_on: damage_type_id +select_permissions: + - role: anon + permission: + columns: '*' + filter: {} + limit: 100000 + allow_aggregations: true diff --git a/graphql/metadata/databases/default/tables/tables.yaml b/graphql/metadata/databases/default/tables/tables.yaml index 2e330142..85ecc995 100644 --- a/graphql/metadata/databases/default/tables/tables.yaml +++ b/graphql/metadata/databases/default/tables/tables.yaml @@ -110,6 +110,7 @@ - "!include public_pokemon_v2_pokemonabilitypast.yaml" - "!include public_pokemon_v2_pokemoncolor.yaml" - "!include public_pokemon_v2_pokemoncolorname.yaml" +- "!include public_pokemon_v2_pokemoncries.yaml" - "!include public_pokemon_v2_pokemondexnumber.yaml" - "!include public_pokemon_v2_pokemonegggroup.yaml" - "!include public_pokemon_v2_pokemonevolution.yaml" diff --git a/openapi.yml b/openapi.yml new file mode 100644 index 00000000..e2c77654 --- /dev/null +++ b/openapi.yml @@ -0,0 +1,9333 @@ +openapi: 3.1.0 +info: + title: PokéAPI + version: 2.7.0 + description: "All the Pokémon data you'll ever need in one place, easily accessible\ + \ through a modern free open-source RESTful API.\n\n## What is this?\n\nThis is\ + \ a full RESTful API linked to an extensive database detailing everything about\ + \ the Pokémon main game series.\n\nWe've covered everything from Pokémon to Berry\ + \ Flavors.\n\n## Where do I start?\n\nWe have awesome [documentation](https://pokeapi.co/docs/v2)\ + \ on how to use this API. It takes minutes to get started.\n\nThis API will always\ + \ be publicly available and will never require any extensive setup process to\ + \ consume.\n\nCreated by [**Paul Hallett**(]https://github.com/phalt) and other\ + \ [**PokéAPI contributors***](https://github.com/PokeAPI/pokeapi#contributing)\ + \ around the world. Pokémon and Pokémon character names are trademarks of Nintendo.\n\ + \ " +paths: + /api/v2/ability/: + get: + operationId: ability_list + description: Abilities provide passive effects for Pokémon in battle or in the + overworld. Pokémon have multiple possible abilities but can have only one + ability at a time. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Ability) + for greater detail. + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedAbilitySummaryList' + description: '' + /api/v2/ability/{id}/: + get: + operationId: ability_retrieve + description: Abilities provide passive effects for Pokémon in battle or in the + overworld. Pokémon have multiple possible abilities but can have only one + ability at a time. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Ability) + for greater detail. + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/AbilityDetail' + description: '' + /api/v2/berry/: + get: + operationId: berry_list + description: Berries are small fruits that can provide HP and status condition + restoration, stat enhancement, and even damage negation when eaten by Pokémon. + Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Berry) for greater + detail. + summary: List berries + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - berries + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedBerrySummaryList' + description: '' + /api/v2/berry-firmness/: + get: + operationId: berry_firmness_list + description: Berries can be soft or hard. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Category:Berries_by_firmness) + for greater detail. + summary: List berry firmness + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - berries + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedBerryFirmnessSummaryList' + description: '' + /api/v2/berry-firmness/{id}/: + get: + operationId: berry_firmness_retrieve + description: Berries can be soft or hard. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Category:Berries_by_firmness) + for greater detail. + summary: Get berry by firmness + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - berries + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/BerryFirmnessDetail' + description: '' + /api/v2/berry-flavor/: + get: + operationId: berry_flavor_list + description: Flavors determine whether a Pokémon will benefit or suffer from + eating a berry based on their **nature**. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Flavor) + for greater detail. + summary: List berry flavors + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - berries + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedBerryFlavorSummaryList' + description: '' + /api/v2/berry-flavor/{id}/: + get: + operationId: berry_flavor_retrieve + description: Flavors determine whether a Pokémon will benefit or suffer from + eating a berry based on their **nature**. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Flavor) + for greater detail. + summary: Get berries by flavor + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - berries + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/BerryFlavorDetail' + description: '' + /api/v2/berry/{id}/: + get: + operationId: berry_retrieve + description: Berries are small fruits that can provide HP and status condition + restoration, stat enhancement, and even damage negation when eaten by Pokémon. + Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Berry) for greater + detail. + summary: Get a berry + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - berries + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/BerryDetail' + description: '' + /api/v2/characteristic/: + get: + operationId: characteristic_list + description: Characteristics indicate which stat contains a Pokémon's highest + IV. A Pokémon's Characteristic is determined by the remainder of its highest + IV divided by 5 (gene_modulo). Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Characteristic) + for greater detail. + summary: List charecterictics + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedCharacteristicSummaryList' + description: '' + /api/v2/characteristic/{id}/: + get: + operationId: characteristic_retrieve + description: Characteristics indicate which stat contains a Pokémon's highest + IV. A Pokémon's Characteristic is determined by the remainder of its highest + IV divided by 5 (gene_modulo). Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Characteristic) + for greater detail. + summary: Get characteristic + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/CharacteristicDetail' + description: '' + /api/v2/contest-effect/: + get: + operationId: contest_effect_list + description: Contest effects refer to the effects of moves when used in contests. + summary: List contest effects + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - contests + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedContestEffectSummaryList' + description: '' + /api/v2/contest-effect/{id}/: + get: + operationId: contest_effect_retrieve + description: Contest effects refer to the effects of moves when used in contests. + summary: Get contest effect + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - contests + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ContestEffectDetail' + description: '' + /api/v2/contest-type/: + get: + operationId: contest_type_list + description: Contest types are categories judges used to weigh a Pokémon's condition + in Pokémon contests. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Contest_condition) + for greater detail. + summary: List contest types + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - contests + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedContestTypeSummaryList' + description: '' + /api/v2/contest-type/{id}/: + get: + operationId: contest_type_retrieve + description: Contest types are categories judges used to weigh a Pokémon's condition + in Pokémon contests. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Contest_condition) + for greater detail. + summary: Get contest type + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - contests + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ContestTypeDetail' + description: '' + /api/v2/egg-group/: + get: + operationId: egg_group_list + description: Egg Groups are categories which determine which Pokémon are able + to interbreed. Pokémon may belong to either one or two Egg Groups. Check out + [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Egg_Group) for greater + detail. + summary: List egg groups + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedEggGroupSummaryList' + description: '' + /api/v2/egg-group/{id}/: + get: + operationId: egg_group_retrieve + description: Egg Groups are categories which determine which Pokémon are able + to interbreed. Pokémon may belong to either one or two Egg Groups. Check out + [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Egg_Group) for greater + detail. + summary: Get egg group + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EggGroupDetail' + description: '' + /api/v2/encounter-condition/: + get: + operationId: encounter_condition_list + description: Conditions which affect what pokemon might appear in the wild, + e.g., day or night. + summary: List encounter conditions + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - encounters + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedEncounterConditionSummaryList' + description: '' + /api/v2/encounter-condition-value/: + get: + operationId: encounter_condition_value_list + description: Encounter condition values are the various states that an encounter + condition can have, i.e., time of day can be either day or night. + summary: List encounter condition values + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - encounters + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedEncounterConditionValueSummaryList' + description: '' + /api/v2/encounter-condition-value/{id}/: + get: + operationId: encounter_condition_value_retrieve + description: Encounter condition values are the various states that an encounter + condition can have, i.e., time of day can be either day or night. + summary: Get encounter condition value + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - encounters + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EncounterConditionValueDetail' + description: '' + /api/v2/encounter-condition/{id}/: + get: + operationId: encounter_condition_retrieve + description: Conditions which affect what pokemon might appear in the wild, + e.g., day or night. + summary: Get encounter condition + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - encounters + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EncounterConditionDetail' + description: '' + /api/v2/encounter-method/: + get: + operationId: encounter_method_list + description: Methods by which the player might can encounter Pokémon in the + wild, e.g., walking in tall grass. Check out Bulbapedia for greater detail. + summary: List encounter methods + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - encounters + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedEncounterMethodSummaryList' + description: '' + /api/v2/encounter-method/{id}/: + get: + operationId: encounter_method_retrieve + description: Methods by which the player might can encounter Pokémon in the + wild, e.g., walking in tall grass. Check out Bulbapedia for greater detail. + summary: Get encounter method + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - encounters + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EncounterMethodDetail' + description: '' + /api/v2/evolution-chain/: + get: + operationId: evolution_chain_list + description: Evolution chains are essentially family trees. They start with + the lowest stage within a family and detail evolution conditions for each + as well as Pokémon they can evolve into up through the hierarchy. + summary: List evolution chains + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - evolution + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedEvolutionChainSummaryList' + description: '' + /api/v2/evolution-chain/{id}/: + get: + operationId: evolution_chain_retrieve + description: Evolution chains are essentially family trees. They start with + the lowest stage within a family and detail evolution conditions for each + as well as Pokémon they can evolve into up through the hierarchy. + summary: Get evolution chain + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - evolution + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EvolutionChainDetail' + description: '' + /api/v2/evolution-trigger/: + get: + operationId: evolution_trigger_list + description: Evolution triggers are the events and conditions that cause a Pokémon + to evolve. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Methods_of_evolution) + for greater detail. + summary: List evolution triggers + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - evolution + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedEvolutionTriggerSummaryList' + description: '' + /api/v2/evolution-trigger/{id}/: + get: + operationId: evolution_trigger_retrieve + description: Evolution triggers are the events and conditions that cause a Pokémon + to evolve. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Methods_of_evolution) + for greater detail. + summary: Get evolution trigger + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - evolution + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EvolutionTriggerDetail' + description: '' + /api/v2/gender/: + get: + operationId: gender_list + description: Genders were introduced in Generation II for the purposes of breeding + Pokémon but can also result in visual differences or even different evolutionary + lines. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Gender) + for greater detail. + summary: List genders + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedGenderSummaryList' + description: '' + /api/v2/gender/{id}/: + get: + operationId: gender_retrieve + description: Genders were introduced in Generation II for the purposes of breeding + Pokémon but can also result in visual differences or even different evolutionary + lines. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Gender) + for greater detail. + summary: Get gender + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GenderDetail' + description: '' + /api/v2/generation/: + get: + operationId: generation_list + description: A generation is a grouping of the Pokémon games that separates + them based on the Pokémon they include. In each generation, a new set of Pokémon, + Moves, Abilities and Types that did not exist in the previous generation are + released. + summary: List genrations + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - games + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedGenerationSummaryList' + description: '' + /api/v2/generation/{id}/: + get: + operationId: generation_retrieve + description: A generation is a grouping of the Pokémon games that separates + them based on the Pokémon they include. In each generation, a new set of Pokémon, + Moves, Abilities and Types that did not exist in the previous generation are + released. + summary: Get genration + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - games + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GenerationDetail' + description: '' + /api/v2/growth-rate/: + get: + operationId: growth_rate_list + description: Growth rates are the speed with which Pokémon gain levels through + experience. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Experience) + for greater detail. + summary: List growth rates + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedGrowthRateSummaryList' + description: '' + /api/v2/growth-rate/{id}/: + get: + operationId: growth_rate_retrieve + description: Growth rates are the speed with which Pokémon gain levels through + experience. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Experience) + for greater detail. + summary: Get growth rate + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GrowthRateDetail' + description: '' + /api/v2/item/: + get: + operationId: item_list + description: An item is an object in the games which the player can pick up, + keep in their bag, and use in some manner. They have various uses, including + healing, powering up, helping catch Pokémon, or to access a new area. + summary: List items + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - items + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedItemSummaryList' + description: '' + /api/v2/item-attribute/: + get: + operationId: item_attribute_list + description: Item attributes define particular aspects of items, e.g."usable + in battle" or "consumable". + summary: List item attributes + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - items + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedItemAttributeSummaryList' + description: '' + /api/v2/item-attribute/{id}/: + get: + operationId: item_attribute_retrieve + description: Item attributes define particular aspects of items, e.g."usable + in battle" or "consumable". + summary: Get item attribute + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - items + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ItemAttributeDetail' + description: '' + /api/v2/item-category/: + get: + operationId: item_category_list + description: Item categories determine where items will be placed in the players + bag. + summary: List item categories + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - items + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedItemCategorySummaryList' + description: '' + /api/v2/item-category/{id}/: + get: + operationId: item_category_retrieve + description: Item categories determine where items will be placed in the players + bag. + summary: Get item category + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - items + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ItemCategoryDetail' + description: '' + /api/v2/item-fling-effect/: + get: + operationId: item_fling_effect_list + description: The various effects of the move"Fling" when used with different + items. + summary: List item fling effects + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - items + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedItemFlingEffectSummaryList' + description: '' + /api/v2/item-fling-effect/{id}/: + get: + operationId: item_fling_effect_retrieve + description: The various effects of the move"Fling" when used with different + items. + summary: Get item fling effect + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - items + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ItemFlingEffectDetail' + description: '' + /api/v2/item-pocket/: + get: + operationId: item_pocket_list + description: Pockets within the players bag used for storing items by category. + summary: List item pockets + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - items + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedItemPocketSummaryList' + description: '' + /api/v2/item-pocket/{id}/: + get: + operationId: item_pocket_retrieve + description: Pockets within the players bag used for storing items by category. + summary: Get item pocket + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - items + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ItemPocketDetail' + description: '' + /api/v2/item/{id}/: + get: + operationId: item_retrieve + description: An item is an object in the games which the player can pick up, + keep in their bag, and use in some manner. They have various uses, including + healing, powering up, helping catch Pokémon, or to access a new area. + summary: Get item + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - items + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ItemDetail' + description: '' + /api/v2/language/: + get: + operationId: language_list + description: Languages for translations of API resource information. + summary: List languages + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - utility + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedLanguageSummaryList' + description: '' + /api/v2/language/{id}/: + get: + operationId: language_retrieve + description: Languages for translations of API resource information. + summary: Get language + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - utility + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/LanguageDetail' + description: '' + /api/v2/location/: + get: + operationId: location_list + description: Locations that can be visited within the games. Locations make + up sizable portions of regions, like cities or routes. + summary: List locations + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - location + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedLocationSummaryList' + description: '' + /api/v2/location-area/: + get: + operationId: location_area_list + description: Location areas are sections of areas, such as floors in a building + or cave. Each area has its own set of possible Pokémon encounters. + summary: List location areas + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + tags: + - location + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedLocationAreaSummaryList' + description: '' + /api/v2/location-area/{id}/: + get: + operationId: location_area_retrieve + description: Location areas are sections of areas, such as floors in a building + or cave. Each area has its own set of possible Pokémon encounters. + summary: Get location area + parameters: + - in: path + name: id + schema: + type: integer + description: A unique integer value identifying this location area. + required: true + tags: + - location + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/LocationAreaDetail' + description: '' + /api/v2/location/{id}/: + get: + operationId: location_retrieve + description: Locations that can be visited within the games. Locations make + up sizable portions of regions, like cities or routes. + summary: Get location + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - location + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/LocationDetail' + description: '' + /api/v2/machine/: + get: + operationId: machine_list + description: Machines are the representation of items that teach moves to Pokémon. + They vary from version to version, so it is not certain that one specific + TM or HM corresponds to a single Machine. + summary: List machines + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - machines + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedMachineSummaryList' + description: '' + /api/v2/machine/{id}/: + get: + operationId: machine_retrieve + description: Machines are the representation of items that teach moves to Pokémon. + They vary from version to version, so it is not certain that one specific + TM or HM corresponds to a single Machine. + summary: Get machine + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - machines + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/MachineDetail' + description: '' + /api/v2/move/: + get: + operationId: move_list + description: Moves are the skills of Pokémon in battle. In battle, a Pokémon + uses one move each turn. Some moves (including those learned by Hidden Machine) + can be used outside of battle as well, usually for the purpose of removing + obstacles or exploring new areas. + summary: List moves + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - moves + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedMoveSummaryList' + description: '' + /api/v2/move-ailment/: + get: + operationId: move_ailment_list + description: Move Ailments are status conditions caused by moves used during + battle. See [Bulbapedia](https://bulbapedia.bulbagarden.net/wiki/Status_condition) + for greater detail. + summary: List move meta ailments + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - moves + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedMoveMetaAilmentSummaryList' + description: '' + /api/v2/move-ailment/{id}/: + get: + operationId: move_ailment_retrieve + description: Move Ailments are status conditions caused by moves used during + battle. See [Bulbapedia](https://bulbapedia.bulbagarden.net/wiki/Status_condition) + for greater detail. + summary: Get move meta ailment + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - moves + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/MoveMetaAilmentDetail' + description: '' + /api/v2/move-battle-style/: + get: + operationId: move_battle_style_list + description: Styles of moves when used in the Battle Palace. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Battle_Frontier_(Generation_III)) + for greater detail. + summary: List move battle styles + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - moves + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedMoveBattleStyleSummaryList' + description: '' + /api/v2/move-battle-style/{id}/: + get: + operationId: move_battle_style_retrieve + description: Styles of moves when used in the Battle Palace. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Battle_Frontier_(Generation_III)) + for greater detail. + summary: Get move battle style + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - moves + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/MoveBattleStyleDetail' + description: '' + /api/v2/move-category/: + get: + operationId: move_category_list + description: Very general categories that loosely group move effects. + summary: List move meta categories + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - moves + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedMoveMetaCategorySummaryList' + description: '' + /api/v2/move-category/{id}/: + get: + operationId: move_category_retrieve + description: Very general categories that loosely group move effects. + summary: Get move meta category + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - moves + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/MoveMetaCategoryDetail' + description: '' + /api/v2/move-damage-class/: + get: + operationId: move_damage_class_list + description: Damage classes moves can have, e.g. physical, special, or non-damaging. + summary: List move damage classes + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedMoveDamageClassSummaryList' + description: '' + /api/v2/move-damage-class/{id}/: + get: + operationId: move_damage_class_retrieve + description: Damage classes moves can have, e.g. physical, special, or non-damaging. + summary: Get move damage class + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/MoveDamageClassDetail' + description: '' + /api/v2/move-learn-method/: + get: + operationId: move_learn_method_list + description: Methods by which Pokémon can learn moves. + summary: List move learn methods + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - moves + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedMoveLearnMethodSummaryList' + description: '' + /api/v2/move-learn-method/{id}/: + get: + operationId: move_learn_method_retrieve + description: Methods by which Pokémon can learn moves. + summary: Get move learn method + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - moves + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/MoveLearnMethodDetail' + description: '' + /api/v2/move-target/: + get: + operationId: move_target_list + description: Targets moves can be directed at during battle. Targets can be + Pokémon, environments or even other moves. + summary: List move targets + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - moves + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedMoveTargetSummaryList' + description: '' + /api/v2/move-target/{id}/: + get: + operationId: move_target_retrieve + description: Targets moves can be directed at during battle. Targets can be + Pokémon, environments or even other moves. + summary: Get move target + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - moves + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/MoveTargetDetail' + description: '' + /api/v2/move/{id}/: + get: + operationId: move_retrieve + description: Moves are the skills of Pokémon in battle. In battle, a Pokémon + uses one move each turn. Some moves (including those learned by Hidden Machine) + can be used outside of battle as well, usually for the purpose of removing + obstacles or exploring new areas. + summary: Get move + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - moves + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/MoveDetail' + description: '' + /api/v2/nature/: + get: + operationId: nature_list + description: Natures influence how a Pokémon's stats grow. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Nature) + for greater detail. + summary: List natures + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedNatureSummaryList' + description: '' + /api/v2/nature/{id}/: + get: + operationId: nature_retrieve + description: Natures influence how a Pokémon's stats grow. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Nature) + for greater detail. + summary: Get nature + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/NatureDetail' + description: '' + /api/v2/pal-park-area/: + get: + operationId: pal_park_area_list + description: Areas used for grouping Pokémon encounters in Pal Park. They're + like habitats that are specific to Pal Park. + summary: List pal park areas + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - location + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedPalParkAreaSummaryList' + description: '' + /api/v2/pal-park-area/{id}/: + get: + operationId: pal_park_area_retrieve + description: Areas used for grouping Pokémon encounters in Pal Park. They're + like habitats that are specific to Pal Park. + summary: Get pal park area + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - location + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PalParkAreaDetail' + description: '' + /api/v2/pokeathlon-stat/: + get: + operationId: pokeathlon_stat_list + description: Pokeathlon Stats are different attributes of a Pokémon's performance + in Pokéathlons. In Pokéathlons, competitions happen on different courses; + one for each of the different Pokéathlon stats. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9athlon) + for greater detail. + summary: List pokeathlon stats + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedPokeathlonStatSummaryList' + description: '' + /api/v2/pokeathlon-stat/{id}/: + get: + operationId: pokeathlon_stat_retrieve + description: Pokeathlon Stats are different attributes of a Pokémon's performance + in Pokéathlons. In Pokéathlons, competitions happen on different courses; + one for each of the different Pokéathlon stats. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9athlon) + for greater detail. + summary: Get pokeathlon stat + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PokeathlonStatDetail' + description: '' + /api/v2/pokedex/: + get: + operationId: pokedex_list + description: A Pokédex is a handheld electronic encyclopedia device; one which + is capable of recording and retaining information of the various Pokémon in + a given region with the exception of the national dex and some smaller dexes + related to portions of a region. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Pokedex) + for greater detail. + summary: List pokedex + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - games + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedPokedexSummaryList' + description: '' + /api/v2/pokedex/{id}/: + get: + operationId: pokedex_retrieve + description: A Pokédex is a handheld electronic encyclopedia device; one which + is capable of recording and retaining information of the various Pokémon in + a given region with the exception of the national dex and some smaller dexes + related to portions of a region. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Pokedex) + for greater detail. + summary: Get pokedex + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - games + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PokedexDetail' + description: '' + /api/v2/pokemon/: + get: + operationId: pokemon_list + description: Pokémon are the creatures that inhabit the world of the Pokémon + games. They can be caught using Pokéballs and trained by battling with other + Pokémon. Each Pokémon belongs to a specific species but may take on a variant + which makes it differ from other Pokémon of the same species, such as base + stats, available abilities and typings. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9mon_(species)) + for greater detail. + summary: List pokemon + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedPokemonSummaryList' + description: '' + /api/v2/pokemon-color/: + get: + operationId: pokemon_color_list + description: Colors used for sorting Pokémon in a Pokédex. The color listed + in the Pokédex is usually the color most apparent or covering each Pokémon's + body. No orange category exists; Pokémon that are primarily orange are listed + as red or brown. + summary: List pokemon colors + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedPokemonColorSummaryList' + description: '' + /api/v2/pokemon-color/{id}/: + get: + operationId: pokemon_color_retrieve + description: Colors used for sorting Pokémon in a Pokédex. The color listed + in the Pokédex is usually the color most apparent or covering each Pokémon's + body. No orange category exists; Pokémon that are primarily orange are listed + as red or brown. + summary: Get pokemon color + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PokemonColorDetail' + description: '' + /api/v2/pokemon-form/: + get: + operationId: pokemon_form_list + description: Some Pokémon may appear in one of multiple, visually different + forms. These differences are purely cosmetic. For variations within a Pokémon + species, which do differ in more than just visuals, the 'Pokémon' entity is + used to represent such a variety. + summary: List pokemon forms + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedPokemonFormSummaryList' + description: '' + /api/v2/pokemon-form/{id}/: + get: + operationId: pokemon_form_retrieve + description: Some Pokémon may appear in one of multiple, visually different + forms. These differences are purely cosmetic. For variations within a Pokémon + species, which do differ in more than just visuals, the 'Pokémon' entity is + used to represent such a variety. + summary: Get pokemon form + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PokemonFormDetail' + description: '' + /api/v2/pokemon-habitat/: + get: + operationId: pokemon_habitat_list + description: Habitats are generally different terrain Pokémon can be found in + but can also be areas designated for rare or legendary Pokémon. + summary: List pokemom habitas + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedPokemonHabitatSummaryList' + description: '' + /api/v2/pokemon-habitat/{id}/: + get: + operationId: pokemon_habitat_retrieve + description: Habitats are generally different terrain Pokémon can be found in + but can also be areas designated for rare or legendary Pokémon. + summary: Get pokemom habita + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PokemonHabitatDetail' + description: '' + /api/v2/pokemon-shape/: + get: + operationId: pokemon_shape_list + description: Shapes used for sorting Pokémon in a Pokédex. + summary: List pokemon shapes + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedPokemonShapeSummaryList' + description: '' + /api/v2/pokemon-shape/{id}/: + get: + operationId: pokemon_shape_retrieve + description: Shapes used for sorting Pokémon in a Pokédex. + summary: Get pokemon shape + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PokemonShapeDetail' + description: '' + /api/v2/pokemon-species/: + get: + operationId: pokemon_species_list + description: A Pokémon Species forms the basis for at least one Pokémon. Attributes + of a Pokémon species are shared across all varieties of Pokémon within the + species. A good example is Wormadam; Wormadam is the species which can be + found in three different varieties, Wormadam-Trash, Wormadam-Sandy and Wormadam-Plant. + summary: List pokemon species + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedPokemonSpeciesSummaryList' + description: '' + /api/v2/pokemon-species/{id}/: + get: + operationId: pokemon_species_retrieve + description: A Pokémon Species forms the basis for at least one Pokémon. Attributes + of a Pokémon species are shared across all varieties of Pokémon within the + species. A good example is Wormadam; Wormadam is the species which can be + found in three different varieties, Wormadam-Trash, Wormadam-Sandy and Wormadam-Plant. + summary: Get pokemon species + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PokemonSpeciesDetail' + description: '' + /api/v2/pokemon/{id}/: + get: + operationId: pokemon_retrieve + description: Pokémon are the creatures that inhabit the world of the Pokémon + games. They can be caught using Pokéballs and trained by battling with other + Pokémon. Each Pokémon belongs to a specific species but may take on a variant + which makes it differ from other Pokémon of the same species, such as base + stats, available abilities and typings. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9mon_(species)) + for greater detail. + summary: Get pokemon + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PokemonDetail' + description: '' + /api/v2/pokemon/{pokemon_id}/encounters: + get: + operationId: pokemon_encounters_retrieve + description: Handles Pokemon Encounters as a sub-resource. + summary: Get pokemon encounter + parameters: + - in: path + name: pokemon_id + schema: + type: string + pattern: ^\d+$ + required: true + tags: + - encounters + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + type: array + items: + type: object + required: + - location_area + - version_details + properties: + location_area: + type: object + required: + - name + - url + properties: + name: + type: string + example: cerulean-city-area + url: + type: string + format: uri + example: https://pokeapi.co/api/v2/location-area/281/ + version_details: + type: array + items: + type: object + required: + - encounter_details + - max_chance + - version + properties: + encounter_details: + type: array + items: + type: object + required: + - chance + - condition_values + - max_level + - method + - min_level + properties: + chance: + type: number + example: 100 + condition_values: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + example: story-progress-beat-red + url: + type: string + format: uri + example: https://pokeapi.co/api/v2/encounter-condition-value/55/ + max_level: + type: number + example: 10 + method: + type: object + required: + - name + - url + properties: + name: + type: string + example: gift + url: + type: string + format: uri + example: https://pokeapi.co/api/v2/encounter-method/18/ + min_level: + type: number + example: 10 + max_chance: + type: number + example: 100 + version: + type: object + required: + - name + - url + properties: + name: + type: string + example: red + url: + type: string + format: uri + example: https://pokeapi.co/api/v2/version/1/ + description: '' + /api/v2/region/: + get: + operationId: region_list + description: A region is an organized area of the Pokémon world. Most often, + the main difference between regions is the species of Pokémon that can be + encountered within them. + summary: List regions + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - location + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedRegionSummaryList' + description: '' + /api/v2/region/{id}/: + get: + operationId: region_retrieve + description: A region is an organized area of the Pokémon world. Most often, + the main difference between regions is the species of Pokémon that can be + encountered within them. + summary: Get region + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - location + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/RegionDetail' + description: '' + /api/v2/stat/: + get: + operationId: stat_list + description: Stats determine certain aspects of battles. Each Pokémon has a + value for each stat which grows as they gain levels and can be altered momentarily + by effects in battles. + summary: List stats + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedStatSummaryList' + description: '' + /api/v2/stat/{id}/: + get: + operationId: stat_retrieve + description: Stats determine certain aspects of battles. Each Pokémon has a + value for each stat which grows as they gain levels and can be altered momentarily + by effects in battles. + summary: Get stat + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/StatDetail' + description: '' + /api/v2/super-contest-effect/: + get: + operationId: super_contest_effect_list + description: Super contest effects refer to the effects of moves when used in + super contests. + summary: List super contest effects + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - contests + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedSuperContestEffectSummaryList' + description: '' + /api/v2/super-contest-effect/{id}/: + get: + operationId: super_contest_effect_retrieve + description: Super contest effects refer to the effects of moves when used in + super contests. + summary: Get super contest effect + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - contests + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/SuperContestEffectDetail' + description: '' + /api/v2/type/: + get: + operationId: type_list + description: 'Types are properties for Pokémon and their moves. Each type has + three properties: which types of Pokémon it is super effective against, which + types of Pokémon it is not very effective against, and which types of Pokémon + it is completely ineffective against.' + summary: List types + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedTypeSummaryList' + description: '' + /api/v2/type/{id}/: + get: + operationId: type_retrieve + description: 'Types are properties for Pokémon and their moves. Each type has + three properties: which types of Pokémon it is super effective against, which + types of Pokémon it is not very effective against, and which types of Pokémon + it is completely ineffective against.' + summary: Get types + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - pokemon + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TypeDetail' + description: '' + /api/v2/version/: + get: + operationId: version_list + description: Versions of the games, e.g., Red, Blue or Yellow. + summary: List versions + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - games + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedVersionSummaryList' + description: '' + /api/v2/version-group/: + get: + operationId: version_group_list + description: Version groups categorize highly similar versions of the games. + summary: List version groups + parameters: + - name: limit + required: false + in: query + description: Number of results to return per page. + schema: + type: integer + - name: offset + required: false + in: query + description: The initial index from which to return the results. + schema: + type: integer + - in: query + name: q + schema: + type: string + description: "> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\n\ + Case-insensitive query applied on the `name` property. " + tags: + - games + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedVersionGroupSummaryList' + description: '' + /api/v2/version-group/{id}/: + get: + operationId: version_group_retrieve + description: Version groups categorize highly similar versions of the games. + summary: Get version group + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - games + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/VersionGroupDetail' + description: '' + /api/v2/version/{id}/: + get: + operationId: version_retrieve + description: Versions of the games, e.g., Red, Blue or Yellow. + summary: Get version + parameters: + - in: path + name: id + schema: + type: string + description: This parameter can be a string or an integer. + required: true + tags: + - games + security: + - cookieAuth: [] + - basicAuth: [] + - {} + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/VersionDetail' + description: '' +components: + schemas: + AbilityChange: + type: object + properties: + version_group: + $ref: '#/components/schemas/VersionGroupSummary' + effect_entries: + type: array + items: + $ref: '#/components/schemas/AbilityChangeEffectText' + readOnly: true + required: + - effect_entries + - version_group + AbilityChangeEffectText: + type: object + properties: + effect: + type: string + maxLength: 6000 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - effect + - language + AbilityDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + is_main_series: + type: boolean + generation: + $ref: '#/components/schemas/GenerationSummary' + names: + type: array + items: + $ref: '#/components/schemas/AbilityName' + readOnly: true + effect_entries: + type: array + items: + $ref: '#/components/schemas/AbilityEffectText' + readOnly: true + effect_changes: + type: array + items: + $ref: '#/components/schemas/AbilityChange' + readOnly: true + flavor_text_entries: + type: array + items: + $ref: '#/components/schemas/AbilityFlavorText' + readOnly: true + pokemon: + type: array + items: + type: object + required: + - is_hidden + - slot + - pokemon + properties: + is_hidden: + type: boolean + slot: + type: integer + format: int32 + examples: + - 3 + pokemon: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - gloom + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/pokemon/44/ + readOnly: true + required: + - effect_changes + - effect_entries + - flavor_text_entries + - generation + - id + - name + - names + - pokemon + AbilityEffectText: + type: object + properties: + effect: + type: string + maxLength: 6000 + short_effect: + type: string + maxLength: 300 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - effect + - language + - short_effect + AbilityFlavorText: + type: object + properties: + flavor_text: + type: string + language: + $ref: '#/components/schemas/LanguageSummary' + version_group: + $ref: '#/components/schemas/VersionGroupSummary' + required: + - flavor_text + - language + - version_group + AbilityName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + AbilitySummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + BerryDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + growth_time: + type: integer + max_harvest: + type: integer + natural_gift_power: + type: integer + size: + type: integer + smoothness: + type: integer + soil_dryness: + type: integer + firmness: + $ref: '#/components/schemas/BerryFirmnessSummary' + flavors: + type: array + items: + type: object + required: + - potency + - flavor + properties: + potency: + type: integer + examples: + - 10 + flavor: + type: object + require: + - name + - url + properties: + name: + type: string + description: The name of the flavor + examples: + - spicy + url: + type: string + format: uri + description: The URL to get more information about the flavor + examples: + - https://pokeapi.co/api/v2/berry-flavor/1/ + readOnly: true + item: + $ref: '#/components/schemas/ItemSummary' + natural_gift_type: + $ref: '#/components/schemas/TypeSummary' + required: + - firmness + - flavors + - growth_time + - id + - item + - max_harvest + - name + - natural_gift_power + - natural_gift_type + - size + - smoothness + - soil_dryness + BerryFirmnessDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + berries: + type: array + items: + $ref: '#/components/schemas/BerrySummary' + readOnly: true + names: + type: array + items: + $ref: '#/components/schemas/BerryFirmnessName' + readOnly: true + required: + - berries + - id + - name + - names + BerryFirmnessName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + BerryFirmnessSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + BerryFlavorDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + berries: + type: array + items: + type: object + required: + - potency + - berry + properties: + potency: + type: integer + examples: + - 10 + berry: + type: object + require: + - name + - url + properties: + name: + type: string + description: The name of the berry + examples: + - rowap + url: + type: string + format: uri + description: The URL to get more information about the berry + examples: + - https://pokeapi.co/api/v2/berry/64/ + readOnly: true + contest_type: + $ref: '#/components/schemas/ContestTypeSummary' + names: + type: array + items: + $ref: '#/components/schemas/BerryFlavorName' + readOnly: true + required: + - berries + - contest_type + - id + - name + - names + BerryFlavorName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + BerryFlavorSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + BerrySummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + CharacteristicDescription: + type: object + properties: + description: + type: string + maxLength: 1000 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + CharacteristicDetail: + type: object + properties: + id: + type: integer + readOnly: true + gene_modulo: + type: integer + possible_values: + type: array + items: + type: integer + format: int32 + examples: + - - 0 + - 5 + - 10 + - 15 + - 20 + - 25 + - 30 + readOnly: true + highest_stat: + $ref: '#/components/schemas/StatSummary' + descriptions: + type: array + items: + $ref: '#/components/schemas/CharacteristicDescription' + readOnly: true + required: + - descriptions + - gene_modulo + - highest_stat + - id + - possible_values + CharacteristicSummary: + type: object + properties: + url: + type: string + format: uri + readOnly: true + required: + - url + ContestEffectDetail: + type: object + properties: + id: + type: integer + readOnly: true + appeal: + type: integer + jam: + type: integer + effect_entries: + type: array + items: + $ref: '#/components/schemas/ContestEffectEffectText' + readOnly: true + flavor_text_entries: + type: array + items: + $ref: '#/components/schemas/ContestEffectFlavorText' + readOnly: true + required: + - appeal + - effect_entries + - flavor_text_entries + - id + - jam + ContestEffectEffectText: + type: object + properties: + effect: + type: string + maxLength: 6000 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - effect + - language + ContestEffectFlavorText: + type: object + properties: + flavor_text: + type: string + maxLength: 500 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - flavor_text + - language + ContestEffectSummary: + type: object + properties: + url: + type: string + format: uri + readOnly: true + required: + - url + ContestTypeDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + berry_flavor: + allOf: + - $ref: '#/components/schemas/BerryFlavorSummary' + readOnly: true + names: + type: array + items: + $ref: '#/components/schemas/ContestTypeName' + readOnly: true + required: + - berry_flavor + - id + - name + - names + ContestTypeName: + type: object + properties: + name: + type: string + maxLength: 100 + color: + type: string + maxLength: 10 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - color + - language + - name + ContestTypeSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + EggGroupDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + names: + type: array + items: + $ref: '#/components/schemas/EggGroupName' + readOnly: true + pokemon_species: + type: array + items: + type: object + required: + - potency + - flavor + properties: + name: + type: string + description: Pokemon species name. + examples: + - bulbasaur + url: + type: string + format: uri + description: The URL to get more information about the species + examples: + - https://pokeapi.co/api/v2/pokemon-species/1/ + readOnly: true + required: + - id + - name + - names + - pokemon_species + EggGroupName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + EggGroupSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + EncounterConditionDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + values: + type: array + items: + $ref: '#/components/schemas/EncounterConditionValueSummary' + readOnly: true + names: + type: array + items: + $ref: '#/components/schemas/EncounterConditionName' + readOnly: true + required: + - id + - name + - names + - values + EncounterConditionName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + EncounterConditionSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + EncounterConditionValueDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + condition: + $ref: '#/components/schemas/EncounterConditionSummary' + names: + type: array + items: + $ref: '#/components/schemas/EncounterConditionValueName' + readOnly: true + required: + - condition + - id + - name + - names + EncounterConditionValueName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + EncounterConditionValueSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + EncounterMethodDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + order: + type: + - integer + - 'null' + names: + type: array + items: + $ref: '#/components/schemas/EncounterMethodName' + readOnly: true + required: + - id + - name + - names + EncounterMethodName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + EncounterMethodSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + EvolutionChainDetail: + type: object + properties: + id: + type: integer + readOnly: true + baby_trigger_item: + $ref: '#/components/schemas/ItemSummary' + chain: + type: object + required: + - evolution_details + - evolves_to + - is_baby + - species + properties: + evolution_details: + type: array + items: {} + examples: [] + evolves_to: + type: array + items: + type: object + required: + - evolution_details + - evolves_to + - is_baby + - species + properties: + evolution_details: + type: array + items: + type: object + required: + - gender + - held_item + - item + - known_move + - known_move_type + - location + - min_affection + - min_beauty + - min_happiness + - min_level + - needs_overworld_rain + - party_species + - party_type + - relative_physical_stats + - time_of_day + - trade_species + - trigger + - turn_upside_down + properties: + gender: + type: object + nullable: true + required: + - name + - url + properties: + name: + type: string + examples: + - 1 + url: + type: string + format: uri + examples: + - 2 + held_item: + type: object + nullable: true + required: + - name + - url + properties: + name: + type: string + examples: + - 1 + url: + type: string + format: uri + examples: + - 2 + item: + type: object + nullable: true + required: + - name + - url + properties: + name: + type: string + examples: + - 1 + url: + type: string + format: uri + examples: + - 2 + known_move: + type: '' + nullable: true + known_move_type: + type: '' + nullable: true + location: + type: object + nullable: true + required: + - name + - url + properties: + name: + type: string + url: + type: string + format: uri + min_affection: + type: integer + format: int32 + nullable: true + min_beauty: + type: integer + format: int32 + nullable: true + min_happiness: + type: integer + format: int32 + nullable: true + min_level: + type: integer + format: int32 + nullable: true + needs_overworld_rain: + type: boolean + nullable: true + party_species: + type: string + nullable: true + party_type: + type: string + nullable: true + relative_physical_stats: + type: string + nullable: true + time_of_day: + type: string + trade_species: + type: string + nullable: true + trigger: + type: object + required: + - name + - url + properties: + name: + type: string + url: + type: string + format: uri + turn_upside_down: + type: boolean + is_baby: + type: boolean + species: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - happiny + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/pokemon-species/440/ + is_baby: + type: boolean + species: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - happiny + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/pokemon-species/440/ + readOnly: true + required: + - baby_trigger_item + - chain + - id + EvolutionChainSummary: + type: object + properties: + url: + type: string + format: uri + readOnly: true + required: + - url + EvolutionTriggerDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + names: + type: array + items: + $ref: '#/components/schemas/EvolutionTriggerName' + readOnly: true + pokemon_species: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - ivysaur + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/pokemon-species/2/ + readOnly: true + required: + - id + - name + - names + - pokemon_species + EvolutionTriggerName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + EvolutionTriggerSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + Experience: + type: object + properties: + level: + type: integer + experience: + type: integer + required: + - experience + - level + GenderDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + pokemon_species_details: + type: array + items: + type: object + required: + - rate + - pokemon_species + properties: + rate: + type: integer + format: int32 + examples: + - 1 + pokemon_species: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - bulbasaur + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/pokemon-species/1/ + readOnly: true + required_for_evolution: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - wormadam + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/pokemon-species/413/ + readOnly: true + required: + - id + - name + - pokemon_species_details + - required_for_evolution + GenderSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + GenerationDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + abilities: + type: array + items: + $ref: '#/components/schemas/AbilitySummary' + readOnly: true + main_region: + $ref: '#/components/schemas/RegionSummary' + moves: + type: array + items: + $ref: '#/components/schemas/MoveSummary' + readOnly: true + names: + type: array + items: + $ref: '#/components/schemas/GenerationName' + readOnly: true + pokemon_species: + type: array + items: + $ref: '#/components/schemas/PokemonSpeciesSummary' + readOnly: true + types: + type: array + items: + $ref: '#/components/schemas/TypeSummary' + readOnly: true + version_groups: + type: array + items: + $ref: '#/components/schemas/VersionGroupSummary' + readOnly: true + required: + - abilities + - id + - main_region + - moves + - name + - names + - pokemon_species + - types + - version_groups + GenerationName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + GenerationSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + GrowthRateDescription: + type: object + properties: + description: + type: string + maxLength: 1000 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + GrowthRateDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + formula: + type: string + maxLength: 500 + descriptions: + type: array + items: + $ref: '#/components/schemas/GrowthRateDescription' + readOnly: true + levels: + type: array + items: + $ref: '#/components/schemas/Experience' + readOnly: true + pokemon_species: + type: array + items: + $ref: '#/components/schemas/PokemonSpeciesSummary' + readOnly: true + required: + - descriptions + - formula + - id + - levels + - name + - pokemon_species + GrowthRateSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + ItemAttributeDescription: + type: object + properties: + description: + type: string + maxLength: 1000 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + ItemAttributeDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + descriptions: + type: array + items: + $ref: '#/components/schemas/ItemAttributeDescription' + readOnly: true + items: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - master-ball + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/item/1/ + readOnly: true + names: + type: array + items: + $ref: '#/components/schemas/ItemAttributeName' + readOnly: true + required: + - descriptions + - id + - items + - name + - names + ItemAttributeName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + ItemAttributeSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + ItemCategoryDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + items: + type: array + items: + $ref: '#/components/schemas/ItemSummary' + readOnly: true + names: + type: array + items: + $ref: '#/components/schemas/ItemCategoryName' + readOnly: true + pocket: + $ref: '#/components/schemas/ItemPocketSummary' + required: + - id + - items + - name + - names + - pocket + ItemCategoryName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + ItemCategorySummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + ItemDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + cost: + type: + - integer + - 'null' + fling_power: + type: + - integer + - 'null' + fling_effect: + $ref: '#/components/schemas/ItemFlingEffectSummary' + attributes: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - countable + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/item-attribute/1/ + readOnly: true + category: + $ref: '#/components/schemas/ItemCategorySummary' + effect_entries: + type: array + items: + $ref: '#/components/schemas/ItemEffectText' + readOnly: true + flavor_text_entries: + type: array + items: + $ref: '#/components/schemas/ItemFlavorText' + readOnly: true + game_indices: + type: array + items: + $ref: '#/components/schemas/ItemGameIndex' + readOnly: true + names: + type: array + items: + $ref: '#/components/schemas/ItemName' + readOnly: true + held_by_pokemon: + type: array + items: + type: object + required: + - pokemon + - version-details + properties: + pokemon: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - farfetchd + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/pokemon/83/ + version-details: + type: array + items: + type: object + required: + - rarity + - version + properties: + rarity: + type: integer + format: int32 + examples: + - 5 + version: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - ruby + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/version/7/ + readOnly: true + sprites: + type: object + required: + - default + properties: + default: + type: string + format: uri + examples: + - https://pokeapi.co/media/sprites/items/master-ball.png + readOnly: true + baby_trigger_for: + type: object + required: + - url + properties: + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/evolution-chain/51/ + readOnly: true + machines: + type: array + items: + type: object + required: + - machine + - version_group + properties: + machine: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/machine/1/ + version_group: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - sword-shield + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/version-group/20/ + readOnly: true + required: + - attributes + - baby_trigger_for + - category + - effect_entries + - flavor_text_entries + - fling_effect + - game_indices + - held_by_pokemon + - id + - machines + - name + - names + - sprites + ItemEffectText: + type: object + properties: + effect: + type: string + maxLength: 6000 + short_effect: + type: string + maxLength: 300 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - effect + - language + - short_effect + ItemFlavorText: + type: object + properties: + text: + type: string + version_group: + $ref: '#/components/schemas/VersionGroupSummary' + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - text + - version_group + ItemFlingEffectDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + effect_entries: + type: array + items: + $ref: '#/components/schemas/ItemFlingEffectEffectText' + readOnly: true + items: + type: array + items: + $ref: '#/components/schemas/ItemSummary' + readOnly: true + required: + - effect_entries + - id + - items + - name + ItemFlingEffectEffectText: + type: object + properties: + effect: + type: string + maxLength: 6000 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - effect + - language + ItemFlingEffectSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + ItemGameIndex: + type: object + properties: + game_index: + type: integer + generation: + $ref: '#/components/schemas/GenerationSummary' + required: + - game_index + - generation + ItemName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + ItemPocketDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + categories: + type: array + items: + $ref: '#/components/schemas/ItemCategorySummary' + readOnly: true + names: + type: array + items: + $ref: '#/components/schemas/ItemPocketName' + readOnly: true + required: + - categories + - id + - name + - names + ItemPocketName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + ItemPocketSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + ItemSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + LanguageDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + official: + type: boolean + iso639: + type: string + maxLength: 10 + iso3166: + type: string + maxLength: 2 + names: + type: array + items: + $ref: '#/components/schemas/LanguageName' + readOnly: true + required: + - id + - iso3166 + - iso639 + - name + - names + LanguageName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + LanguageSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + LocationAreaDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + game_index: + type: integer + encounter_method_rates: + type: array + items: + type: object + required: + - encounter_method + - version_details + properties: + encounter_method: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - old-rod + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/encounter-method/2/ + version_details: + type: array + items: + type: object + required: + - rate + - version + properties: + rate: + type: integer + format: int32 + examples: + - 5 + version: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - platinum + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/version/14/ + readOnly: true + location: + $ref: '#/components/schemas/LocationSummary' + names: + type: array + items: + $ref: '#/components/schemas/LocationAreaName' + readOnly: true + pokemon_encounters: + type: array + items: + type: object + required: + - pokemon + - version_details + properties: + pokemon: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - tentacool + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/pokemon/72/ + version_details: + type: array + items: + type: object + required: + - version + - max_chance + - encounter_details + properties: + version: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - diamond + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/version/12/ + max_chance: + type: integer + format: int32 + examples: + - 60 + encounter_details: + type: object + required: + - min_level + - max_level + - condition_value + - chance + - method + properties: + min_level: + type: integer + format: int32 + examples: + - 20 + max_level: + type: integer + format: int32 + examples: + - 30 + condition_values: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - slot2-sapphire + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/encounter-condition-value/10/ + chance: + type: integer + format: int32 + examples: + - 60 + method: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - surf + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/encounter-method/5/ + readOnly: true + required: + - encounter_method_rates + - game_index + - id + - location + - name + - names + - pokemon_encounters + LocationAreaName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + LocationAreaSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + LocationDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + region: + $ref: '#/components/schemas/RegionSummary' + names: + type: array + items: + $ref: '#/components/schemas/LocationName' + readOnly: true + game_indices: + type: array + items: + $ref: '#/components/schemas/LocationGameIndex' + readOnly: true + areas: + type: array + items: + $ref: '#/components/schemas/LocationAreaSummary' + readOnly: true + required: + - areas + - game_indices + - id + - name + - names + - region + LocationGameIndex: + type: object + properties: + game_index: + type: integer + generation: + $ref: '#/components/schemas/GenerationSummary' + required: + - game_index + - generation + LocationName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + LocationSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + MachineDetail: + type: object + properties: + id: + type: integer + readOnly: true + item: + $ref: '#/components/schemas/ItemSummary' + version_group: + $ref: '#/components/schemas/VersionGroupSummary' + move: + $ref: '#/components/schemas/MoveSummary' + required: + - id + - item + - move + - version_group + MachineSummary: + type: object + properties: + url: + type: string + format: uri + readOnly: true + required: + - url + MoveBattleStyleDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + names: + type: array + items: + $ref: '#/components/schemas/MoveBattleStyleName' + readOnly: true + required: + - id + - name + - names + MoveBattleStyleName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + MoveBattleStyleSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + MoveChange: + type: object + properties: + accuracy: + type: + - integer + - 'null' + power: + type: + - integer + - 'null' + pp: + type: + - integer + - 'null' + effect_chance: + type: integer + effect_entries: + type: array + items: + type: object + required: + - effect + - short_effect + - language + properties: + effect: + type: string + examples: + - Inflicts [regular damage]{mechanic:regular-damage}. + short_effect: + type: string + examples: + - Inflicts regular damage with no additional effect. + language: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - en + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/language/9/ + readOnly: true + type: + $ref: '#/components/schemas/TypeSummary' + version_group: + $ref: '#/components/schemas/VersionGroupSummary' + required: + - effect_chance + - effect_entries + - type + - version_group + MoveDamageClassDescription: + type: object + properties: + description: + type: string + maxLength: 1000 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + MoveDamageClassDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + descriptions: + type: array + items: + $ref: '#/components/schemas/MoveDamageClassDescription' + readOnly: true + moves: + type: array + items: + $ref: '#/components/schemas/MoveSummary' + readOnly: true + names: + type: array + items: + $ref: '#/components/schemas/MoveDamageClassName' + readOnly: true + required: + - descriptions + - id + - moves + - name + - names + MoveDamageClassName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + MoveDamageClassSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + MoveDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + accuracy: + type: + - integer + - 'null' + effect_chance: + type: integer + pp: + type: + - integer + - 'null' + priority: + type: + - integer + - 'null' + power: + type: + - integer + - 'null' + contest_combos: + type: object + required: + - normal + - super + properties: + normal: + type: object + required: + - use_before + - use_after + properties: + use_before: + type: array + nullable: true + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - fire-punch + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/move/7/ + use_after: + type: array + nullable: true + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - ice-punch + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/move/8/ + super: + type: object + required: + - use_before + - use_after + properties: + use_before: + type: array + nullable: true + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - night-slash + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/move/400/ + use_after: + type: array + nullable: true + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - focus-energy + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/move/116/ + readOnly: true + contest_type: + $ref: '#/components/schemas/ContestTypeSummary' + contest_effect: + $ref: '#/components/schemas/ContestEffectSummary' + damage_class: + $ref: '#/components/schemas/MoveDamageClassSummary' + effect_entries: + type: array + items: + type: object + required: + - effect + - short_effect + - language + properties: + effect: + type: string + examples: + - Inflicts [regular damage]{mechanic:regular-damage}. + short_effect: + type: string + examples: + - Inflicts regular damage with no additional effect. + language: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - en + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/language/9/ + readOnly: true + effect_changes: + type: array + items: + type: object + required: + - effect_entries + - version_group + properties: + effect_entries: + type: array + items: + type: object + required: + - effect + - language + properties: + effect: + type: string + examples: + - Hits Pokémon under the effects of dig and fly. + language: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - en + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/language/9/ + version_group: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - gold-silver + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/version-group/3/ + readOnly: true + generation: + $ref: '#/components/schemas/GenerationSummary' + meta: + allOf: + - $ref: '#/components/schemas/MoveMeta' + readOnly: true + names: + type: array + items: + $ref: '#/components/schemas/MoveName' + readOnly: true + past_values: + type: array + items: + $ref: '#/components/schemas/MoveChange' + readOnly: true + stat_changes: + type: array + items: + type: object + required: + - change + - stat + properties: + change: + type: integer + format: int32 + examples: + - 2 + stat: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - attack + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/stat/1/ + readOnly: true + super_contest_effect: + $ref: '#/components/schemas/SuperContestEffectSummary' + target: + $ref: '#/components/schemas/MoveTargetSummary' + type: + $ref: '#/components/schemas/TypeSummary' + machines: + type: array + items: + type: object + required: + - machine + - version_group + properties: + machine: + type: object + required: + - url + properties: + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/machine/1/ + version_group: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - sword-shield + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/version-group/1/ + readOnly: true + flavor_text_entries: + type: array + items: + $ref: '#/components/schemas/MoveFlavorText' + readOnly: true + learned_by_pokemon: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - clefairy + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/pokemon/35/ + readOnly: true + required: + - contest_combos + - contest_effect + - contest_type + - damage_class + - effect_chance + - effect_changes + - effect_entries + - flavor_text_entries + - generation + - id + - learned_by_pokemon + - machines + - meta + - name + - names + - past_values + - stat_changes + - super_contest_effect + - target + - type + MoveFlavorText: + type: object + properties: + flavor_text: + type: string + language: + $ref: '#/components/schemas/LanguageSummary' + version_group: + $ref: '#/components/schemas/VersionGroupSummary' + required: + - flavor_text + - language + - version_group + MoveLearnMethodDescription: + type: object + properties: + description: + type: string + maxLength: 1000 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + MoveLearnMethodDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + names: + type: array + items: + $ref: '#/components/schemas/MoveLearnMethodName' + readOnly: true + descriptions: + type: array + items: + $ref: '#/components/schemas/MoveLearnMethodDescription' + readOnly: true + version_groups: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - red-blue + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/version-group/1/ + readOnly: true + required: + - descriptions + - id + - name + - names + - version_groups + MoveLearnMethodName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + MoveLearnMethodSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + MoveMeta: + type: object + properties: + ailment: + $ref: '#/components/schemas/MoveMetaAilmentSummary' + category: + $ref: '#/components/schemas/MoveMetaCategorySummary' + min_hits: + type: + - integer + - 'null' + max_hits: + type: + - integer + - 'null' + min_turns: + type: + - integer + - 'null' + max_turns: + type: + - integer + - 'null' + drain: + type: + - integer + - 'null' + healing: + type: + - integer + - 'null' + crit_rate: + type: + - integer + - 'null' + ailment_chance: + type: + - integer + - 'null' + flinch_chance: + type: + - integer + - 'null' + stat_chance: + type: + - integer + - 'null' + required: + - ailment + - category + MoveMetaAilmentDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + moves: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - thunder-punch + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/move/9/ + readOnly: true + names: + type: array + items: + $ref: '#/components/schemas/MoveMetaAilmentName' + readOnly: true + required: + - id + - moves + - name + - names + MoveMetaAilmentName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + MoveMetaAilmentSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + MoveMetaCategoryDescription: + type: object + properties: + description: + type: string + maxLength: 1000 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + MoveMetaCategoryDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + descriptions: + type: array + items: + $ref: '#/components/schemas/MoveMetaCategoryDescription' + readOnly: true + moves: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - sing + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/move/47/ + readOnly: true + required: + - descriptions + - id + - moves + - name + MoveMetaCategorySummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + MoveName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + MoveSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + MoveTargetDescription: + type: object + properties: + description: + type: string + maxLength: 1000 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + MoveTargetDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + descriptions: + type: array + items: + $ref: '#/components/schemas/MoveTargetDescription' + readOnly: true + moves: + type: array + items: + $ref: '#/components/schemas/MoveSummary' + readOnly: true + names: + type: array + items: + $ref: '#/components/schemas/MoveTargetName' + readOnly: true + required: + - descriptions + - id + - moves + - name + - names + MoveTargetName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + MoveTargetSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + NatureBattleStylePreference: + type: object + properties: + low_hp_preference: + type: integer + high_hp_preference: + type: integer + move_battle_style: + $ref: '#/components/schemas/MoveBattleStyleSummary' + required: + - high_hp_preference + - low_hp_preference + - move_battle_style + NatureDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + decreased_stat: + $ref: '#/components/schemas/StatSummary' + increased_stat: + $ref: '#/components/schemas/StatSummary' + likes_flavor: + $ref: '#/components/schemas/BerryFlavorSummary' + hates_flavor: + $ref: '#/components/schemas/BerryFlavorSummary' + berries: + type: array + items: + $ref: '#/components/schemas/BerrySummary' + readOnly: true + pokeathlon_stat_changes: + type: array + items: + type: object + required: + - max_change + - pokeathlon_stat + properties: + max_change: + type: integer + format: int32 + examples: + - 1 + pokeathlon_stat: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - power + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/pokeathlon-stat/2/ + readOnly: true + move_battle_style_preferences: + type: array + items: + $ref: '#/components/schemas/NatureBattleStylePreference' + readOnly: true + names: + type: array + items: + $ref: '#/components/schemas/NatureName' + readOnly: true + required: + - berries + - decreased_stat + - hates_flavor + - id + - increased_stat + - likes_flavor + - move_battle_style_preferences + - name + - names + - pokeathlon_stat_changes + NatureName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + NatureSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + PaginatedAbilitySummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/AbilitySummary' + PaginatedBerryFirmnessSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/BerryFirmnessSummary' + PaginatedBerryFlavorSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/BerryFlavorSummary' + PaginatedBerrySummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/BerrySummary' + PaginatedCharacteristicSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/CharacteristicSummary' + PaginatedContestEffectSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/ContestEffectSummary' + PaginatedContestTypeSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/ContestTypeSummary' + PaginatedEggGroupSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/EggGroupSummary' + PaginatedEncounterConditionSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/EncounterConditionSummary' + PaginatedEncounterConditionValueSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/EncounterConditionValueSummary' + PaginatedEncounterMethodSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/EncounterMethodSummary' + PaginatedEvolutionChainSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/EvolutionChainSummary' + PaginatedEvolutionTriggerSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/EvolutionTriggerSummary' + PaginatedGenderSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/GenderSummary' + PaginatedGenerationSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/GenerationSummary' + PaginatedGrowthRateSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/GrowthRateSummary' + PaginatedItemAttributeSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/ItemAttributeSummary' + PaginatedItemCategorySummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/ItemCategorySummary' + PaginatedItemFlingEffectSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/ItemFlingEffectSummary' + PaginatedItemPocketSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/ItemPocketSummary' + PaginatedItemSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/ItemSummary' + PaginatedLanguageSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/LanguageSummary' + PaginatedLocationAreaSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/LocationAreaSummary' + PaginatedLocationSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/LocationSummary' + PaginatedMachineSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/MachineSummary' + PaginatedMoveBattleStyleSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/MoveBattleStyleSummary' + PaginatedMoveDamageClassSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/MoveDamageClassSummary' + PaginatedMoveLearnMethodSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/MoveLearnMethodSummary' + PaginatedMoveMetaAilmentSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/MoveMetaAilmentSummary' + PaginatedMoveMetaCategorySummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/MoveMetaCategorySummary' + PaginatedMoveSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/MoveSummary' + PaginatedMoveTargetSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/MoveTargetSummary' + PaginatedNatureSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/NatureSummary' + PaginatedPalParkAreaSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/PalParkAreaSummary' + PaginatedPokeathlonStatSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/PokeathlonStatSummary' + PaginatedPokedexSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/PokedexSummary' + PaginatedPokemonColorSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/PokemonColorSummary' + PaginatedPokemonFormSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/PokemonFormSummary' + PaginatedPokemonHabitatSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/PokemonHabitatSummary' + PaginatedPokemonShapeSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/PokemonShapeSummary' + PaginatedPokemonSpeciesSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/PokemonSpeciesSummary' + PaginatedPokemonSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/PokemonSummary' + PaginatedRegionSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/RegionSummary' + PaginatedStatSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/StatSummary' + PaginatedSuperContestEffectSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/SuperContestEffectSummary' + PaginatedTypeSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/TypeSummary' + PaginatedVersionGroupSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/VersionGroupSummary' + PaginatedVersionSummaryList: + type: object + properties: + count: + type: integer + example: 123 + next: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=400&limit=100 + previous: + type: string + nullable: true + format: uri + example: http://api.example.org/accounts/?offset=200&limit=100 + results: + type: array + items: + $ref: '#/components/schemas/VersionSummary' + PalParkAreaDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + names: + type: array + items: + $ref: '#/components/schemas/PalParkAreaName' + readOnly: true + pokemon_encounters: + type: array + items: + type: object + required: + - base_score + - pokemon-species + - rate + properties: + base_score: + type: integer + format: int32 + examples: + - 50 + pokemon-species: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - bulbasaur + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/pokemon-species/1/ + rate: + type: integer + format: int32 + examples: + - 30 + readOnly: true + required: + - id + - name + - names + - pokemon_encounters + PalParkAreaName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + PalParkAreaSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + PokeathlonStatDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + affecting_natures: + type: object + required: + - decrease + - increase + properties: + decrease: + type: array + items: + type: object + required: + - max_change + - nature + properties: + max_change: + type: integer + format: int32 + maximum: -1 + examples: + - -1 + nature: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - hardy + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/nature/1/ + increase: + type: array + items: + type: object + required: + - max_change + - nature + properties: + max_change: + type: integer + format: int32 + minimum: 1 + examples: + - 2 + nature: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - hardy + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/nature/1/ + readOnly: true + names: + type: array + items: + $ref: '#/components/schemas/PokeathlonStatName' + readOnly: true + required: + - affecting_natures + - id + - name + - names + PokeathlonStatName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + PokeathlonStatSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + PokedexDescription: + type: object + properties: + description: + type: string + maxLength: 1000 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + PokedexDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + is_main_series: + type: boolean + descriptions: + type: array + items: + $ref: '#/components/schemas/PokedexDescription' + readOnly: true + names: + type: array + items: + $ref: '#/components/schemas/PokedexName' + readOnly: true + pokemon_entries: + type: array + items: + type: object + required: + - entry_number + - pokemon_species + properties: + entry_number: + type: integer + format: int32 + examples: + - 1 + pokemon_species: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - bulbasaur + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/pokemon-species/1/ + readOnly: true + region: + $ref: '#/components/schemas/RegionSummary' + version_groups: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - the-teal-mask + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/version-group/26/ + readOnly: true + required: + - descriptions + - id + - name + - names + - pokemon_entries + - region + - version_groups + PokedexName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + PokedexSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + PokemonColorDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + names: + type: array + items: + $ref: '#/components/schemas/PokemonColorName' + readOnly: true + pokemon_species: + type: array + items: + $ref: '#/components/schemas/PokemonSpeciesSummary' + readOnly: true + required: + - id + - name + - names + - pokemon_species + PokemonColorName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + PokemonColorSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + PokemonDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + base_experience: + type: + - integer + - 'null' + height: + type: + - integer + - 'null' + is_default: + type: boolean + order: + type: + - integer + - 'null' + weight: + type: + - integer + - 'null' + abilities: + type: array + items: + type: object + required: + - ability + - is_hidden + - slot + properties: + ability: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - sand-veil + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/ability/8/ + is_hidden: + type: boolean + slot: + type: integer + format: int32 + examples: + - 1 + readOnly: true + past_abilities: + type: array + items: + type: object + required: + - abilities + - generation + properties: + abilities: + type: array + items: + type: object + required: + - ability + - is_hidden + - slot + properties: + ability: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - levitate + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/ability/26/ + is_hidden: + type: boolean + slot: + type: integer + format: int32 + examples: + - 1 + generation: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - generation-vi + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/generation/6/ + readOnly: true + forms: + type: array + items: + $ref: '#/components/schemas/PokemonFormSummary' + readOnly: true + game_indices: + type: array + items: + $ref: '#/components/schemas/PokemonGameIndex' + readOnly: true + held_items: + type: object + required: + - item + - version_details + properties: + item: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - soft-sand + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/item/214/ + version_details: + type: array + items: + type: object + required: + - rarity + - version + properties: + rarity: + type: integer + format: int32 + examples: + - 5 + version: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - diamond + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/version/12/ + readOnly: true + location_area_encounters: + type: string + examples: + - https://pokeapi.co/api/v2/pokemon/1/encounters + readOnly: true + moves: + type: array + items: + type: object + required: + - move + - version_group_details + properties: + move: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - scratch + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/move/10/ + version_group_details: + type: array + items: + type: object + required: + - level_learned_at + - move_learn_method + - version_group + properties: + level_learned_at: + type: integer + format: int32 + examples: + - 1 + move_learn_method: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - level-up + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/move-learn-method/1/ + version_group: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - red-blue + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/version-group/1/ + readOnly: true + species: + $ref: '#/components/schemas/PokemonSpeciesSummary' + sprites: + type: object + properties: + front_default: + type: string + format: uri + exmaple: https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/1.png + additionalProperties: + type: string + format: uri + nullable: true + examples: + - https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/shiny/1.png + examples: + - back_default: https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/1.png + back_female: null + back_shiny: https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/shiny/1.png + back_shiny_female: null + front_default: https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/1.png + front_female: null + front_shiny: https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/shiny/1.png + front_shiny_female: null + readOnly: true + cries: + type: object + required: + - latest + - legacy + properties: + latest: + type: string + format: uri + examples: + - https://raw.githubusercontent.com/PokeAPI/cries/main/cries/pokemon/latest/50.ogg + legacy: + type: string + format: uri + examples: + - https://raw.githubusercontent.com/PokeAPI/cries/main/cries/pokemon/legacy/50.ogg + readOnly: true + stats: + type: array + items: + $ref: '#/components/schemas/PokemonStat' + readOnly: true + types: + type: array + items: + type: object + required: + - slot + - type + properties: + slot: + type: integer + format: int32 + examples: + - 1 + type: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - ghost + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/type/8/ + readOnly: true + past_types: + type: array + items: + type: object + required: + - generation + - types + properties: + generation: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - generation-v + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/generation/5/ + types: + type: array + items: + type: object + required: + - slot + - type + properties: + slot: + type: integer + format: int32 + examples: + - 1 + type: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - normal + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/type/1/ + readOnly: true + required: + - abilities + - cries + - forms + - game_indices + - held_items + - id + - location_area_encounters + - moves + - name + - past_abilities + - past_types + - species + - sprites + - stats + - types + PokemonDexEntry: + type: object + properties: + entry_number: + type: integer + pokedex: + $ref: '#/components/schemas/PokedexSummary' + required: + - entry_number + - pokedex + PokemonFormDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + order: + type: + - integer + - 'null' + form_order: + type: + - integer + - 'null' + is_default: + type: boolean + is_battle_only: + type: boolean + is_mega: + type: boolean + form_name: + type: string + maxLength: 30 + pokemon: + $ref: '#/components/schemas/PokemonSummary' + sprites: + type: object + properties: + default: + type: string + format: uri + examples: + - https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/412.png + additionalProperties: + type: string + format: uri + nullable: true + examples: + - https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/shiny/412.png + examples: + - back_default: https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/412.png + back_female: null + back_shiny: https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/shiny/412.png + back_shiny_female: null + front_default: https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/412.png + front_female: null + front_shiny: https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/shiny/412.png + front_shiny_female: null + readOnly: true + version_group: + $ref: '#/components/schemas/VersionGroupSummary' + form_names: + type: array + items: + type: object + required: + - language + - name + properties: + language: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - en + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/language/9/ + name: + type: string + examples: + - Plant Cloak + readOnly: true + names: + type: array + items: + type: object + required: + - language + - name + properties: + language: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - en + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/language/9/ + name: + type: string + examples: + - Plant Cloak + readOnly: true + types: + type: array + items: + type: object + required: + - slot + - type + properties: + slot: + type: integer + format: int32 + examples: + - 1 + type: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - bug + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/type/7/ + readOnly: true + required: + - form_name + - form_names + - id + - name + - names + - pokemon + - sprites + - types + - version_group + PokemonFormSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + PokemonGameIndex: + type: object + properties: + game_index: + type: integer + version: + $ref: '#/components/schemas/VersionSummary' + required: + - game_index + - version + PokemonHabitatDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + names: + type: array + items: + $ref: '#/components/schemas/PokemonHabitatName' + readOnly: true + pokemon_species: + type: array + items: + $ref: '#/components/schemas/PokemonSpeciesSummary' + readOnly: true + required: + - id + - name + - names + - pokemon_species + PokemonHabitatName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + PokemonHabitatSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + PokemonShapeDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + awesome_names: + type: array + items: + type: object + required: + - awesome_name + - language + properties: + awesome_name: + type: string + examples: + - Pomaceous + language: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - en + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/language/9/ + readOnly: true + names: + type: array + items: + type: object + required: + - url + - name + properties: + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/language/9/ + name: + type: string + examples: + - Ball + readOnly: true + pokemon_species: + type: array + items: + $ref: '#/components/schemas/PokemonSpeciesSummary' + readOnly: true + required: + - awesome_names + - id + - name + - names + - pokemon_species + PokemonShapeSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + PokemonSpeciesDescription: + type: object + properties: + description: + type: string + maxLength: 1000 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + PokemonSpeciesDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + order: + type: + - integer + - 'null' + gender_rate: + type: + - integer + - 'null' + capture_rate: + type: + - integer + - 'null' + base_happiness: + type: + - integer + - 'null' + is_baby: + type: boolean + is_legendary: + type: boolean + is_mythical: + type: boolean + hatch_counter: + type: + - integer + - 'null' + has_gender_differences: + type: boolean + forms_switchable: + type: boolean + growth_rate: + $ref: '#/components/schemas/GrowthRateSummary' + pokedex_numbers: + type: array + items: + $ref: '#/components/schemas/PokemonDexEntry' + readOnly: true + egg_groups: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - monster + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/egg-group/1/ + readOnly: true + color: + $ref: '#/components/schemas/PokemonColorSummary' + shape: + $ref: '#/components/schemas/PokemonShapeSummary' + evolves_from_species: + $ref: '#/components/schemas/PokemonSpeciesSummary' + evolution_chain: + $ref: '#/components/schemas/EvolutionChainSummary' + habitat: + $ref: '#/components/schemas/PokemonHabitatSummary' + generation: + $ref: '#/components/schemas/GenerationSummary' + names: + type: array + items: + type: object + required: + - language + - name + properties: + language: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - en + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/language/9/ + name: + type: string + examples: + - bulbasaur + readOnly: true + pal_park_encounters: + type: array + items: + type: object + required: + - area + - base_score + - rate + properties: + area: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - field + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/pal-park-area/2/ + base_score: + type: integer + format: int32 + examples: + - 50 + rate: + type: integer + format: int32 + examples: + - 30 + readOnly: true + form_descriptions: + type: array + items: + $ref: '#/components/schemas/PokemonSpeciesDescription' + readOnly: true + flavor_text_entries: + type: array + items: + $ref: '#/components/schemas/PokemonSpeciesFlavorText' + readOnly: true + genera: + type: array + items: + type: object + required: + - genus + - language + properties: + genus: + type: string + examples: + - Seed Pokémon + language: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - en + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/language/9/ + readOnly: true + varieties: + type: array + items: + type: object + required: + - is_default + - pokemon + properties: + is_default: + type: boolean + pokemon: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - bulbasaur + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/pokemon/1/ + readOnly: true + required: + - color + - egg_groups + - evolution_chain + - evolves_from_species + - flavor_text_entries + - form_descriptions + - genera + - generation + - growth_rate + - habitat + - id + - name + - names + - pal_park_encounters + - pokedex_numbers + - shape + - varieties + PokemonSpeciesFlavorText: + type: object + properties: + flavor_text: + type: string + language: + $ref: '#/components/schemas/LanguageSummary' + version: + $ref: '#/components/schemas/VersionSummary' + required: + - flavor_text + - language + - version + PokemonSpeciesSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + PokemonStat: + type: object + properties: + base_stat: + type: integer + effort: + type: integer + stat: + $ref: '#/components/schemas/StatSummary' + required: + - base_stat + - effort + - stat + PokemonSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + RegionDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + locations: + type: array + items: + $ref: '#/components/schemas/LocationSummary' + readOnly: true + main_generation: + allOf: + - $ref: '#/components/schemas/GenerationSummary' + readOnly: true + names: + type: array + items: + $ref: '#/components/schemas/RegionName' + readOnly: true + pokedexes: + type: array + items: + $ref: '#/components/schemas/PokedexSummary' + readOnly: true + version_groups: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - red-blue + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/version-group/1/ + readOnly: true + required: + - id + - locations + - main_generation + - name + - names + - pokedexes + - version_groups + RegionName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + RegionSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + StatDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + game_index: + type: integer + is_battle_only: + type: boolean + affecting_moves: + type: object + required: + - decrease + - increase + properties: + increase: + type: array + items: + type: object + required: + - change + - move + properties: + change: + type: integer + format: int32 + examples: + - -1 + move: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - swords-dance + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/move/14/ + decrease: + type: array + items: + type: object + required: + - change + - move + properties: + change: + type: integer + format: int32 + examples: + - 5 + move: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - growl + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/move/45/ + readOnly: true + affecting_natures: + type: object + required: + - increase + - decrease + properties: + increase: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - lonely + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/nature/6/ + decrease: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - bold + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/nature/2/ + readOnly: true + characteristics: + type: array + items: + $ref: '#/components/schemas/CharacteristicSummary' + readOnly: true + move_damage_class: + $ref: '#/components/schemas/MoveDamageClassSummary' + names: + type: array + items: + $ref: '#/components/schemas/StatName' + readOnly: true + required: + - affecting_moves + - affecting_natures + - characteristics + - game_index + - id + - move_damage_class + - name + - names + StatName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + StatSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + SuperContestEffectDetail: + type: object + properties: + id: + type: integer + readOnly: true + appeal: + type: integer + flavor_text_entries: + type: array + items: + $ref: '#/components/schemas/SuperContestEffectFlavorText' + readOnly: true + moves: + type: array + items: + $ref: '#/components/schemas/MoveSummary' + readOnly: true + required: + - appeal + - flavor_text_entries + - id + - moves + SuperContestEffectFlavorText: + type: object + properties: + flavor_text: + type: string + maxLength: 500 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - flavor_text + - language + SuperContestEffectSummary: + type: object + properties: + url: + type: string + format: uri + readOnly: true + required: + - url + TypeDetail: + type: object + description: Serializer for the Type resource + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + damage_relations: + type: object + required: + - no_damage_to + - half_damage_to + - double_damage_to + - no_damage_from + - half_damage_from + - double_damage_from + properties: + no_damage_to: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - flying + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/type/3/ + half_damage_to: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - bug + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/type/7/ + double_damage_to: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - poison + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/type/4/ + no_damage_from: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - electric + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/type/13/ + half_damage_from: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - poison + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/type/4/ + double_damage_from: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - water + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/type/11/ + readOnly: true + past_damage_relations: + type: array + items: + type: object + required: + - generation + - damage_relations + properties: + generation: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - generation-v + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/generation/5/ + damage_relations: + type: object + required: + - no_damage_to + - half_damage_to + - double_damage_to + - no_damage_from + - half_damage_from + - double_damage_from + properties: + no_damage_to: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - flying + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/type/3/ + half_damage_to: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - bug + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/type/7/ + double_damage_to: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - poison + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/type/4/ + no_damage_from: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - electric + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/type/13/ + half_damage_from: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - poison + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/type/4/ + double_damage_from: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - water + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/type/11/ + readOnly: true + game_indices: + type: array + items: + $ref: '#/components/schemas/TypeGameIndex' + readOnly: true + generation: + $ref: '#/components/schemas/GenerationSummary' + move_damage_class: + $ref: '#/components/schemas/MoveDamageClassSummary' + names: + type: array + items: + $ref: '#/components/schemas/AbilityName' + readOnly: true + pokemon: + type: array + items: + type: object + required: + - potency + - flavor + properties: + slot: + type: integer + examples: + - 1 + pokemon: + type: object + require: + - name + - url + properties: + name: + type: string + description: The name of the pokemon + examples: + - sandshrew + url: + type: string + format: uri + description: The URL to get more information about the pokemon + examples: + - https://pokeapi.co/api/v2/pokemon/27/ + readOnly: true + moves: + type: array + items: + $ref: '#/components/schemas/MoveSummary' + readOnly: true + required: + - damage_relations + - game_indices + - generation + - id + - move_damage_class + - moves + - name + - names + - past_damage_relations + - pokemon + TypeGameIndex: + type: object + properties: + game_index: + type: integer + generation: + $ref: '#/components/schemas/GenerationSummary' + required: + - game_index + - generation + TypeSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + VersionDetail: + type: object + description: |- + Should have a link to Version Group info but the Circular + dependency and compilation order fight eachother and I'm + not sure how to add anything other than a hyperlink + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + names: + type: array + items: + $ref: '#/components/schemas/VersionName' + readOnly: true + version_group: + $ref: '#/components/schemas/VersionGroupSummary' + required: + - id + - name + - names + - version_group + VersionGroupDetail: + type: object + properties: + id: + type: integer + readOnly: true + name: + type: string + maxLength: 100 + order: + type: + - integer + - 'null' + generation: + $ref: '#/components/schemas/GenerationSummary' + move_learn_methods: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - level-up + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/move-learn-method/1/ + readOnly: true + pokedexes: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - kanto + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/pokedex/2/ + readOnly: true + regions: + type: array + items: + type: object + required: + - name + - url + properties: + name: + type: string + examples: + - kanto + url: + type: string + format: uri + examples: + - https://pokeapi.co/api/v2/region/1/ + readOnly: true + versions: + type: array + items: + $ref: '#/components/schemas/VersionSummary' + readOnly: true + required: + - generation + - id + - move_learn_methods + - name + - pokedexes + - regions + - versions + VersionGroupSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + VersionName: + type: object + properties: + name: + type: string + maxLength: 100 + language: + $ref: '#/components/schemas/LanguageSummary' + required: + - language + - name + VersionSummary: + type: object + properties: + name: + type: string + maxLength: 100 + url: + type: string + format: uri + readOnly: true + required: + - name + - url + securitySchemes: + basicAuth: + type: http + scheme: basic + cookieAuth: + type: apiKey + in: cookie + name: sessionid +servers: +- url: https://pokeapi.co +tags: +- pokemon +- evolution +- berries +- items +- machines +- location +- contest +- moves +- encounters +- games +- utility +externalDocs: + url: https://pokeapi.co/docs/v2 diff --git a/pokemon_v2/README.md b/pokemon_v2/README.md index aacb4cba..3bc00d0e 100644 --- a/pokemon_v2/README.md +++ b/pokemon_v2/README.md @@ -1,3182 +1 @@ - -# Pokeapi V2 API Reference - - - - - - - - - - - - -
API Endpoints
- - - - - -
- -## Resource Lists -Calling any api endpoint without a resource id or name will return a paginated list of available resources for that api. By default, a list 'page' will contain up to 20 resources. If you would like to change this just add a 'limit' query param, e.g. `limit=60`. - -### GET api/v2/{endpoint} - -###### example response for non-named resources - -```json -{ - "count": 365, - "next": "http://pokeapi.co/api/v2/evolution-chain/?limit=20&offset=20", - "previous": null, - "results": [{ - "url": "http://pokeapi.co/api/v2/evolution-chain/1/" - }] -} -``` - -#### APIResourceList - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| count | The total number of resources available from this api | integer | -| next | The url for the next 'page' in the list | string | -| previous | The url for the previous page in the list | boolean | -| results | The list of non-named api resources | list [APIResource](#apiresource) | - - -###### example response for named resources - -```json -{ - "count": 248, - "next": "http://pokeapi.co/api/v2/ability/?limit=20&offset=20", - "previous": null, - "results": [{ - "name": "stench", - "url": "http://pokeapi.co/api/v2/ability/1/" - }] -} -``` - -#### NamedAPIResourceList - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| count | The total number of resources available from this api | integer | -| next | The url for the next 'page' in the list | string | -| previous | The url for the previous page in the list | boolean | -| results | The list of named api resources | list [NamedAPIResource](#namedapiresource) | - - - -

Berries

- -## Berries -Berries are small fruits that can provide HP and status condition restoration, stat enhancement, and even damage negation when eaten by pokemon. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Berry) for greater detail. - -### GET api/v2/berry/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "cheri", - "growth_time": 3, - "max_harvest": 5, - "natural_gift_power": 60, - "size": 20, - "smoothness": 25, - "soil_dryness": 15, - "firmness": { - "name": "soft", - "url": "http://pokeapi.co/api/v2/berry-firmness/2/" - }, - "flavors": [{ - "potency": 10, - "flavor": { - "name": "spicy", - "url": "http://pokeapi.co/api/v2/berry-flavor/1/" - } - }], - "item": { - "name": "cheri-berry", - "url": "http://pokeapi.co/api/v2/item/126/" - }, - "natural_gift_type": { - "name": "fire", - "url": "http://pokeapi.co/api/v2/type/10/" - } -} - -``` - -###### response models - -#### Berry - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this berry resource | integer | -| name | The name for this berry resource | string | -| growth_time | Time it takes the tree to grow one stage, in hours. Berry trees go through four of these growth stages before they can be picked. | integer | -| max_harvest | The maximum number of these berries that can grow on one tree in Generation IV | integer | -| natural_gift_power | The power of the move "Natural Gift" when used with this Berry | integer | -| size | The size of this Berry, in millimeters | integer | -| smoothness | The smoothness of this Berry, used in making Pokéblocks or Poffins | integer | -| soil_dryness | The speed at which this Berry dries out the soil as it grows. A higher rate means the soil dries more quickly. | integer | -| firmness | The firmness of this berry, used in making Pokéblocks or Poffins | [NamedAPIResource](#namedapiresource) ([BerryFirmness](#berry-firmnesses)) | -| flavors | A list of references to each flavor a berry can have and the potency of each of those flavors in regard to this berry | list [BerryFlavorMap](#berryflavormap) | -| item | Berries are actually items. This is a reference to the item specific data for this berry. | [NamedAPIResource](#namedapiresource) ([Item](#items)) | -| natural_gift_type | The Type the move "Natural Gift" has when used with this Berry | [NamedAPIResource](#namedapiresource) ([Type](#types)) | - -#### BerryFlavorMap - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| potency | How powerful the referenced flavor is for this berry | integer | -| flavor | The referenced berry flavor | [NamedAPIResource](#namedapiresource) ([BerryFlavor](#berry-flavors)) | - - -## Berry Firmnesses - -### GET api/v2/berry-firmness/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "very-soft", - "berries": [{ - "name": "pecha", - "url": "http://pokeapi.co/api/v2/berry/3/" - }], - "names": [{ - "name": "Very Soft", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }] -} - -``` - -###### response models - -#### BerryFirmness - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this berry firmness resource | integer | -| name | The name for this berry firmness resource | string | -| berries | A list of the berries with this firmness | list [NamedAPIResource](#namedapiresource) ([Berry](#berries)) | -| names | The name of this berry firmness listed in different languages | list [Name](#resourcename) | - - - -## Berry Flavors -Flavors determine whether a pokemon will benefit or suffer from eating a berry based on their [nature](#natures). Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Flavor) for greater detail. - -### GET api/v2/berry-flavor/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "spicy", - "berries": [{ - "potency": 10, - "berry": { - "name": "rowap", - "url": "http://pokeapi.co/api/v2/berry/64/" - } - }], - "contest_type": { - "name": "cool", - "url": "http://pokeapi.co/api/v2/contest-type/1/" - }, - "names": [{ - "name": "Spicy", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }] -} - -``` - -###### response models - -#### BerryFlavor - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this berry flavor resource | integer | -| name | The name for this berry flavor resource | string | -| berries | A list of the berries with this flavor | list [FlavorBerryMap](#flavorberrymap) | -| contest_type | The contest type that correlates with this berry flavor | [NamedAPIResource](#namedapiresource) ([ContestType](#contest-types)) | -| names | The name of this berry flavor listed in different languages | list [Name](#resourcename) | - -#### FlavorBerryMap - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| potency | How powerful the referenced flavor is for this berry | integer | -| berry | The berry with the referenced flavor | [NamedAPIResource](#namedapiresource) ([Berry](#berry)) | - - - -

Contests

- -## Contest Types -Contest types are categories judges used to weigh a pokémon's condition in pokemon contests. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Contest_condition) for greater detail. - -### GET api/v2/contest-type/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "cool", - "berry_flavor": { - "name": "spicy", - "url": "http://pokeapi.co/api/v2/berry-flavor/1/" - }, - "names": [{ - "name": "Cool", - "color": "Red", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }] -} - -``` - -###### response models - -#### ContestType - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this contest type resource | integer | -| name | The name for this contest type resource | string | -| berry_flavor | The berry flavor that correlates with this contest type | [NamedAPIResource](#namedapiresource) ([BerryFlavor](#berry-flavors)) | -| names | The name of this contest type listed in different languages | list [Name](#resourcename) | - - - -## Contest Effects -Contest effects refer to the effects of moves when used in contests. - -### GET api/v2/contest-effect/{id} - -###### example response - -```json -{ - "id": 1, - "appeal": 4, - "jam": 0, - "effect_entries": [{ - "effect": "Gives a high number of appeal points wth no other effects.", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "flavor_text_entries": [{ - "flavor_text": "A highly appealing move.", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }] -} - -``` - -###### response models - -#### ContestEffect - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this contest type resource | integer | -| appeal | The base number of hearts the user of this move gets | string | -| jam | The base number of hearts the user's opponent loses | integer | -| effect_entries | The result of this contest effect listed in different languages | list [Effect](#effect) | -| flavor_text_entries | The flavor text of this contest effect listed in different languages | list [FlavorText](#flavortext) | - - -## Super Contest Effects -Super contest effects refer to the effects of moves when used in super contests. - -### GET api/v2/super-contest-effect/{id} - -###### example response - -```json -{ - "id": 1, - "appeal": 2, - "flavor_text_entries": [{ - "flavor_text": "Enables the user to perform first in the next turn.", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "moves": [{ - "name": "agility", - "url": "http://pokeapi.co/api/v2/move/97/" - }] -} -``` - -###### response models - -#### SuperContestEffect - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this super contest effect resource | integer | -| appeal | The level of appeal this super contest effect has | string | -| flavor_text_entries | The flavor text of this super contest effect listed in different languages | list [FlavorText](#flavortext) | -| moves | A list of moves that have the effect when used in super contests | list [NamedAPIResource](#namedapiresource) ([Move](#moves)) | - - - -

Encounters

- -## Encounter Methods -Methods by which the player can encounter pokémon in the wild, e.g., walking in tall grass. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Wild_Pokémon) for greater detail. - -### GET api/v2/encounter-method/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "walk", - "order": 1, - "names": [{ - "name": "Walking in tall grass or a cave", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }] -} - -``` - -###### response models - -#### EncounterMethod - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this encounter method resource | integer | -| name | The name for this encounter method resource | string | -| order | A good value for sorting | integer | -| names | The name of this encounter method listed in different languages | list [Name](#resourcename) | - - - -## Encounter Conditions -Conditions which affect what pokémon might appear in the wild, e.g., day or night. - -### GET api/v2/encounter-condition/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "swarm", - "values": [{ - "name": "swarm-yes", - "url": "http://pokeapi.co/api/v2/encounter-condition-value/1/" - }, { - "name": "swarm-no", - "url": "http://pokeapi.co/api/v2/encounter-condition-value/2/" - }], - "names": [{ - "name": "Schwarm", - "language": { - "name": "de", - "url": "http://pokeapi.co/api/v2/language/6/" - } - }] -} - -``` - -###### response models - -#### EncounterCondition - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this encounter condition resource | integer | -| name | The name for this encounter condition resource | string | -| names | The name of this encounter method listed in different languages | list [Name](#resourcename) | -| values | A list of possible values for this encounter condition | list [NamedAPIResource](#namedapiresource) ([EncounterConditionValue](#encounter-condition-values)) | - - - -## Encounter Condition Values -Encounter condition values are the various states that an encounter condition can have, i.e., Time of day can be either day or night. - -### GET api/v2/encounter-condition-value/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "swarm-yes", - "condition": { - "name": "swarm", - "url": "http://pokeapi.co/api/v2/encounter-condition/1/" - }, - "names": [{ - "name": "Während eines Schwarms", - "language": { - "name": "de", - "url": "http://pokeapi.co/api/v2/language/6/" - } - }] -} - -``` - -###### response models - -#### EncounterConditionValue - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this encounter condition value resource | integer | -| name | The name for this encounter condition value resource | string | -| condition | The condition this encounter condition value pertains to | list [NamedAPIResource](#namedapiresource) ([EncounterCondition](#encounter-conditions)) | -| names | The name of this encounter condition value listed in different languages | list [Name](#resourcename) | - - - -

Evolution

- -## Evolution Chains -Evolution chains are essentially family trees. They start with the lowest stage within a family and detail evolution conditions for each as well as pokémon they can evolve into up through the hierarchy. - -### GET api/v2/evolution-chain/{id} - -###### example response - -```json -{ - "id": 7, - "baby_trigger_item": null, - "chain": { - "is_baby": false, - "species": { - "name": "rattata", - "url": "http://pokeapi.co/api/v2/pokemon-species/19/" - }, - "evolution_details": null, - "evolves_to": [{ - "is_baby": false, - "species": { - "name": "raticate", - "url": "http://pokeapi.co/api/v2/pokemon-species/20/" - }, - "evolution_details": { - "item": null, - "trigger": { - "name": "level-up", - "url": "http://pokeapi.co/api/v2/evolution-trigger/1/" - }, - "gender": null, - "held_item": null, - "known_move": null, - "known_move_type": null, - "location": null, - "min_level": 20, - "min_happiness": null, - "min_beauty": null, - "min_affection": null, - "needs_overworld_rain": false, - "party_species": null, - "party_type": null, - "relative_physical_stats": null, - "time_of_day": "", - "trade_species": null, - "turn_upside_down": false - }, - "evolves_to": [] - }] - } -} -``` - -###### response models - -#### EvolutionChain - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this evolution chain resource | integer | -| baby_trigger_item | The item that a pokémon would be holding when mating that would trigger the egg hatching a baby pokémon rather than a basic pokémon | [NamedAPIResource](#namedapiresource) ([Item](#items)) | -| chain | The base chain link object. Each link contains evolution details for a pokémon in the chain. Each link references the next pokémon in the natural evolution order. | [ChainLink](#chainlink) | - -#### ChainLink - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| is_baby | Whether or not this link is for a baby pokémon. This would only ever be true on the base link. | boolean | -| species | The pokemon species at this point in the evolution chain | [NamedAPIResource](#namedapiresource) ([PokemonSpecies](#pokemon-species)) | -| evolution_details | All details regarding the specific details of the referenced pokémon species evolution | [EvolutionDetail](#evolutiondetail) | -| evolves_to | A List of chain objects. | list [ChainLink](#chainlink) | - -#### EvolutionDetail - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| item | The item required to cause evolution this into pokémon species | [NamedAPIResource](#namedapiresource) ([Item](#items)) | -| trigger | The type of event that triggers evolution into this pokémon species | [NamedAPIResource](#namedapiresource) ([EvolutionTrigger](#evolution-triggers)) | -| gender | The gender the evolving pokémon species must be in order to evolve into this pokémon species | [NamedAPIResource](#namedapiresource) ([Gender](#genders)) | -| held_item | The item the evolving pokémon species must be holding during the evolution trigger event to evolve into this pokémon species | [NamedAPIResource](#namedapiresource) ([Item](#items)) | -| known_move | The move that must be known by the evolving pokémon species during the evolution trigger event in order to evolve into this pokémon species | [NamedAPIResource](#namedapiresource) ([Move](#moves)) | -| known_move_type | The evolving pokémon species must know a move with this type during the evolution trigger event in order to evolve into this pokémon species | [NamedAPIResource](#namedapiresource) ([Type](#types)) | -| location | The location the evolution must be triggered at. | [NamedAPIResource](#namedapiresource) ([Location](#locations)) | -| min_level | The minimum required level of the evolving pokémon species to evolve into this pokémon species | integer | -| min_happiness | The minimum required level of happiness the evolving pokémon species to evolve into this pokémon species | integer | -| min_beauty | The minimum required level of beauty the evolving pokémon species to evolve into this pokémon species | integer | -| min_affection | The minimum required level of affection the evolving pokémon species to evolve into this pokémon species | integer | -| needs_overworld_rain | Whether or not it must be raining in the overworld to cause evolution this pokémon species | boolean | -| party_species | The pokémon species that must be in the players party in order for the evolving pokémon species to evolve into this pokémon species | [NamedAPIResource](#namedapiresource) ([PokemonSpecies](#pokemon-species)) | -| party_type | The player must have a pokémon of this type in their party during the evolution trigger event in order for the evolving pokémon species to evolve into this pokémon species | [NamedAPIResource](#namedapiresource) ([Type](#types)) | -| relative_physical_stats | The required relation between the Pokémon's Attack and Defense stats. 1 means Attack > Defense. 0 means Attack = Defense. -1 means Attack < Defense. | integer | -| time_of_day | The required time of day. Day or night. | string | -| trade_species | Pokémon species for which this one must be traded. | [NamedAPIResource](#namedapiresource) ([Pokémon Species](#pokemon-species)) | -| turn_upside_down | Whether or not the 3DS needs to be turned upside-down as this Pokémon levels up. | boolean | - - -## Evolution Triggers -Evolution triggers are the events and conditions that cause a pokémon to evolve. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Methods_of_evolution) for greater detail. - -### GET api/v2/evolution-trigger/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "level-up", - "names": [{ - "name": "Level up", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "pokemon_species": [{ - "name": "ivysaur", - "url": "http://pokeapi.co/api/v2/pokemon-species/2/" - }] -} - -``` - -###### response models - -#### EvolutionTrigger - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this evolution trigger resource | integer | -| name | The name for this evolution trigger resource | string | -| names | The name of this evolution trigger listed in different languages | list [Name](#resourcename) | -| pokemon_species | A list of pokémon species that result from this evolution trigger | list [NamedAPIResource](#namedapiresource) ([PokemonSpecies](#pokemon-species)) | - - - -

Games

- -## Generations -A generation is a grouping of the Pokémon games that separates them based on the Pokémon they include. In each generation, a new set of Pokémon, Moves, Abilities and Types that did not exist in the previous generation are released. - -### GET api/v2/generation/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "generation-i", - "abilities": [], - "main_region": { - "name": "kanto", - "url": "http://pokeapi.co/api/v2/region/1/" - }, - "moves": [{ - "name": "pound", - "url": "http://pokeapi.co/api/v2/move/1/" - }], - "names": [{ - "name": "Generation I", - "language": { - "name": "de", - "url": "http://pokeapi.co/api/v2/language/6/" - } - }], - "pokemon_species": [{ - "name": "bulbasaur", - "url": "http://pokeapi.co/api/v2/pokemon-species/1/" - }], - "types": [{ - "name": "normal", - "url": "http://pokeapi.co/api/v2/type/1/" - }], - "version_groups": [{ - "name": "red-blue", - "url": "http://pokeapi.co/api/v2/version-group/1/" - }] -} - -``` - -###### response models - -#### Generation - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this generation resource | integer | -| name | The name for this generation resource | string | -| abilities | A list of abilities that were introduced in this generation | list [NamedAPIResource](#namedapiresource) ([Ability](#abilities)) | -| names | The name of this generation listed in different languages | list [Name](#resourcename) | -| main_region | The main region travelled in this generation | [NamedAPIResource](#namedapiresource) ([Region](#regions)) | -| moves | A list of moves that were introduced in this generation | list [NamedAPIResource](#namedapiresource) ([Move](#moves)) | -| pokemon_species | A list of pokémon species that were introduced in this generation | list [NamedAPIResource](#namedapiresource) ([PokemonSpecies](#pokemon-species)) | -| types | A list of types that were introduced in this generation | list [NamedAPIResource](#namedapiresource) ([Type](#types)) | -| version_groups | A list of version groups that were introduced in this generation | list [NamedAPIResource](#namedapiresource) ([VersionGroup](#version-groups)) | - - - -## Pokedexes -A Pokédex is a handheld electronic encyclopedia device; one which is capable of recording and retaining information of the various Pokémon in a given region with the exception of the national dex and some smaller dexes related to portions of a region. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Pokedex) for greater detail. (Note: no official plural of 'pokédex' is known, 'standard' -(e)s is used here) - -### GET api/v2/pokedex/{id or name} - -###### example response - -```json -{ - "id": 2, - "name": "kanto", - "is_main_series": true, - "descriptions": [{ - "description": "Rot/Blau/Gelb Kanto Dex", - "language": { - "name": "de", - "url": "http://pokeapi.co/api/v2/language/6/" - } - }], - "names": [{ - "name": "Kanto", - "language": { - "name": "de", - "url": "http://pokeapi.co/api/v2/language/6/" - } - }], - "pokemon_entries": [{ - "entry_number": 1, - "pokemon_species": { - "name": "bulbasaur", - "url": "http://pokeapi.co/api/v2/pokemon-species/1/" - } - }], - "region": { - "name": "kanto", - "url": "http://pokeapi.co/api/v2/region/1/" - }, - "version_groups": [{ - "name": "red-blue", - "url": "http://pokeapi.co/api/v2/version-group/1/" - }] -} -``` - -###### response models - -#### Pokedex - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this pokédex resource | integer | -| name | The name for this pokédex resource | string | -| is_main_series | Whether or not this pokédex originated in the main series of the video games | boolean | -| descriptions | The description of this pokédex listed in different languages | list [Description](#description) | -| names | The name of this pokédex listed in different languages | list [Name](#resourcename) | -| pokemon_entries | A list of pokémon catalogued in this pokédex and their indexes | list [PokemonEntry](#pokemonentry) | -| region | The region this pokédex catalogues pokémon for | [NamedAPIResource](#namedapiresource) ([Region](#regions)) | -| version_groups | A list of version groups this pokédex is relevent to | list [NamedAPIResource](#namedapiresource) ([VersionGroup](#version-groups)) | - -#### PokemonEntry - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| entry_number | The index of this pokémon species entry within the pokédex | integer | -| pokemon_species | The pokémon species being encountered | [NamedAPIResource](#namedapiresource) ([PokemonSpecies](#pokemon-species)) | - - - -## Versions -Versions of the games, e.g., Red, Blue or Yellow. - -### GET api/v2/version/{id or name} - -###### example response - -```json - -{ - "id": 1, - "name": "red", - "names": [{ - "name": "Rot", - "language": { - "name": "de", - "url": "http://pokeapi.co/api/v2/language/6/" - } - }], - "version_group": { - "name": "red-blue", - "url": "http://pokeapi.co/api/v2/version-group/1/" - } -} -``` - -###### response models - -#### Version - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this version resource | integer | -| name | The name for this version resource | string | -| names | The name of this version listed in different languages | list [Name](#resourcename) | -| version_group | The version group this version belongs to | [NamedAPIResource](#namedapiresource) ([VersionGroup](#version-groups)) | - - -## Version Groups -Version groups categorize highly similar versions of the games. - -### GET api/v2/version-group/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "red-blue", - "order": 1, - "generation": { - "name": "generation-i", - "url": "http://pokeapi.co/api/v2/generation/1/" - }, - "move_learn_methods": [{ - "name": "level-up", - "url": "http://pokeapi.co/api/v2/move-learn-method/1/" - }], - "pokedexes": [{ - "name": "kanto", - "url": "http://pokeapi.co/api/v2/pokedex/2/" - }], - "regions": [{ - "name": "kanto", - "url": "http://pokeapi.co/api/v2/region/1/" - }], - "versions": [{ - "name": "red", - "url": "http://pokeapi.co/api/v2/version/1/" - }] -} -``` - -###### response models - -#### VersionGroup - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this version group resource | integer | -| name | The name for this version group resource | string | -| order | Order for sorting. Almost by date of release, except similar versions are grouped together. | integer | -| generation | The generation this version was introduced in | list [NamedAPIResource](#namedapiresource) ([Generation](#generations)) | -| move_learn_methods | A list of methods in which pokemon can learn moves in this version group | list [NamedAPIResource](#namedapiresource) ([MoveLearnMethod](#move-learn-methods)) | -| names | The name of this version group listed in different languages | list [Name](#resourcename) | -| pokedexes | A list of pokedexes introduces in this version group | list [NamedAPIResource](#namedapiresource) ([Pokedex](#pokedexes)) | -| regions | A list of regions that can be visited in this version group | list [NamedAPIResource](#namedapiresource) ([Region](#regions)) | -| versions | The versions this version group owns | list [NamedAPIResource](#namedapiresource) ([Version](#versions)) | - - -

Items

- -## Items -An item is an object in the games which the player can pick up, keep in their bag, and use in some manner. They have various uses, including healing, powering up, helping catch Pokémon, or to access a new area. - -### GET api/v2/item/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "master-ball", - "cost": 0, - "fling_power": 10, - "fling_effect": { - "name":"flinch", - "url":"http://pokeapi.co/api/v2/item-fling-effect/7/" - }, - "attributes": [{ - "name": "holdable", - "url": "http://pokeapi.co/api/v2/item-attribute/5/" - }], - "category": { - "name": "standard-balls", - "url": "http://pokeapi.co/api/v2/item-category/34/" - }, - "effect_entries": [{ - "effect": "Used in battle\n: [Catches]{mechanic:catch} a wild Pokémon without fail.\n\n If used in a trainer battle, nothing happens and the ball is lost.", - "short_effect": "Catches a wild Pokémon every time.", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "flavor_text_entries": [{ - "text": "野生の ポケモンを 必ず\n捕まえることが できる\n最高 性能の ボール。", - "version_group": { - "name": "x-y", - "url": "http://pokeapi.co/api/v2/version-group/15/" - }, - "language": { - "name": "ja-kanji", - "url": "http://pokeapi.co/api/v2/language/11/" - } - }], - "game_indices": [{ - "game_index": 1, - "generation": { - "name": "generation-vi", - "url": "http://pokeapi.co/api/v2/generation/6/" - } - }], - "names": [{ - "name": "Master Ball", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "held_by_pokemon": [{ - "pokemon": { - "name": "chansey", - "url": "http://pokeapi.co/api/v2/pokemon/113/" - }, - "version_details": [{ - "rarity": 50, - "version": { - "name": "soulsilver", - "url": "http://pokeapi.co/api/v2/version/16/" - } - }] - }], - "baby_trigger_for": { - "url":"http://pokeapi.co/api/v2/evolution-chain/1/" - } -} -``` - -###### response models - -#### Item - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this item resource | integer | -| name | The name for this item resource | string | -| cost | The price of this item in stores | integer | -| fling_power | The power of the move Fling when used with this item. | integer | -| fling_effect | The effect of the move Fling when used with this item | [ItemFlingEffect](#item-fling-effects) | -| attributes | A list of attributes this item has | list [NamedAPIResource](#namedapiresource) ([ItemAttribute](#item-attributes)) | -| category | The category of items this item falls into | [ItemCategory](#item-categories) | -| effect_entries | The effect of this ability listed in different languages | list [VerboseEffect](#verboseeffect) | -| flavor_text_entries | The flavor text of this ability listed in different languages | list [VersionGroupFlavorText](#versiongroupflavortext) | -| game_indices | A list of game indices relevent to this item by generation | list [GenerationGameIndex](#generationgameindex) | -| names | The name of this item listed in different languages | list [Name](#resourcename) | -| held_by_pokemon | A list of pokémon that might be found in the wild holding this item | list [HeldByPokemon](#heldbypokemon) | -| baby_trigger_for | An evolution chain this item requires to produce a bay during mating | list [APIResource](#apiresource) ([EvolutionChain](#evolution-chains)) | - -#### HeldByPokemon - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| pokemon | The pokemon who might be holding the item | [NamedAPIResource](#namedapiresource) ([Pokemon](#pokemon)) | -| version_details | Details on chance of the pokemon having the item based on version | list [VersionDetails](#helditemversiondetails) | - -#### HeldItemVersionDetails - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| rarity | The chance of the pokemon holding the item | integer | -| version | The version the rarity applies | [NamedAPIResource](#namedapiresource) ([Version](#version)) | -## Item Attributes -Item attributes define particular aspects of items, e.g. "usable in battle" or "consumable". - -### GET api/v2/item-attribute/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "countable", - "descriptions": [{ - "description": "Has a count in the bag", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "items": [{ - "name": "master-ball", - "url": "http://pokeapi.co/api/v2/item/1/" - }], - "names": [{ - "name": "Countable", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }] -} -``` - -###### response models - -#### ItemAttribute - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this item attribute resource | integer | -| name | The name for this item attribute resource | string | -| items | A list of items that have this attribute | list [NamedAPIResource](#namedapiresource) ([Item](#items)) | -| names | The name of this item attribute listed in different languages | list [Name](#resourcename) | -| descriptions | The description of this item attribute listed in different languages | list [Description](#description) | - - -## Item Categories -Item categories determine where items will be placed in the players bag. - -### GET api/v2/item-category/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "stat-boosts", - "items": [{ - "name": "guard-spec", - "url": "http://pokeapi.co/api/v2/item/55/" - }], - "names": [{ - "name": "Stat boosts", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "pocket": { - "name": "battle", - "url": "http://pokeapi.co/api/v2/item-pocket/7/" - } -} -``` - -###### response models - -#### ItemCategory - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this item category resource | integer | -| name | The name for this item category resource | string | -| items | A list of items that are a part of this category | list [NamedAPIResource](#namedapiresource) ([Item](#items)) | -| names | The name of this item category listed in different languages | list [Name](#resourcename) | -| pocket | The pocket items in this category would be put in | [NamedAPIResource](#namedapiresource) ([ItemPocket](#item-pockets)) | - - -## Item Fling Effects -The various effects of the move "Fling" when used with different items. - -### GET api/v2/item-fling-effect/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "badly-poison", - "effect_entries": [{ - "effect": "Badly poisons the target.", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "items": [{ - "name": "toxic-orb", - "url": "http://pokeapi.co/api/v2/item/249/" - }] -} -``` - -###### response models - -#### ItemFlingEffect - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this fling effect resource | integer | -| name | The name for this fling effect resource | string | -| effect_entries | The result of this fling effect listed in different languages | list [Effect](#effect) | -| items | A list of items that have this fling effect | list [NamedAPIResource](#namedapiresource) ([Item](#items)) | - - -## Item Pockets -Pockets within the players bag used for storing items by category. - -### GET api/v2/item-pocket/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "misc", - "categories": [{ - "name": "collectibles", - "url": "http://pokeapi.co/api/v2/item-category/9/" - }], - "names": [{ - "name": "Items", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }] -} -``` - -###### response models - -#### ItemPocket - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this item pocket resource | integer | -| name | The name for this item pocket resource | string | -| categories | A list of item categories that are relevent to this item pocket | list [NamedAPIResource](#namedapiresource) ([ItemCategory](#item-categories)) | -| names | The name of this item pocket listed in different languages | list [Name](#resourcename) | - - -

Moves

- -## Moves -Moves are the skills of pokémon in battle. In battle, a Pokémon uses one move each turn. Some moves (including those learned by Hidden Machine) can be used outside of battle as well, usually for the purpose of removing obstacles or exploring new areas. - -### GET api/v2/move/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "pound", - "accuracy": 100, - "effect_chance": null, - "pp": 35, - "priority": 0, - "power": 40, - "contest_combos": { - "normal": { - "use_before": [{ - "name": "double-slap", - "url": "http://pokeapi.co/api/v2/move/3/" - }, { - "name": "headbutt", - "url": "http://pokeapi.co/api/v2/move/29/" - }, { - "name": "feint-attack", - "url": "http://pokeapi.co/api/v2/move/185/" - }], - "use_after": null - }, - "super": { - "use_before": null, - "use_after": null - } - }, - "contest_type": { - "name": "tough", - "url": "http://pokeapi.co/api/v2/contest-type/5/" - }, - "contest_effect": { - "url": "http://pokeapi.co/api/v2/contest-effect/1/" - }, - "damage_class": { - "name": "physical", - "url": "http://pokeapi.co/api/v2/move-damage-class/2/" - }, - "effect_entries": [{ - "effect": "Inflicts [regular damage]{mechanic:regular-damage}.", - "short_effect": "Inflicts regular damage with no additional effect.", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "effect_changes": [], - "generation": { - "name": "generation-i", - "url": "http://pokeapi.co/api/v2/generation/1/" - }, - "meta": { - "ailment": { - "name": "none", - "url": "http://pokeapi.co/api/v2/move-ailment/0/" - }, - "category": { - "name": "damage", - "url": "http://pokeapi.co/api/v2/move-category/0/" - }, - "min_hits": null, - "max_hits": null, - "min_turns": null, - "max_turns": null, - "drain": 0, - "healing": 0, - "crit_rate": 0, - "ailment_chance": 0, - "flinch_chance": 0, - "stat_chance": 0 - }, - "names": [{ - "name": "Pound", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "past_values": [], - "stat_changes": [], - "super_contest_effect": { - "url": "http://pokeapi.co/api/v2/super-contest-effect/5/" - }, - "target": { - "name": "selected-pokemon", - "url": "http://pokeapi.co/api/v2/move-target/10/" - }, - "type": { - "name": "normal", - "url": "http://pokeapi.co/api/v2/type/1/" - } -} -``` - -###### response models - -#### Move - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this move resource | integer | -| name | The name for this move resource | string | -| accuracy | The percent value of how likely this move is to be successful | integer | -| effect_chance | The percent value of how likely it is this moves effect will happen | integer | -| pp | Power points. The number of times this move can be used | integer | -| priority | A value between -8 and 8. Sets the order in which moves are executed during battle. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Priority) for greater detail. | integer | -| power | The base power of this move with a value of 0 if it does not have a base power | integer | -| contest_combos | A detail of normal and super contest combos that require this move | list [ContestComboSets](#contestcombosets) | -| contest_type | The type of appeal this move gives a pokémon when used in a contest | [NamedAPIResource](#namedapiresource) ([ContestType](#contest-types)) | -| contest_effect | The effect the move has when used in a contest | [NamedAPIResource](#namedapiresource) ([ContestEffect](#contest-effects)) | -| damage_class | The type of damage the move inflicts on the target, e.g. physical | [NamedAPIResource](#namedapiresource) ([MoveDamageClass](#move-damage-classes)) | -| effect_entries | The effect of this move listed in different languages | list [VerboseEffect](#verboseeffect) | -| effect_changes | The list of previous effects this move has had across version groups of the games | list [AbilityEffectChange](#abilityeffectchange) | -| generation | The generation in which this move was introduced | [NamedAPIResource](#namedapiresource) ([Generation](#generations)) | -| meta | Meta data about this move | [MoveMetaData](#movemetadata) | -| names | The name of this move listed in different languages | list [Name](#resourcename) | -| past_values | A list of move resource value changes across ersion groups of the game | list [PastMoveStatValues](#pastmovestatvalues) | -| stat_changes | A list of stats this moves effects and how much it effects them | list [MoveStatChange](#movestatchange) | -| super_contest_effect | The effect the move has when used in a super contest | [NamedAPIResource](#namedapiresource) ([ContestEffect](#contest-effects)) | -| target | The type of target that will recieve the effects of the attack | [NamedAPIResource](#namedapiresource) ([MoveTarget](#move-targets)) | -| type | The elemental type of this move | [NamedAPIResource](#namedapiresource) ([Type](#types)) | - -#### ContestComboSets - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| normal | A detail of moves this move can be used before or after, granting additional appeal points in contests | list [ContestComboDetail](#contestcombodetail) | -| super | A detail of moves this move can be used before or after, granting additional appeal points in super contests | list [ContestComboDetail](#contestcombodetail) | - -#### ContestComboDetail - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| use_before | A list of moves to use before this move | list [NamedAPIResource](#namedapiresource) ([Move](#moves)) | -| use_after | A list of moves to use after this move | list [NamedAPIResource](#namedapiresource) ([Move](#moves)) | - -#### MoveMetaData - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| ailment | The status ailment this move inflicts on its target | [NamedAPIResource](#namedapiresource) ([MoveAilment](#move-ailments)) | -| category | The category of move this move falls under, e.g. damage or ailment | [NamedAPIResource](#namedapiresource) ([Move](#moves)) | -| min_hits | The minimum number of times this move hits. Null if it always only hits once. | integer | -| max_hits | The maximum number of times this move hits. Null if it always only hits once. | integer | -| min_turns | The minimum number of turns this move continues to take effect. Null if it always only lasts one turn. | integer | -| max_turns | The maximum number of turns this move continues to take effect. Null if it always only lasts one turn. | integer | -| drain | HP drain (if positive) or Recoil damage (if negative), in percent of damage done | integer | -| healing | The amount of hp gained by the attacking pokémon, in percent of it's maximum HP | integer | -| crit_rate | Critical hit rate bonus | integer | -| ailment_chance | The likelyhood this attack will cause an ailment | integer | -| flinch_chance | The likelyhood this attack will cause the target pokémon to flinch | integer | -| stat_chance | The likelyhood this attack will cause a stat change in the target pokémon | integer | - -#### MoveStatChange - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| change | The amount of change | integer | -| stat | The stat being affected | [NamedAPIResource](#namedapiresource) ([Stat](#stats)) | - -#### PastMoveStatValues - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| accuracy | The percent value of how likely this move is to be successful | integer | -| effect_chance | The percent value of how likely it is this moves effect will take effect | integer | -| power | The base power of this move with a value of 0 if it does not have a base power | integer | -| pp | Power points. The number of times this move can be used | integer | -| effect_entries | The effect of this move listed in different languages | list [VerboseEffect](#verboseeffect) | -| type | The elemental type of this move | [NamedAPIResource](#namedapiresource) ([Type](#types)) | -| version group | The version group in which these move stat values were in effect | [NamedAPIResource](#namedapiresource) ([VersionGroup](#version-groups)) | - - -## Move Ailments -Move Ailments are status conditions caused by moves used during battle. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/http://bulbapedia.bulbagarden.net/wiki/Status_condition) for greater detail. - -### GET api/v2/move-ailment/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "paralysis", - "moves": [{ - "name": "thunder-punch", - "url": "http://pokeapi.co/api/v2/move/9/" - }], - "names": [{ - "name": "Paralysis", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }] -} -``` - -###### response models - -#### Move Ailment - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this move ailment resource | integer | -| name | The name for this move ailment resource | string | -| moves | A list of moves that cause this ailment | list [NamedAPIResource](#namedapiresource) ([Move](#moves)) | -| names | The name of this move ailment listed in different languages | list [Name](#resourcename) | - - -## Move Battle Styles -Styles of moves when used in the Battle Palace. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Battle_Frontier_(Generation_III)) for greater detail. - -### GET api/v2/move-battle-style/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "attack", - "names": [{ - "name": "Attack", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }] -} -``` - -###### response models - -#### Move Battle Style - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this move battle style resource | integer | -| name | The name for this move battle style resource | string | -| names | The name of this move battle style listed in different languages | list [Name](#resourcename) | - - -## Move Categories -Very general categories that loosely group move effects. - -### GET api/v2/move-category/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "ailment", - "descriptions": [{ - "description": "No damage; inflicts status ailment", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "moves": [{ - "name": "sing", - "url": "http://pokeapi.co/api/v2/move/47/" - }] -} -``` - -###### response models - -#### Move Category - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this move category resource | integer | -| name | The name for this move category resource | string | -| moves | A list of moves that fall into this category | list [NamedAPIResource](#namedapiresource) ([Move](#moves)) | -| descriptions | The description of this move ailment listed in different languages | list [Description](#description) | - - -## Move Damage Classes -Damage classes moves can have, e.g. physical, special, or status (non-damaging). - -### GET api/v2/move-damage-class/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "status", - "descriptions": [{ - "description": "ダメージない", - "language": { - "name": "ja", - "url": "http://pokeapi.co/api/v2/language/1/" - } - }], - "moves": [{ - "name": "swords-dance", - "url": "http://pokeapi.co/api/v2/move/14/" - }] -} -``` - -###### response models - -#### Move Damage Class - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this move damage class resource | integer | -| name | The name for this move damage class resource | string | -| descriptions | The description of this move damage class listed in different languages | list [Description](#description) | -| moves | A list of moves that fall into this damage class | list [NamedAPIResource](#namedapiresource) ([Move](#moves)) | -| names | The name of this move damage class listed in different languages | list [Name](#resourcename) | - - -## Move Learn Methods -Methods by which pokémon can learn moves. - -### GET api/v2/move-learn-method/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "level-up", - "names": [{ - "name": "Level up", - "language": { - "name": "de", - "url": "http://pokeapi.co/api/v2/language/6/" - } - }], - "descriptions": [{ - "description": "Wird gelernt, wenn ein Pokémon ein bestimmtes Level erreicht.", - "language": { - "name": "de", - "url": "http://pokeapi.co/api/v2/language/6/" - } - }], - "version_groups": [{ - "name": "red-blue", - "url": "http://pokeapi.co/api/v2/version-group/1/" - }] -} -``` - -###### response models - -#### Move Learn Method - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this move learn method resource | integer | -| name | The name for this move learn method resource | string | -| descriptions | The description of this move learn method listed in different languages | list [Description](#description) | -| names | The name of this move learn method listed in different languages | list [Name](#resourcename) | -| version_groups | A list of version groups where moves can be learned through this method | list [NamedAPIResource](#namedapiresource) ([VersionGroup](#version-groups)) | - - -## Move Targets -Targets moves can be directed at during battle. Targets can be pokémon, environments or even other moves. - -### GET api/v2/move-target/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "specific-move", - "descriptions": [{ - "description": "Eine spezifische Fähigkeit. Wie diese Fähigkeit genutzt wird hängt von den genutzten Fähigkeiten ab.", - "language": { - "name": "de", - "url": "http://pokeapi.co/api/v2/language/6/" - } - }], - "moves": [{ - "name": "counter", - "url": "http://pokeapi.co/api/v2/move/68/" - }], - "names": [{ - "name": "Spezifische Fähigkeit", - "language": { - "name": "de", - "url": "http://pokeapi.co/api/v2/language/6/" - } - }] -} -``` - -###### response models - -#### Move Target - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this move target resource | integer | -| name | The name for this move target resource | string | -| descriptions | The description of this move target listed in different languages | list [Description](#description) | -| moves | A list of moves that that are directed at this target | list [NamedAPIResource](#namedapiresource) ([Move](#moves)) | -| names | The name of this move target listed in different languages | list [Name](#resourcename) | - - - -

Locations

- -## Locations -Locations that can be visited within the games. Locations make up sizable portions of regions, like cities or routes. - -### GET api/v2/location/{id} - -###### example response - -```json -{ - "id": 1, - "name": "canalave-city", - "region": { - "name": "sinnoh", - "url": "http://pokeapi.co/api/v2/region/4/" - }, - "names": [{ - "name": "Canalave City", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "game_indices": [{ - "game_index": 7, - "generation": { - "name": "generation-iv", - "url": "http://pokeapi.co/api/v2/generation/4/" - } - }], - "areas": [{ - "name": "canalave-city-area", - "url": "http://pokeapi.co/api/v2/location-area/1/" - }] -} -``` - -###### response models - -#### Location - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this location resource | integer | -| name | The name for this location resource | string | -| region | The region this location can be found in | [NamedAPIResource](#namedapiresource) ([Region](#regions)) | -| names | The name of this language listed in different languages | list [Name](#resourcename) | -| game_indices | A list of game indices relevent to this location by generation | list [GenerationGameIndex](#generationgameindex) | -| areas | Areas that can be found within this location | [APIResource](#apiresource) ([LocationArea](#location-areas)) | - - -## Location Areas -Location areas are sections of areas, such as floors in a building or cave. Each area has its own set of possible pokemon encounters. - -### GET api/v2/location-area/{id} - -###### example response - -```json -{ - "id": 1, - "name": "canalave-city-area", - "game_index": 1, - "encounter_method_rates": [{ - "encounter_method": { - "name": "old-rod", - "url": "http://pokeapi.co/api/v2/encounter-method/2/" - }, - "version_details": [{ - "rate": 25, - "version": { - "name": "platinum", - "url": "http://pokeapi.co/api/v2/version/14/" - } - }] - }], - "location": { - "name": "canalave-city", - "url": "http://pokeapi.co/api/v2/location/1/" - }, - "names": [{ - "name": "", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "pokemon_encounters": [{ - "pokemon": { - "name": "tentacool", - "url": "http://pokeapi.co/api/v2/pokemon/72/" - }, - "version_details": [{ - "version": { - "name": "diamond", - "url": "http://pokeapi.co/api/v2/version/12/" - }, - "max_chance": 60, - "encounter_details": [{ - "min_level": 20, - "max_level": 30, - "condition_values": [], - "chance": 60, - "method": { - "name": "surf", - "url": "http://pokeapi.co/api/v2/encounter-method/5/" - } - }] - }] - }] -} -``` - -###### response models - -#### LocationArea - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this location resource | integer | -| name | The name for this location resource | string | -| game_index | The internal id of an api resource within game data | integer | -| encounter_method_rates | A list of methods in which pokémon may be encountered in this area and how likely the method will occur depending on the version of the game | list [EncounterMethodRate](#encountermethodrate) | -| location | The region this location can be found in | [NamedAPIResource](#namedapiresource) ([Region](#regions)) | -| names | The name of this location area listed in different languages | list [Name](#resourcename) | -| pokemon_encounters | A list of pokémon that can be encountered in this area along with version specific details about the encounter | list [PokemonEncounter](#pokemonencounter) | - -#### EncounterMethodRate - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| encounter_method | The method in which pokémon may be encountered in an area. | [EncounterMethod](#encountermehtod) | -| version_details | The chance of the encounter to occur on a version of the game. | list [EncounterVersionDetails](#encounterversiondetails) | - -#### EncounterVersionDetails - -| Name | Description | Data Type | -| ------- | ----------- | --------- | -| rate | The chance of an encounter to occur. | integer | -| version | The version of the game in which the encounter can occur with the given chance. | [NamedAPIResource](#namedapiresource) ([Version](#version)) | - -#### PokemonEncounter - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| pokemon | The pokémon being encountered | [NamedAPIResource](#namedapiresource) ([Pokemon](#pokemon)) | -| version_details | A list of versions and encounters with pokémon that might happen in the referenced location area | list [VersionEncounterDetail](#versionencounterdetail) | - - -## Pal Park Areas -Areas used for grouping pokémon encounters in Pal Park. They're like habitats that are specific to Pal Park. - -### GET api/v2/pal-park-area/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "forest", - "names": [{ - "name": "Forest", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "pokemon_encounters": [{ - "base_score": 30, - "rate": 50, - "pokemon_species": { - "name": "caterpie", - "url": "http://pokeapi.co/api/v2/pokemon-species/10/" - } - }] -} -``` - -###### response models - -#### PalParkArea - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this pal park area resource | integer | -| name | The name for this pal park area resource | string | -| names | The name of this pal park area listed in different languages | list [Name](#resourcename) | -| pokemon_encounters | A list of pokémon encountered in thi pal park area along with details | list [PalParkEncounterSpecies](#palparkencounterspecies) | - -#### PalParkEncounterSpecies - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| base_score | The base score given to the player when this pokémon is caught during a pal park run | integer | -| rate | The base rate for encountering this pokémon in this pal park area | integer | -| pokemon_species | The pokémon species being encountered | [NamedAPIResource](#namedapiresource) ([PokemonSpecies](#pokemonspecies)) | - - -## Regions -A region is an organized area of the pokémon world. Most often, the main difference between regions is the species of pokémon that can be encountered within them. - -### GET api/v2/region/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "kanto", - "locations": [{ - "name": "celadon-city", - "url": "http://pokeapi.co/api/v2/location/67/" - }], - "main_generation": { - "name": "generation-i", - "url": "http://pokeapi.co/api/v2/generation/1/" - }, - "names": [{ - "name": "Kanto", - "language": { - "name": "de", - "url": "http://pokeapi.co/api/v2/language/6/" - } - }], - "pokedexes": [{ - "name": "kanto", - "url": "http://pokeapi.co/api/v2/pokedex/2/" - }], - "version_groups": [{ - "name": "red-blue", - "url": "http://pokeapi.co/api/v2/version-group/1/" - }] -} -``` - -###### response models - -#### Region - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this region resource | integer | -| name | The name for this region resource | string | -| locations | A list of locations that can be found in this region | [NamedAPIResource](#namedapiresource) ([Location](#locations)) | -| main_generation | The generation this region was introduced in | [NamedAPIResource](#namedapiresource) ([Generation](#generations)) | -| names | The name of this region listed in different languages | list [Name](#resourcename) | -| pokedexes | A list of pokédexes that catalogue pokemon in this region | list [NamedAPIResource](#namedapiresource) ([Pokedex](#pokedexes)) | -| version_groups | A list of version groups where this region can be visited | list [NamedAPIResource](#namedapiresource) ([VersionGroup](#version-groups)) | - - -

Pokemon

- -## Abilities - -Abilities provide passive effects for pokémon in battle or in the overworld. Pokémon have mutiple possible abilities but can have only one ability at a time. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Ability) for greater detail. - -### GET api/v2/ability/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "stench", - "is_main_series": true, - "generation": { - "name": "generation-iii", - "url": "http://pokeapi.co/api/v2/generation/3/" - }, - "names": [{ - "name": "Stench", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "effect_entries": [{ - "effect": "This Pokémon's damaging moves have a 10% chance to make the target [flinch]{mechanic:flinch} with each hit if they do not already cause flinching as a secondary effect.\n\nThis ability does not stack with a held item.\n\nOverworld: The wild encounter rate is halved while this Pokémon is first in the party.", - "short_effect": "Has a 10% chance of making target Pokémon [flinch]{mechanic:flinch} with each hit.", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "effect_changes": [{ - "version_group": { - "name": "black-white", - "url": "http://pokeapi.co/api/v2/version-group/11/" - }, - "effect_entries": [{ - "effect": "Has no effect in battle.", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }] - }], - "flavor_text_entries": [{ - "flavor_text": "臭くて 相手が\nひるむ ことがある。", - "language": { - "name": "ja-kanji", - "url": "http://pokeapi.co/api/v2/language/11/" - }, - "version_group": { - "name": "x-y", - "url": "http://pokeapi.co/api/v2/version-group/15/" - } - }], - "pokemon": [{ - "is_hidden": true, - "slot": 3, - "pokemon": { - "name": "gloom", - "url": "http://pokeapi.co/api/v2/pokemon/44/" - } - }] -} -``` - -###### response models - -#### Ability - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this ability resource | integer | -| name | The name for this ability resource | string | -| is_main_series | Whether or not this ability originated in the main series of the video games | boolean | -| generation | The generation this ability originated in | [NamedAPIResource](#namedapiresource) ([Generation](#generations)) | -| names | The name of this ability listed in different languages | list [Name](#resourcename) | -| effect_entries | The effect of this ability listed in different languages | list [VerboseEffect](#verboseeffect) | -| effect_changes | The list of previous effects this ability has had across version groups | list [AbilityEffectChange](#abilityeffectchange) | -| flavor_text_entries | The flavor text of this ability listed in different languages | list [VersionGroupFlavorText](#versiongroupflavortext) | -| pokemon | A list of pokémon that could potentially have this ability | list [AbilityPokemon](#abilitypokemon) | - -#### AbilityEffectChange - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| effect_entries | The previous effect of this ability listed in different languages | [Effect](#effect) | -| version_group | The version group in which the previous effect of this ability originated | [NamedAPIResource](#namedapiresource) ([VersionGroup](#versiongroups)) | - -#### AbilityFlavorText - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| flavor_text | The localized name for an api resource in a specific language | string | -| language | The language this name is in | [NamedAPIResource](#namedapiresource) ([Language](#languages)) | -| version_group | The version group that uses this flavor text | [NamedAPIResource](#namedapiresource) ([VersionGroup](#version-groups)) | - -#### AbilityPokemon - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| is_hidden | Whether or not this a hidden ability for the referenced pokémon | boolean | -| slot | Pokémon have 3 ability 'slots' which hold references to possible abilities they could have. This is the slot of this ability for the referenced pokémon. | integer | -| pokemon | The pokémon this ability could belong to | [NamedAPIResource](#namedapiresource) ([Pokemon](#pokemon)) | - - -## Characteristics -Characteristics indicate which stat contains a Pokémon's highest IV. A Pokémon's Characteristic is determined by the remainder of its highest IV divided by 5 (gene_modulo). Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Characteristic) for greater detail. - -### GET api/v2/characteristic/{id} - -###### example response - -```json -{ - "id": 1, - "gene_modulo": 0, - "possible_values": [0, 5, 10, 15, 20, 25, 30], - "highest_stat": { - "name": "hp", - "url": "http://pokeapi.co/api/v2/stat/1/" - }, - "descriptions": [{ - "description": "Loves to eat", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }] -} - -``` - -###### response models - -#### Characteristic - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this characteristic resource | integer | -| gene_modulo | The remainder of the highest stat/IV divided by 5 | integer | -| possible_values | The possible values of the highest stat that would result in a pokémon recieving this characteristic when divided by 5 | list integer | -| descriptions | The descriptions of this characteristic listed in different languages | list [Description](#description) | - - -## Egg Groups -Egg Groups are categories which determine which Pokémon are able to interbreed. Pokémon may belong to either one or two Egg Groups. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Egg_Group) for greater detail. - -### GET api/v2/egg-group/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "monster", - "names": [{ - "name": "かいじゅう", - "language": { - "name": "ja", - "url": "http://pokeapi.co/api/v2/language/1/" - } - }], - "pokemon_species": [{ - "name": "bulbasaur", - "url": "http://pokeapi.co/api/v2/pokemon-species/1/" - }] -} - -``` - -###### response models - -#### EggGroup - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this egg group resource | integer | -| name | The name for this egg group resource | string | -| names | The name of this egg group listed in different languages | list [Name](#resourcename) | -| pokemon_species | A list of all pokémon species that are members of this egg group | list [NamedAPIResource](#namedapiresource) ([PokemonSpecies](#pokemon-species)) | - - -## Genders -Genders were introduced in Generation II for the purposes of breeding pokémon but can also result in visual differences or even different evolutionary lines. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Gender) for greater detail. - -### GET api/v2/gender/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "female", - "pokemon_species_details": [{ - "rate": 1, - "pokemon_species": { - "name": "bulbasaur", - "url": "http://pokeapi.co/api/v2/pokemon-species/1/" - } - }], - "required_for_evolution": [{ - "name": "wormadam", - "url": "http://pokeapi.co/api/v2/pokemon-species/413/" - }] -} - -``` - -###### response models - -#### Gender - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this gender resource | integer | -| name | The name for this gender resource | string | -| pokemon_species_details | A list of pokémon species that can be this gender and how likely it is that they will be | list [PokemonSpeciesGender](#pokemonspeciesgender) | -| required_for_evolution | A list of pokémon species that required this gender in order for a pokémon to evolve into them | list [NamedAPIResource](#namedapiresource) ([PokemonSpecies](#pokemon-species)) | - - -#### PokemonSpeciesGender - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| rate | The chance of this Pokémon being female, in eighths; or -1 for genderless | integer | -| pokemon_species | A pokemon species that can be the referenced gender | [NamedAPIResource](#namedapiresource) ([PokemonSpecies](#pokemon-species)) | - - -## Growth Rates -Growth rates are the speed with which pokémon gain levels through experience. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Experience) for greater detail. - -### GET api/v2/growth-rate/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "slow", - "formula": "\\frac{5x^3}{4}", - "descriptions": [{ - "description": "langsam", - "language": { - "name": "de", - "url": "http://pokeapi.co/api/v2/language/6/" - } - }], - "levels": [{ - "level": 100, - "experience": 1250000 - }], - "pokemon_species": [{ - "name": "growlithe", - "url": "http://pokeapi.co/api/v2/pokemon-species/58/" - }] -} -``` - -###### response models - -#### Growth Rate - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this gender resource | integer | -| name | The name for this gender resource | string | -| formula | The formula used to calculate the rate at which the pokémon species gains level | string | -| descriptions | The descriptions of this characteristic listed in different languages | list [Description](#description) | -| levels | A list of levels and the amount of experienced needed to atain them based on this growth rate | list [GrowthRateExperienceLevel](#growthrateexperiencelevel) | -| pokemon_species | A list of pokémon species that gain levels at this growth rate | list [NamedAPIResource](#namedapiresource) ([PokemonSpecies](#pokemon-species)) | - -#### GrowthRateExperienceLevel - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| level | The level gained | integer | -| experience | The amount of experience required to reach the referenced level | integer | - - -## Natures -Natures influence how a pokémon's stats grow. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Nature) for greater detail. - -### GET api/v2/nature/{id or name} - -###### example response - -```json -{ - "id": 2, - "name": "bold", - "decreased_stat": { - "name": "attack", - "url": "http://pokeapi.co/api/v2/stat/2/" - }, - "increased_stat": { - "name": "defense", - "url": "http://pokeapi.co/api/v2/stat/3/" - }, - "likes_flavor": { - "name": "sour", - "url": "http://pokeapi.co/api/v2/berry-flavor/5/" - }, - "hates_flavor": { - "name": "spicy", - "url": "http://pokeapi.co/api/v2/berry-flavor/1/" - }, - "pokeathlon_stat_changes": [{ - "max_change": -2, - "pokeathlon_stat": { - "name": "speed", - "url": "http://pokeapi.co/api/v2/pokeathlon-stat/1/" - } - }], - "move_battle_style_preferences": [{ - "low_hp_preference": 32, - "high_hp_preference": 30, - "move_battle_style": { - "name": "attack", - "url": "http://pokeapi.co/api/v2/move-battle-style/1/" - } - }], - "names": [{ - "name": "ずぶとい", - "language": { - "name": "ja", - "url": "http://pokeapi.co/api/v2/language/1/" - } - }] -} -``` - -###### response models - -#### Nature - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this nature resource | integer | -| name | The name for this nature resource | string | -| decreased_stat | The stat decreased by 10% in pokémon with this nature | [NamedAPIResource](#namedapiresource) ([Stat](#stats)) | -| increased_stat | The stat increased by 10% in pokémon with this nature | [NamedAPIResource](#namedapiresource) ([Stat](#stats)) | -| hates_flavor | The flavor hated by pokémon with this nature | [NamedAPIResource](#namedapiresource) ([BerryFlavor](#berry-flavors)) | -| likes_flavor | The flavor liked by pokémon with this nature | [NamedAPIResource](#namedapiresource) ([BerryFlavor](#berry-flavors)) | -| pokeathlon_stat_changes | A list of pokéathlon stats this nature effects and how much it effects them | list [NatureStatChange](#naturestatchange) | -| move_battle_style_preferences | A list of battle styles and how likely a pokémon with this nature is to use them in the Battle Palace or Battle Tent. | list [MoveBattleStylePreference](#movebattlestylepreference) | -| names | The name of this nature listed in different languages | list [Name](#resourcename) | - -#### NatureStatChange - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| change | The amount of change | integer | -| stat | The stat being affected | [NamedAPIResource](#namedapiresource) ([PokeathlonStat](#pokeathlon-stats)) | - -#### MoveBattleStylePreference - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| low_hp_preference | Chance of using the move, in percent, if HP is under one half | integer | -| high_hp_preference | Chance of using the move, in percent, if HP is over one half | integer | -| move_battle_style | The move battle style | [NamedAPIResource](#namedapiresource) ([MoveBattleStyle](#move-battle-styles)) | - - -## Pokéathlon Stats -Pokéathlon Stats are different attributes of a pokémon's performance in pokeathlons. In Pokéathlons, competitions happen on different courses; one for each of the different pokeathlon stats. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Pokéathlon) for greater detail. - -### GET api/v2/pokeathlon-stat/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "speed", - "affecting_natures": { - "increase": [{ - "max_change": 2, - "nature": { - "name": "timid", - "url": "http://pokeapi.co/api/v2/nature/5/" - } - }], - "decrease": [{ - "max_change": -1, - "nature": { - "name": "hardy", - "url": "http://pokeapi.co/api/v2/nature/1/" - } - }] - }, - "names": [{ - "name": "Speed", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }] -} -``` - -###### response models - -#### PokeathlonStat - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this pokéathlon stat resource | integer | -| name | The name for this pokéathlon stat resource | string | -| names | The name of this pokéathlon stat listed in different languages | list [Name](#resourcename) | -| affecting_natures | A detail of natures which affect this pokéathlon stat positively or negatively | [NaturePokeathlonStatAffectSets](#naturepokeathlonstataffectsets) | - -#### NaturePokeathlonStatAffectSets - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| increase | A list of natures and how they change the referenced pokéathlon stat | list [NaturePokeathlonStatAffect](#naturepokeathlonstataffect) | -| decrease | A list of natures and how they change the referenced pokéathlon stat | list [NaturePokeathlonStatAffect](#naturepokeathlonstataffect) | - -#### NaturePokeathlonStatAffect - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| max_change | The maximum amount of change to the referenced pokéathlon stat | integer | -| nature | The nature causing the change | [NamedAPIResource](#namedapiresource) ([Nature](#natures)) | - - - -## Pokémon -Pokémon are the creatures that inhabit the world of the pokemon games. They can be caught using pokéballs and trained by battling with other pokémon. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Pokémon_(species)) for greater detail. - -### GET api/v2/pokemon/{id or name} - -###### example response - -```json -{ - "id": 35, - "name": "clefairy", - "base_experience": 113, - "height": 6, - "is_default": true, - "order": 56, - "weight": 75, - "abilities": [{ - "is_hidden": true, - "slot": 3, - "ability": { - "name": "friend-guard", - "url": "https://pokeapi.co/api/v2/ability/132/" - } - }], - "forms": [{ - "name": "clefairy", - "url": "https://pokeapi.co/api/v2/pokemon-form/35/" - }], - "game_indices": [{ - "game_index": 35, - "version": { - "name": "white-2", - "url": "https://pokeapi.co/api/v2/version/22/" - } - }], - "held_items": [{ - "item": { - "name": "moon-stone", - "url": "https://pokeapi.co/api/v2/item/81/" - }, - "version_details": [{ - "rarity": 5, - "version": { - "name": "ruby", - "url": "https://pokeapi.co/api/v2/version/7/" - } - }] - }], - "location_area_encounters": "/api/v2/pokemon/35/encounters", - "moves": [{ - "move": { - "name": "pound", - "url": "https://pokeapi.co/api/v2/move/1/" - }, - "version_group_details": [{ - "level_learned_at": 1, - "version_group": { - "name": "red-blue", - "url": "https://pokeapi.co/api/v2/version-group/1/" - }, - "move_learn_method": { - "name": "level-up", - "url": "https://pokeapi.co/api/v2/move-learn-method/1/" - } - }] - }], - "species": { - "name": "clefairy", - "url": "https://pokeapi.co/api/v2/pokemon-species/35/" - }, - "stats": [{ - "base_stat": 35, - "effort": 0, - "stat": { - "name": "speed", - "url": "https://pokeapi.co/api/v2/stat/6/" - } - }], - "types": [{ - "slot": 1, - "type": { - "name": "fairy", - "url": "https://pokeapi.co/api/v2/type/18/" - } - }], - "past_types": [{ - "generation": { - "name": "generation-v", - "url": "https://pokeapi.co/api/v2/generation/5/" - }, - "types": [ - { - "slot": 1, - "type": { - "name": "normal", - "url": "https://pokeapi.co/api/v2/type/1/" - } - } - ] - }] -} -``` - -###### response models - -#### Pokemon - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this pokémon resource | integer | -| name | The name for this pokémon resource | string | -| base_experience | The base experience gained for defeating this pokémon | integer | -| height | The height of this pokémon | integer | -| is_default | Set for exactly one pokémon used as the default for each species | boolean | -| order | Order for sorting. Almost national order, except families are grouped together. | integer | -| weight | The mass of this pokémon | integer | -| abilities | A list of abilities this pokémon could potentially have | list [PokemonAbility](#pokemonability) | -| forms | A list of forms this pokémon can take on | list [NamedAPIResource](#namedapiresource) ([PokemonForm](#pokemon-forms)) | -| game_indices | A list of game indices relevent to pokémon item by generation | list [VersionGameIndex](#versiongameindex) | -| held_items | A list of items this pokémon may be holding when encountered | list [NamedAPIResource](#namedapiresource) ([Item](#items)) | -| location_area_encounters | A list of location areas as well as encounter details pertaining to specific versions | list [LocationAreaEncounter](#locationareaencounter) | -| moves | A list of moves along with learn methods and level details pertaining to specific version groups | list [NamedAPIResource](#namedapiresource) ([Move](#moves)) | -| species | The species this pokémon belongs to | [NamedAPIResource](#namedapiresource) ([PokemonSpecies](#pokemon-species)) | -| stats | A list of base stat values for this pokémon | list [NamedAPIResource](#namedapiresource) ([Stat](#stats)) | -| types | A list of details showing types this pokémon has | list [PokemonType](#pokemontype) | -| past_types | A list of details showing types this pokémon had in previous generations | list [PokemonTypePast](#pokemontypepast) | - -#### PokemonAbility - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| is_hidden | Whether or not this is a hidden ability | boolean | -| slot | The slot this ability occupies in this pokémon species | integer | -| ability | The ability the pokémon may have | [NamedAPIResource](#namedapiresource) ([Ability](#abilities)) | - -#### PokemonType - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| slot | The order the pokémon types are listed in | integer | -| type | The type the referenced pokémon has | string | - -#### PokemonFormType - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| slot | The order the Pokémon form types are listed in | integer | -| type | The type the referenced Pokémon form has | string | - -#### PokemonTypePast - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| generation | The last generation in which the referenced pokémon had the listed types | [NamedAPIResource](#namedapiresource) ([Generation](#generations)) | -| types | The types the referenced pokémon had up to and including the listed generation | list [PokemonType](#pokemontype) | - -#### LocationAreaEncounter - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| location_area | The location area the referenced pokémon can be encountered in | [APIResource](#apiresource) ([LocationArea](#location-areas)) | -| version_details | A list of versions and encounters with the referenced pokémon that might happen | list [VersionEncounterDetail](#versionencounterdetail) | - - -## Pokémon Colors -Colors used for sorting pokémon in a pokédex. The color listed in the Pokédex is usually the color most apparent or covering each Pokémon's body. No orange category exists; Pokémon that are primarily orange are listed as red or brown. - -### GET api/v2/pokemon-color/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "black", - "names": [{ - "name": "黒い", - "language": { - "name": "ja", - "url": "http://pokeapi.co/api/v2/language/1/" - } - }], - "pokemon_species": [{ - "name": "snorlax", - "url": "http://pokeapi.co/api/v2/pokemon-species/143/" - }] -} -``` - -###### response models - -#### PokemonColor - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this pokémon color resource | integer | -| name | The name for this pokémon color resource | string | -| names | The name of this pokémon color listed in different languages | list [Name](#resourcename) | -| pokemon_species | A list of the pokémon species that have this color | list [NamedAPIResource](#namedapiresource) ([PokemonSpecies](#pokemon-species)) | - - -## Pokémon Forms -Some pokémon have the ability to take on different forms. At times, these differences are purely cosmetic and have no bearing on the difference in the Pokémon's stats from another; however, several Pokémon differ in stats (other than HP), type, and Ability depending on their form. - -### GET api/v2/pokemon-form/{id or name} - -###### example response - -```json -{ - "id": 10041, - "name": "arceus-bug", - "order": 631, - "form_order": 7, - "is_default": false, - "is_battle_only": false, - "is_mega": false, - "form_name": "bug", - "pokemon": { - "name": "arceus", - "url": "https://pokeapi.co/api/v2/pokemon/493/" - }, - "version_group": { - "name": "diamond-pearl", - "url": "https://pokeapi.co/api/v2/version-group/8/" - }, - "types": [ - { - "slot": 1, - "type": { - "name": "bug", - "url": "https://pokeapi.co/api/v2/type/7/" - } - } - ] -} -``` - -###### response models - -#### PokemonForm - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this pokémon form resource | integer | -| name | The name for this pokémon form resource | string | -| order | The order in which forms should be sorted within all forms. Multiple forms may have equal order, in which case they should fall back on sorting by name. | integer | -| form_order | The order in which forms should be sorted within a species' forms | integer | -| is_default | True for exactly one form used as the default for each pokémon | boolean | -| is_battle_only | Whether or not this form can only happen during battle | boolean | -| is_mega | Whether or not this form requires mega evolution | boolean | -| form_name | The name of this form | string | -| pokemon | The pokémon that can take on this form | [NamedAPIResource](#namedapiresource) ([Pokemon](#pokemon)) | -| version_group | The version group this pokémon form was introduced in | [NamedAPIResource](#namedapiresource) ([VersionGroup](#version-groups)) | -| types | A list of details showing types this Pokémon form has, if they differ from the types of the Pokémon that can take on this form | list [PokemonFormType](#pokemonformtype) | - - -## Pokémon Habitats -Habitats are generally different terrain pokémon can be found in but can also be areas designated for rare or legendary pokémon. - -### GET api/v2/pokemon-habitat/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "cave", - "names": [ - { - "name": "grottes", - "language": { - "name": "fr", - "url": "http://pokeapi.co/api/v2/language/5/" - } - } - ], - "pokemon_species": [ - { - "name": "zubat", - "url": "http://pokeapi.co/api/v2/pokemon-species/41/" - } - ] -} -``` - -###### response models - -#### PokemonHabitat - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this pokémon habitat resource | integer | -| name | The name for this pokémon habitat resource | string | -| names | The name of this pokémon habitat listed in different languages | list [Name](#resourcename) | -| pokemon_species | A list of the pokémon species that can be found in this habitat | list [NamedAPIResource](#namedapiresource) ([PokemonSpecies](#pokemon-species)) | - - -## Pokémon Shapes -Shapes used for sorting pokémon in a pokédex. - -### GET api/v2/pokemon-shape/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "ball", - "awesome_names": [ - { - "awesome_name": "Pomaceous", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - } - ], - "names": [ - { - "name": "Ball", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - } - ], - "pokemon_species": [ - { - "name": "shellder", - "url": "http://pokeapi.co/api/v2/pokemon-species/90/" - } - ] -} -``` - -###### response models - -#### PokemonShape - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this pokémon shape resource | integer | -| name | The name for this pokémon shape resource | string | -| awesome_names | The "scientific" name of this pokémon shape listed in different languages | list [AwesomeName](#awesomename) | -| names | The name of this pokémon shape listed in different languages | list [Name](#resourcename) | -| pokemon_species | A list of the pokémon species that have this shape | list [NamedAPIResource](#namedapiresource) ([PokemonSpecies](#pokemon-species)) | - -#### AwesomeName - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| awesome_name | The localized "scientific" name for an api resource in a specific language | string | -| language | The language this "scientific" name is in | [NamedAPIResource](#namedapiresource) ([Language](#languages)) | - - -## Pokémon Species -A Pokémon Species forms the basis for at least one pokémon. Attributes of a Pokémon species are shared across all varieties of pokémon within the species. A good example is Wormadam; Wormadam is the species which can be found in three different varieties, Wormadam-Trash, Wormadam-Sandy and Wormadam-Plant. - -### GET api/v2/pokemon-species/{id or name} - -###### example response - -```json -{ - "id": 413, - "name": "wormadam", - "order": 441, - "gender_rate": 8, - "capture_rate": 45, - "base_happiness": 70, - "is_baby": false, - "hatch_counter": 15, - "has_gender_differences": false, - "forms_switchable": false, - "growth_rate": { - "name": "medium", - "url": "http://pokeapi.co/api/v2/growth-rate/2/" - }, - "pokedex_numbers": [{ - "entry_number": 45, - "pokedex": { - "name": "kalos-central", - "url": "http://pokeapi.co/api/v2/pokedex/12/" - } - }], - "egg_groups": [{ - "name": "bug", - "url": "http://pokeapi.co/api/v2/egg-group/3/" - }], - "color": { - "name": "gray", - "url": "http://pokeapi.co/api/v2/pokemon-color/4/" - }, - "shape": { - "name": "squiggle", - "url": "http://pokeapi.co/api/v2/pokemon-shape/2/" - }, - "evolves_from_species": { - "name": "burmy", - "url": "http://pokeapi.co/api/v2/pokemon-species/412/" - }, - "evolution_chain": { - "url": "http://pokeapi.co/api/v2/evolution-chain/213/" - }, - "habitat": null, - "generation": { - "name": "generation-iv", - "url": "http://pokeapi.co/api/v2/generation/4/" - }, - "names": [{ - "name": "Wormadam", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "form_descriptions": [{ - "description": "Forms have different stats and movepools. During evolution, Burmy's current cloak becomes Wormadam's form, and can no longer be changed.", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "genera": [{ - "genus": "Bagworm", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }], - "varieties": [{ - "is_default": true, - "pokemon": { - "name": "wormadam-plant", - "url": "http://pokeapi.co/api/v2/pokemon/413/" - } - }] -} -``` - -###### response models - -#### PokemonSpecies - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this pokémon species resource | integer | -| name | The name for this pokémon species resource | string | -| order | The order in which species should be sorted. Based on National Dex order, except families are grouped together and sorted by stage. | integer | -| gender_rate | The chance of this Pokémon being female, in eighths; or -1 for genderless | integer | -| capture_rate | The base capture rate; up to 255. The higher the number, the easier the catch. | integer | -| base_happiness | The happiness when caught by a normal pokéball; up to 255. The higher the number, the happier the pokémon. | integer | -| is_baby | Whether or not this is a baby pokémon | boolean | -| hatch_counter | Initial hatch counter: one must walk 255 × (hatch_counter + 1) steps before this Pokémon's egg hatches, unless utilizing bonuses like Flame Body's | integer | -| has_gender_differences | Whether or not this pokémon can have different genders | boolean | -| forms_switchable | Whether or not this pokémon has multiple forms and can switch between them | boolean | -| growth_rate | The rate at which this pokémon species gains levels | [NamedAPIResource](#namedapiresource) ([GrowthRate](#growth-rates)) | -| pokedex_numbers | A list of pokedexes and the indexes reserved within them for this pokémon species | list [PokemonSpeciesDexEntry](#pokemonspeciesdexentry) | -| egg_groups | A list of egg groups this pokémon species is a member of | list [NamedAPIResource](#namedapiresource) ([EggGroup](#egg-groups)) | -| color | The color of this pokémon for gimmicky pokedex search | list [NamedAPIResource](#namedapiresource) ([PokemonColor](#pokemon-colors)) | -| shape | The shape of this pokémon for gimmicky pokedex search | list [NamedAPIResource](#namedapiresource) ([PokemonShape](#pokemon-shapes)) | -| evolves_from_species | The pokémon species that evolves into this pokemon_species | [NamedAPIResource](#namedapiresource) ([PokemonSpecies](#pokemon-species)) | -| evolution_chain | The evolution chain this pokémon species is a member of | [APIResource](#apiresource) ([EvolutionChain](#evolution-chains)) | -| habitat | The habitat this pokémon species can be encountered in | [NamedAPIResource](#namedapiresource) ([PokemonHabitat](#pokemon-habitats)) | -| generation | The generation this pokémon species was introduced in | [NamedAPIResource](#namedapiresource) ([Generation](#generations)) | -| names | The name of this pokémon species listed in different languages | list [Name](#resourcename) | -| pal_park_encounters | A list of encounters that can be had with this pokémon species in pal park | list [PalParkEncounterArea](#palparkencounterarea) | -| form_descriptions | Descriptions of different forms pokémon take on within the pokémon species | list [Description](#description) | -| genera | The genus of this pokémon species listed in multiple languages | [Genus](#genus) | -| varieties | A list of the pokémon that exist within this pokémon species | list [NamedAPIResource](#namedapiresource) ([Pokemon](#pokemon)) | - -#### Genus - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| genus | The localized genus for the referenced pokémon species | string | -| language | The language this genus is in | [NamedAPIResource](#namedapiresource) ([Language](#languages)) | - -#### PokemonSpeciesDexEntry - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| entry_number | The index number within the pokédex | integer | -| name | The pokédex the referenced pokémon species can be found in | [NamedAPIResource](#namedapiresource) ([Pokedex](#pokedexes)) | - -#### PalParkEncounterArea - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| base_score | The base score given to the player when the referenced pokemon is caught during a pal park run | integer | -| rate | The base rate for encountering the referenced pokemon in this pal park area | integer | -| area | The pal park area where this encounter happens | [NamedAPIResource](#namedapiresource) ([PalParkArea](#pal-park-areas)) | - - -## Stats -Stats determine certain aspects of battles. Each pokémon has a value for each stat which grows as they gain levels and can be altered momenarily by effects in battles. - -### GET api/v2/stat/{id or name} - -###### example response - -```json -{ - "id": 2, - "name": "attack", - "game_index": 2, - "is_battle_only": false, - "affecting_moves": { - "increase": [{ - "change": 2, - "move": { - "name": "swords-dance", - "url": "http://pokeapi.co/api/v2/move/14/" - } - }], - "decrease": [{ - "change": -1, - "move": { - "name": "growl", - "url": "http://pokeapi.co/api/v2/move/45/" - } - }] - }, - "affecting_natures": { - "increase": [{ - "name": "lonely", - "url": "http://pokeapi.co/api/v2/nature/6/" - }], - "decrease": [{ - "name": "bold", - "url": "http://pokeapi.co/api/v2/nature/2/" - }] - }, - "characteristics": [{ - "url": "http://pokeapi.co/api/v2/characteristic/2/" - }], - "move_damage_class": { - "name": "physical", - "url": "http://pokeapi.co/api/v2/move-damage-class/2/" - }, - "names": [{ - "name": "こうげき", - "language": { - "name": "ja", - "url": "http://pokeapi.co/api/v2/language/1/" - } - }] -} -``` - -###### response models - -#### Stat - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this stat resource | integer | -| name | The name for this stat resource | string | -| game_index | ID the games use for this stat | integer | -| is_battle_only | Whether this stat only exists within a battle | boolean | -| affecting_moves | A detail of moves which affect this stat positively or negatively | [MoveStatAffectSets](#movestataffectsets) | -| affecting_natures | A detail of natures which affect this stat positively or negatively | [NatureStatAffectSets](#naturestataffectsets) | -| characteristics | A list of characteristics that are set on a pokemon when its highest base stat is this stat | list [APIResource](#apiresource) ([Characteristic](#characteristics)) | -| move_damage_class | The class of damage this stat is directly related to | [NamedAPIResource](#namedapiresource) ([MoveDamageClass](#move-damage-classes)) | -| names | The name of this region listed in different languages | list [Name](#resourcename) | - -#### MoveStatAffectSets - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| increase | A list of moves and how they change the referenced stat | list [MoveStatAffect](#movestataffect) | -| decrease | A list of moves and how they change the referenced stat | list [MoveStatAffect](#movestataffect) | - -#### MoveStatAffect - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| max_change | The maximum amount of change to the referenced stat | integer | -| move | The move causing the change | [NamedAPIResource](#namedapiresource) ([Move](#moves)) | - -#### NatureStatAffectSets - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| increase | A list of natures and how they change the referenced stat | list [NatureStatAffect](#naturestataffect) | -| decrease | A list of natures and how they change the referenced stat | list [NatureStatAffect](#naturestataffect) | - -#### NatureStatAffect - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| max_change | The maximum amount of change to the referenced stat | integer | -| nature | The nature causing the change | [NamedAPIResource](#namedapiresource) ([Nature](#natures)) | - - - - -## Types -Types are properties for Pokémon and their moves. Each type has three properties: which types of Pokémon it is super effective against, which types of Pokémon it is not very effective against, and which types of Pokémon it is completely ineffective against. - -### GET api/v2/type/{id or name} - -###### example response - -```json -{ - "id": 8, - "name": "ghost", - "damage_relations": { - "no_damage_to": [ - { - "name": "normal", - "url": "https://pokeapi.co/api/v2/type/1/" - } - ], - "half_damage_to": [ - { - "name": "dark", - "url": "https://pokeapi.co/api/v2/type/17/" - } - ], - "double_damage_to": [ - { - "name": "ghost", - "url": "https://pokeapi.co/api/v2/type/8/" - } - ], - "no_damage_from": [ - { - "name": "normal", - "url": "https://pokeapi.co/api/v2/type/1/" - } - ], - "half_damage_from": [ - { - "name": "poison", - "url": "https://pokeapi.co/api/v2/type/4/" - } - ], - "double_damage_from": [ - { - "name": "ghost", - "url": "https://pokeapi.co/api/v2/type/8/" - } - ] - }, - "past_damage_relations": [ - { - "generation": { - "name": "generation-v", - "url": "https://pokeapi.co/api/v2/generation/5/" - }, - "damage_relations": { - "no_damage_to": [ - { - "name": "normal", - "url": "https://pokeapi.co/api/v2/type/1/" - } - ], - "half_damage_to": [ - { - "name": "steel", - "url": "https://pokeapi.co/api/v2/type/9/" - } - ], - "double_damage_to": [ - { - "name": "ghost", - "url": "https://pokeapi.co/api/v2/type/8/" - } - ], - "no_damage_from": [ - { - "name": "normal", - "url": "https://pokeapi.co/api/v2/type/1/" - } - ], - "half_damage_from": [ - { - "name": "poison", - "url": "https://pokeapi.co/api/v2/type/4/" - } - ], - "double_damage_from": [ - { - "name": "ghost", - "url": "https://pokeapi.co/api/v2/type/8/" - } - ] - } - } - ], - "game_indices": [ - { - "game_index": 8, - "generation": { - "name": "generation-i", - "url": "https://pokeapi.co/api/v2/generation/1/" - } - } - ], - "generation": { - "name": "generation-i", - "url": "https://pokeapi.co/api/v2/generation/1/" - }, - "move_damage_class": { - "name": "physical", - "url": "https://pokeapi.co/api/v2/move-damage-class/2/" - }, - "names": [ - { - "name": "ゴースト", - "language": { - "name": "ja-Hrkt", - "url": "https://pokeapi.co/api/v2/language/1/" - } - } - ], - "pokemon": [ - { - "slot": 1, - "pokemon": { - "name": "gastly", - "url": "https://pokeapi.co/api/v2/pokemon/92/" - } - } - ], - "moves": [ - { - "name": "night-shade", - "url": "https://pokeapi.co/api/v2/move/101/" - } - ] -} -``` - -###### response models - -#### Type - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this type resource | integer | -| name | The name for this type resource | string | -| damage_relations | A detail of how effective this type is toward others and vice versa | [TypeRelations](#typerelations) | -| past_damage_relations | A list of details of how effective this type was toward others and vice versa in previous generations | list [TypeRelationsPast](#typerelationspast) | -| game_indices | A list of game indices relevent to this item by generation | list [GenerationGameIndex](#generationgameindex) | -| generation | The generation this type was introduced in | [NamedAPIResource](#namedapiresource) ([Generation](#generations)) | -| move_damage_class | The class of damage inflicted by this type | [NamedAPIResource](#namedapiresource) ([MoveDamageClass](#move-damage-classes)) | -| names | The name of this type listed in different languages | list [Name](#resourcename) | -| pokemon | A list of details of pokemon that have this type | [TypePokemon](#typepokemon) | -| moves | A list of moves that have this type | list [NamedAPIResource](#namedapiresource) ([Move](#moves)) | - -#### TypePokemon - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| slot | The order the pokemons types are listed in | integer | -| pokemon | The pokemon that has the referenced type | [NamedAPIResource](#namedapiresource) ([Pokemon](#pokemon)) | - -#### TypeRelations - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| no_damage_to | A list of types this type has no effect on | list [NamedAPIResource](#namedapiresource) ([Type](#types)) | -| half_damage_to | A list of types this type is not very effect against | list [NamedAPIResource](#namedapiresource) ([Type](#types)) | -| double_damage_to | A list of types this type is very effect against | list [NamedAPIResource](#namedapiresource) ([Type](#types)) | -| no_damage_from | A list of types that have no effect on this type | list [NamedAPIResource](#namedapiresource) ([Type](#types)) | -| half_damage_from | A list of types that are not very effective against this type | list [NamedAPIResource](#namedapiresource) ([Type](#types)) | -| double_damage_from | A list of types that are very effective against this type | list [NamedAPIResource](#namedapiresource) ([Type](#types)) | - -#### TypeRelationsPast - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| generation | The last generation in which the referenced type had the listed damage relations | [NamedAPIResource](#namedapiresource) ([Generation](#generations)) | -| damage_relations | The damage relations the referenced type had up to and including the listed generation | list [TypeRelations](#typerelations) | - - -

Utility

- -## Languages -Languages for translations of api resource information. - -### GET api/v2/language/{id or name} - -###### example response - -```json -{ - "id": 1, - "name": "ja", - "official": true, - "iso639": "ja", - "iso3166": "jp", - "names": [{ - "name": "Japanese", - "language": { - "name": "en", - "url": "http://pokeapi.co/api/v2/language/9/" - } - }] -} -``` - -###### response models - -#### Language - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| id | The identifier for this language resource | integer | -| name | The name for this language resource | string | -| official | Whether or not the games are published in this language | boolean | -| iso639 | The two-letter code of the country where this language is spoken. Note that it is not unique. | string | -| iso3166 | The two-letter code of the language. Note that it is not unique. | string | -| names | The name of this language listed in different languages | list [Name](#resourcename) | - - - -## Common Models - -#### APIResource - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| url | The url of the referenced resource | string | - - -#### Description - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| description | The localized description for an api resource in a specific language | string | -| language | The language this description is in | [NamedAPIResource](#namedapiresource) ([Language](#languages)) | - - -#### Effect - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| effect | The localized effect text for an api resource in a specific language | string | -| language | The language this effect is in | [NamedAPIResource](#namedapiresource) ([Language](#language)) | - - -#### Encounter - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| min_level | The lowest level the pokemon could be encountered at | integer | -| max_level | The highest level the pokemon could be encountered at | integer | -| condition_values | A list of condition values that must be in effect for this encounter to occur | list [NamedAPIResource](#namedapiresource) ([EncounterConditionValue](#encounter-condition-values)) | -| chance | percent chance that this encounter will occur | integer | -| method | The method by which this encounter happens | [NamedAPIResource](#namedapiresource) ([EncounterMethod](#encounter-methods)) | - - -#### FlavorText - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| flavor_text | The localized name for an api resource in a specific language | string | -| language | The language this flavor text is in | [NamedAPIResource](#namedapiresource) ([Language](#languages)) | - - -#### GenerationGameIndex - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| game_index | The internal id of an api resource within game data | integer | -| generation | The generation relevent to this game index | [NamedAPIResource](#namedapiresource) ([Generation](#generations)) | - -#### Name - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| name | The localized name for an api resource in a specific language | string | -| language | The language this name is in | [NamedAPIResource](#namedapiresource) ([Language](#languages)) | - - -#### NamedAPIResource - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| name | The name of the referenced resource | string | -| url | The url of the referenced resource | string | - - -#### VerboseEffect - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| effect | The localized effect text for an api resource in a specific language | string | -| short_effect | The localized effect text in brief | string | -| language | The language this effect is in | [NamedAPIResource](#namedapiresource) ([Language](#languages)) | - - -#### VersionEncounterDetail - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| version | The game version this encounter happens in | [NamedAPIResource](#namedapiresource) ([Version](#versions)) | -| max_chance | The total percentage of all encounter potential | integer | -| encounter_details | A list of encounters and their specifics | list [Encounter](#encounters) | - - -#### VersionGameIndex - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| game_index | The internal id of an api resource within game data | integer | -| version | The version relevant to this game index | [NamedAPIResource](#namedapiresource) ([Version](#versions)) | - - -#### VersionGroupFlavorText - -| Name | Description | Data Type | -| ---- | ----------- | --------- | -| text | The localized name for an api resource in a specific language | string | -| language | The language this name is in | [NamedAPIResource](#namedapiresource) ([Language](#languages)) | -| version_group | The version group which uses this flavor text | [NamedAPIResource](#namedapiresource) ([VersionGroup](#version-groups)) | - - +https://pokeapi.co/docs/v2 diff --git a/pokemon_v2/api.py b/pokemon_v2/api.py index 790f62b9..dac98772 100644 --- a/pokemon_v2/api.py +++ b/pokemon_v2/api.py @@ -4,6 +4,9 @@ from rest_framework.response import Response from rest_framework.views import APIView from django.shortcuts import get_object_or_404 from django.http import Http404 +from django.db.models import Q +from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter +from drf_spectacular.types import OpenApiTypes from .models import * from .serializers import * @@ -38,6 +41,15 @@ class NameOrIdRetrieval: idPattern = re.compile(r"^-?[0-9]+$") namePattern = re.compile(r"^[0-9A-Za-z\-\+]+$") + def get_queryset(self): + queryset = super().get_queryset() + filter = self.request.GET.get("q", "") + + if filter: + queryset = queryset.filter(Q(name__icontains=filter)) + + return queryset + def get_object(self): queryset = self.get_queryset() queryset = self.filter_queryset(queryset) @@ -59,9 +71,30 @@ class NameOrIdRetrieval: return resp +q_query_string_parameter = OpenApiParameter( + name="q", + description="> Only available locally and not at [pokeapi.co](https://pokeapi.co/docs/v2)\nCase-insensitive query applied on the `name` property. ", + location=OpenApiParameter.QUERY, + type=OpenApiTypes.STR, +) + +retrieve_path_parameter = OpenApiParameter( + name="id", + description="This parameter can be a string or an integer.", + location=OpenApiParameter.PATH, + type=OpenApiTypes.STR, + required=True, +) + + +@extend_schema_view(list=extend_schema(parameters=[q_query_string_parameter])) class PokeapiCommonViewset( ListOrDetailSerialRelation, NameOrIdRetrieval, viewsets.ReadOnlyModelViewSet ): + @extend_schema(parameters=[retrieve_path_parameter]) + def retrieve(self, request, pk=None): + return super().retrieve(request, pk) + pass @@ -70,299 +103,879 @@ class PokeapiCommonViewset( ########## +@extend_schema( + description="Abilities provide passive effects for Pokémon in battle or in the overworld. Pokémon have multiple possible abilities but can have only one ability at a time. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Ability) for greater detail.", + tags=["pokemon"], +) class AbilityResource(PokeapiCommonViewset): queryset = Ability.objects.all() serializer_class = AbilityDetailSerializer list_serializer_class = AbilitySummarySerializer +@extend_schema( + description="Berries are small fruits that can provide HP and status condition restoration, stat enhancement, and even damage negation when eaten by Pokémon. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Berry) for greater detail.", + tags=["berries"], + summary="Get a berry", +) +@extend_schema_view( + list=extend_schema( + summary="List berries", + ) +) class BerryResource(PokeapiCommonViewset): queryset = Berry.objects.all() serializer_class = BerryDetailSerializer list_serializer_class = BerrySummarySerializer +@extend_schema( + description="Berries can be soft or hard. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Category:Berries_by_firmness) for greater detail.", + tags=["berries"], + summary="Get berry by firmness", +) +@extend_schema_view( + list=extend_schema( + summary="List berry firmness", + ) +) class BerryFirmnessResource(PokeapiCommonViewset): queryset = BerryFirmness.objects.all() serializer_class = BerryFirmnessDetailSerializer list_serializer_class = BerryFirmnessSummarySerializer +@extend_schema( + description="Flavors determine whether a Pokémon will benefit or suffer from eating a berry based on their **nature**. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Flavor) for greater detail.", + summary="Get berries by flavor", + tags=["berries"], +) +@extend_schema_view( + list=extend_schema( + summary="List berry flavors", + ) +) class BerryFlavorResource(PokeapiCommonViewset): queryset = BerryFlavor.objects.all() serializer_class = BerryFlavorDetailSerializer list_serializer_class = BerryFlavorSummarySerializer +@extend_schema( + description="Characteristics indicate which stat contains a Pokémon's highest IV. A Pokémon's Characteristic is determined by the remainder of its highest IV divided by 5 (gene_modulo). Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Characteristic) for greater detail.", + summary="Get characteristic", + tags=["pokemon"], +) +@extend_schema_view( + list=extend_schema( + summary="List charecterictics", + ) +) class CharacteristicResource(PokeapiCommonViewset): queryset = Characteristic.objects.all() serializer_class = CharacteristicDetailSerializer list_serializer_class = CharacteristicSummarySerializer +@extend_schema( + description="Contest effects refer to the effects of moves when used in contests.", + tags=["contests"], + summary="Get contest effect", +) +@extend_schema_view( + list=extend_schema( + summary="List contest effects", + ) +) class ContestEffectResource(PokeapiCommonViewset): queryset = ContestEffect.objects.all() serializer_class = ContestEffectDetailSerializer list_serializer_class = ContestEffectSummarySerializer +@extend_schema( + description="Contest types are categories judges used to weigh a Pokémon's condition in Pokémon contests. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Contest_condition) for greater detail.", + summary="Get contest type", + tags=["contests"], +) +@extend_schema_view( + list=extend_schema( + summary="List contest types", + ) +) class ContestTypeResource(PokeapiCommonViewset): queryset = ContestType.objects.all() serializer_class = ContestTypeDetailSerializer list_serializer_class = ContestTypeSummarySerializer +@extend_schema( + description="Egg Groups are categories which determine which Pokémon are able to interbreed. Pokémon may belong to either one or two Egg Groups. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Egg_Group) for greater detail.", + summary="Get egg group", + tags=["pokemon"], +) +@extend_schema_view( + list=extend_schema( + summary="List egg groups", + ) +) class EggGroupResource(PokeapiCommonViewset): queryset = EggGroup.objects.all() serializer_class = EggGroupDetailSerializer list_serializer_class = EggGroupSummarySerializer +@extend_schema( + description="Conditions which affect what pokemon might appear in the wild, e.g., day or night.", + summary="Get encounter condition", + tags=["encounters"], +) +@extend_schema_view( + list=extend_schema( + summary="List encounter conditions", + ) +) class EncounterConditionResource(PokeapiCommonViewset): queryset = EncounterCondition.objects.all() serializer_class = EncounterConditionDetailSerializer list_serializer_class = EncounterConditionSummarySerializer +@extend_schema( + description="Encounter condition values are the various states that an encounter condition can have, i.e., time of day can be either day or night.", + summary="Get encounter condition value", + tags=["encounters"], +) +@extend_schema_view( + list=extend_schema( + summary="List encounter condition values", + ) +) class EncounterConditionValueResource(PokeapiCommonViewset): queryset = EncounterConditionValue.objects.all() serializer_class = EncounterConditionValueDetailSerializer list_serializer_class = EncounterConditionValueSummarySerializer +@extend_schema( + description="Methods by which the player might can encounter Pokémon in the wild, e.g., walking in tall grass. Check out Bulbapedia for greater detail.", + summary="Get encounter method", + tags=["encounters"], +) +@extend_schema_view( + list=extend_schema( + summary="List encounter methods", + ) +) class EncounterMethodResource(PokeapiCommonViewset): queryset = EncounterMethod.objects.all() serializer_class = EncounterMethodDetailSerializer list_serializer_class = EncounterMethodSummarySerializer +@extend_schema( + description="Evolution chains are essentially family trees. They start with the lowest stage within a family and detail evolution conditions for each as well as Pokémon they can evolve into up through the hierarchy.", + summary="Get evolution chain", + tags=["evolution"], +) +@extend_schema_view( + list=extend_schema( + summary="List evolution chains", + ) +) class EvolutionChainResource(PokeapiCommonViewset): queryset = EvolutionChain.objects.all() serializer_class = EvolutionChainDetailSerializer list_serializer_class = EvolutionChainSummarySerializer +@extend_schema( + description="Evolution triggers are the events and conditions that cause a Pokémon to evolve. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Methods_of_evolution) for greater detail.", + summary="Get evolution trigger", + tags=["evolution"], +) +@extend_schema_view( + list=extend_schema( + summary="List evolution triggers", + ) +) class EvolutionTriggerResource(PokeapiCommonViewset): queryset = EvolutionTrigger.objects.all() serializer_class = EvolutionTriggerDetailSerializer list_serializer_class = EvolutionTriggerSummarySerializer +@extend_schema( + description="A generation is a grouping of the Pokémon games that separates them based on the Pokémon they include. In each generation, a new set of Pokémon, Moves, Abilities and Types that did not exist in the previous generation are released.", + summary="Get genration", + tags=["games"], +) +@extend_schema_view( + list=extend_schema( + summary="List genrations", + ) +) class GenerationResource(PokeapiCommonViewset): queryset = Generation.objects.all() serializer_class = GenerationDetailSerializer list_serializer_class = GenerationSummarySerializer +@extend_schema( + description="Genders were introduced in Generation II for the purposes of breeding Pokémon but can also result in visual differences or even different evolutionary lines. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Gender) for greater detail.", + summary="Get gender", + tags=["pokemon"], +) +@extend_schema_view( + list=extend_schema( + summary="List genders", + ) +) class GenderResource(PokeapiCommonViewset): queryset = Gender.objects.all() serializer_class = GenderDetailSerializer list_serializer_class = GenderSummarySerializer +@extend_schema( + description="Growth rates are the speed with which Pokémon gain levels through experience. Check out [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Experience) for greater detail.", + summary="Get growth rate", + tags=["pokemon"], +) +@extend_schema_view( + list=extend_schema( + summary="List growth rates", + ) +) class GrowthRateResource(PokeapiCommonViewset): queryset = GrowthRate.objects.all() serializer_class = GrowthRateDetailSerializer list_serializer_class = GrowthRateSummarySerializer +@extend_schema( + description="An item is an object in the games which the player can pick up, keep in their bag, and use in some manner. They have various uses, including healing, powering up, helping catch Pokémon, or to access a new area.", + summary="Get item", + tags=["items"], +) +@extend_schema_view( + list=extend_schema( + summary="List items", + ) +) class ItemResource(PokeapiCommonViewset): queryset = Item.objects.all() serializer_class = ItemDetailSerializer list_serializer_class = ItemSummarySerializer +@extend_schema( + description="Item categories determine where items will be placed in the players bag.", + summary="Get item category", + tags=["items"], +) +@extend_schema_view( + list=extend_schema( + summary="List item categories", + ) +) class ItemCategoryResource(PokeapiCommonViewset): queryset = ItemCategory.objects.all() serializer_class = ItemCategoryDetailSerializer list_serializer_class = ItemCategorySummarySerializer +@extend_schema( + description='Item attributes define particular aspects of items, e.g."usable in battle" or "consumable".', + summary="Get item attribute", + tags=["items"], +) +@extend_schema_view( + list=extend_schema( + summary="List item attributes", + ) +) class ItemAttributeResource(PokeapiCommonViewset): queryset = ItemAttribute.objects.all() serializer_class = ItemAttributeDetailSerializer list_serializer_class = ItemAttributeSummarySerializer +@extend_schema( + description='The various effects of the move"Fling" when used with different items.', + summary="Get item fling effect", + tags=["items"], +) +@extend_schema_view( + list=extend_schema( + summary="List item fling effects", + ) +) class ItemFlingEffectResource(PokeapiCommonViewset): queryset = ItemFlingEffect.objects.all() serializer_class = ItemFlingEffectDetailSerializer list_serializer_class = ItemFlingEffectSummarySerializer +@extend_schema( + description="Pockets within the players bag used for storing items by category.", + summary="Get item pocket", + tags=["items"], +) +@extend_schema_view( + list=extend_schema( + summary="List item pockets", + ) +) class ItemPocketResource(PokeapiCommonViewset): queryset = ItemPocket.objects.all() serializer_class = ItemPocketDetailSerializer list_serializer_class = ItemPocketSummarySerializer +@extend_schema( + description="Languages for translations of API resource information.", + summary="Get language", + tags=["utility"], +) +@extend_schema_view( + list=extend_schema( + summary="List languages", + ) +) class LanguageResource(PokeapiCommonViewset): queryset = Language.objects.all() serializer_class = LanguageDetailSerializer list_serializer_class = LanguageSummarySerializer +@extend_schema( + description="Locations that can be visited within the games. Locations make up sizable portions of regions, like cities or routes.", + summary="Get location", + tags=["location"], +) +@extend_schema_view( + list=extend_schema( + summary="List locations", + ) +) class LocationResource(PokeapiCommonViewset): queryset = Location.objects.all() serializer_class = LocationDetailSerializer list_serializer_class = LocationSummarySerializer +@extend_schema( + description="Location areas are sections of areas, such as floors in a building or cave. Each area has its own set of possible Pokémon encounters.", + summary="Get location area", + tags=["location"], +) +@extend_schema_view( + list=extend_schema( + summary="List location areas", + ) +) class LocationAreaResource(ListOrDetailSerialRelation, viewsets.ReadOnlyModelViewSet): queryset = LocationArea.objects.all() serializer_class = LocationAreaDetailSerializer list_serializer_class = LocationAreaSummarySerializer +@extend_schema( + description="Machines are the representation of items that teach moves to Pokémon. They vary from version to version, so it is not certain that one specific TM or HM corresponds to a single Machine.", + summary="Get machine", + tags=["machines"], +) +@extend_schema_view( + list=extend_schema( + summary="List machines", + ) +) class MachineResource(PokeapiCommonViewset): queryset = Machine.objects.all() serializer_class = MachineDetailSerializer list_serializer_class = MachineSummarySerializer +@extend_schema( + description="Moves are the skills of Pokémon in battle. In battle, a Pokémon uses one move each turn. Some moves (including those learned by Hidden Machine) can be used outside of battle as well, usually for the purpose of removing obstacles or exploring new areas.", + summary="Get move", + tags=["moves"], +) +@extend_schema_view( + list=extend_schema( + summary="List moves", + ) +) class MoveResource(PokeapiCommonViewset): queryset = Move.objects.all() serializer_class = MoveDetailSerializer list_serializer_class = MoveSummarySerializer +@extend_schema( + description="Damage classes moves can have, e.g. physical, special, or non-damaging.", + summary="Get move damage class", + tags=["pokemon"], +) +@extend_schema_view( + list=extend_schema( + summary="List move damage classes", + ) +) class MoveDamageClassResource(PokeapiCommonViewset): queryset = MoveDamageClass.objects.all() serializer_class = MoveDamageClassDetailSerializer list_serializer_class = MoveDamageClassSummarySerializer +@extend_schema( + description="Move Ailments are status conditions caused by moves used during battle. See [Bulbapedia](https://bulbapedia.bulbagarden.net/wiki/Status_condition) for greater detail.", + summary="Get move meta ailment", + tags=["moves"], +) +@extend_schema_view( + list=extend_schema( + summary="List move meta ailments", + ) +) class MoveMetaAilmentResource(PokeapiCommonViewset): queryset = MoveMetaAilment.objects.all() serializer_class = MoveMetaAilmentDetailSerializer list_serializer_class = MoveMetaAilmentSummarySerializer +@extend_schema( + description="Styles of moves when used in the Battle Palace. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Battle_Frontier_(Generation_III)) for greater detail.", + summary="Get move battle style", + tags=["moves"], +) +@extend_schema_view( + list=extend_schema( + summary="List move battle styles", + ) +) class MoveBattleStyleResource(PokeapiCommonViewset): queryset = MoveBattleStyle.objects.all() serializer_class = MoveBattleStyleDetailSerializer list_serializer_class = MoveBattleStyleSummarySerializer +@extend_schema( + description="Very general categories that loosely group move effects.", + summary="Get move meta category", + tags=["moves"], +) +@extend_schema_view( + list=extend_schema( + summary="List move meta categories", + ) +) class MoveMetaCategoryResource(PokeapiCommonViewset): queryset = MoveMetaCategory.objects.all() serializer_class = MoveMetaCategoryDetailSerializer list_serializer_class = MoveMetaCategorySummarySerializer +@extend_schema( + description="Methods by which Pokémon can learn moves.", + summary="Get move learn method", + tags=["moves"], +) +@extend_schema_view( + list=extend_schema( + summary="List move learn methods", + ) +) class MoveLearnMethodResource(PokeapiCommonViewset): queryset = MoveLearnMethod.objects.all() serializer_class = MoveLearnMethodDetailSerializer list_serializer_class = MoveLearnMethodSummarySerializer +@extend_schema( + description="Targets moves can be directed at during battle. Targets can be Pokémon, environments or even other moves.", + summary="Get move target", + tags=["moves"], +) +@extend_schema_view( + list=extend_schema( + summary="List move targets", + ) +) class MoveTargetResource(PokeapiCommonViewset): queryset = MoveTarget.objects.all() serializer_class = MoveTargetDetailSerializer list_serializer_class = MoveTargetSummarySerializer +@extend_schema( + description="Natures influence how a Pokémon's stats grow. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Nature) for greater detail.", + summary="Get nature", + tags=["pokemon"], +) +@extend_schema_view( + list=extend_schema( + summary="List natures", + ) +) class NatureResource(PokeapiCommonViewset): queryset = Nature.objects.all() serializer_class = NatureDetailSerializer list_serializer_class = NatureSummarySerializer +@extend_schema( + description="Areas used for grouping Pokémon encounters in Pal Park. They're like habitats that are specific to Pal Park.", + summary="Get pal park area", + tags=["location"], +) +@extend_schema_view( + list=extend_schema( + summary="List pal park areas", + ) +) class PalParkAreaResource(PokeapiCommonViewset): queryset = PalParkArea.objects.all() serializer_class = PalParkAreaDetailSerializer list_serializer_class = PalParkAreaSummarySerializer +@extend_schema( + description="Pokeathlon Stats are different attributes of a Pokémon's performance in Pokéathlons. In Pokéathlons, competitions happen on different courses; one for each of the different Pokéathlon stats. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9athlon) for greater detail.", + summary="Get pokeathlon stat", + tags=["pokemon"], +) +@extend_schema_view( + list=extend_schema( + summary="List pokeathlon stats", + ) +) class PokeathlonStatResource(PokeapiCommonViewset): queryset = PokeathlonStat.objects.all() serializer_class = PokeathlonStatDetailSerializer list_serializer_class = PokeathlonStatSummarySerializer +@extend_schema( + description="A Pokédex is a handheld electronic encyclopedia device; one which is capable of recording and retaining information of the various Pokémon in a given region with the exception of the national dex and some smaller dexes related to portions of a region. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Pokedex) for greater detail.", + summary="Get pokedex", + tags=["games"], +) +@extend_schema_view( + list=extend_schema( + summary="List pokedex", + ) +) class PokedexResource(PokeapiCommonViewset): queryset = Pokedex.objects.all() serializer_class = PokedexDetailSerializer list_serializer_class = PokedexSummarySerializer +@extend_schema( + description="Colors used for sorting Pokémon in a Pokédex. The color listed in the Pokédex is usually the color most apparent or covering each Pokémon's body. No orange category exists; Pokémon that are primarily orange are listed as red or brown.", + summary="Get pokemon color", + tags=["pokemon"], +) +@extend_schema_view( + list=extend_schema( + summary="List pokemon colors", + ) +) class PokemonColorResource(PokeapiCommonViewset): queryset = PokemonColor.objects.all() serializer_class = PokemonColorDetailSerializer list_serializer_class = PokemonColorSummarySerializer +@extend_schema( + description="Some Pokémon may appear in one of multiple, visually different forms. These differences are purely cosmetic. For variations within a Pokémon species, which do differ in more than just visuals, the 'Pokémon' entity is used to represent such a variety.", + summary="Get pokemon form", + tags=["pokemon"], +) +@extend_schema_view( + list=extend_schema( + summary="List pokemon forms", + ) +) class PokemonFormResource(PokeapiCommonViewset): queryset = PokemonForm.objects.all() serializer_class = PokemonFormDetailSerializer list_serializer_class = PokemonFormSummarySerializer +@extend_schema( + description="Habitats are generally different terrain Pokémon can be found in but can also be areas designated for rare or legendary Pokémon.", + summary="Get pokemom habita", + tags=["pokemon"], +) +@extend_schema_view( + list=extend_schema( + summary="List pokemom habitas", + ) +) class PokemonHabitatResource(PokeapiCommonViewset): queryset = PokemonHabitat.objects.all() serializer_class = PokemonHabitatDetailSerializer list_serializer_class = PokemonHabitatSummarySerializer +@extend_schema( + description="Shapes used for sorting Pokémon in a Pokédex.", + summary="Get pokemon shape", + tags=["pokemon"], +) +@extend_schema_view( + list=extend_schema( + summary="List pokemon shapes", + ) +) class PokemonShapeResource(PokeapiCommonViewset): queryset = PokemonShape.objects.all() serializer_class = PokemonShapeDetailSerializer list_serializer_class = PokemonShapeSummarySerializer +@extend_schema( + description="Pokémon are the creatures that inhabit the world of the Pokémon games. They can be caught using Pokéballs and trained by battling with other Pokémon. Each Pokémon belongs to a specific species but may take on a variant which makes it differ from other Pokémon of the same species, such as base stats, available abilities and typings. See [Bulbapedia](http://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9mon_(species)) for greater detail.", + summary="Get pokemon", + tags=["pokemon"], +) +@extend_schema_view( + list=extend_schema( + summary="List pokemon", + ), +) class PokemonResource(PokeapiCommonViewset): queryset = Pokemon.objects.all() serializer_class = PokemonDetailSerializer list_serializer_class = PokemonSummarySerializer +@extend_schema( + description="A Pokémon Species forms the basis for at least one Pokémon. Attributes of a Pokémon species are shared across all varieties of Pokémon within the species. A good example is Wormadam; Wormadam is the species which can be found in three different varieties, Wormadam-Trash, Wormadam-Sandy and Wormadam-Plant.", + summary="Get pokemon species", + tags=["pokemon"], +) +@extend_schema_view( + list=extend_schema( + summary="List pokemon species", + ) +) class PokemonSpeciesResource(PokeapiCommonViewset): queryset = PokemonSpecies.objects.all().order_by("id") serializer_class = PokemonSpeciesDetailSerializer list_serializer_class = PokemonSpeciesSummarySerializer +@extend_schema( + description="A region is an organized area of the Pokémon world. Most often, the main difference between regions is the species of Pokémon that can be encountered within them.", + summary="Get region", + tags=["location"], +) +@extend_schema_view( + list=extend_schema( + summary="List regions", + ) +) class RegionResource(PokeapiCommonViewset): queryset = Region.objects.all() serializer_class = RegionDetailSerializer list_serializer_class = RegionSummarySerializer +@extend_schema( + description="Stats determine certain aspects of battles. Each Pokémon has a value for each stat which grows as they gain levels and can be altered momentarily by effects in battles.", + summary="Get stat", + tags=["pokemon"], +) +@extend_schema_view( + list=extend_schema( + summary="List stats", + ) +) class StatResource(PokeapiCommonViewset): queryset = Stat.objects.all() serializer_class = StatDetailSerializer list_serializer_class = StatSummarySerializer +@extend_schema( + description="Super contest effects refer to the effects of moves when used in super contests.", + summary="Get super contest effect", + tags=["contests"], +) +@extend_schema_view( + list=extend_schema( + summary="List super contest effects", + ) +) class SuperContestEffectResource(PokeapiCommonViewset): queryset = SuperContestEffect.objects.all() serializer_class = SuperContestEffectDetailSerializer list_serializer_class = SuperContestEffectSummarySerializer +@extend_schema( + description="Types are properties for Pokémon and their moves. Each type has three properties: which types of Pokémon it is super effective against, which types of Pokémon it is not very effective against, and which types of Pokémon it is completely ineffective against.", + summary="Get types", + tags=["pokemon"], +) +@extend_schema_view( + list=extend_schema( + summary="List types", + ) +) class TypeResource(PokeapiCommonViewset): queryset = Type.objects.all() serializer_class = TypeDetailSerializer list_serializer_class = TypeSummarySerializer +@extend_schema( + description="Versions of the games, e.g., Red, Blue or Yellow.", + summary="Get version", + tags=["games"], +) +@extend_schema_view( + list=extend_schema( + summary="List versions", + ) +) class VersionResource(PokeapiCommonViewset): queryset = Version.objects.all() serializer_class = VersionDetailSerializer list_serializer_class = VersionSummarySerializer +@extend_schema( + description="Version groups categorize highly similar versions of the games.", + summary="Get version group", + tags=["games"], +) +@extend_schema_view( + list=extend_schema( + summary="List version groups", + ) +) class VersionGroupResource(PokeapiCommonViewset): queryset = VersionGroup.objects.all() serializer_class = VersionGroupDetailSerializer list_serializer_class = VersionGroupSummarySerializer +@extend_schema( + description="Handles Pokemon Encounters as a sub-resource.", + summary="Get pokemon encounter", + tags=["encounters"], + responses={ + "200": { + "type": "array", + "items": { + "type": "object", + "required": ["location_area", "version_details"], + "properties": { + "location_area": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "example": "cerulean-city-area"}, + "url": { + "type": "string", + "format": "uri", + "example": "https://pokeapi.co/api/v2/location-area/281/", + }, + }, + }, + "version_details": { + "type": "array", + "items": { + "type": "object", + "required": ["encounter_details", "max_chance", "version"], + "properties": { + "encounter_details": { + "type": "array", + "items": { + "type": "object", + "required": [ + "chance", + "condition_values", + "max_level", + "method", + "min_level", + ], + "properties": { + "chance": { + "type": "number", + "example": 100, + }, + "condition_values": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "example": "story-progress-beat-red", + }, + "url": { + "type": "string", + "format": "uri", + "example": "https://pokeapi.co/api/v2/encounter-condition-value/55/", + }, + }, + }, + }, + "max_level": { + "type": "number", + "example": 10, + }, + "method": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "example": "gift", + }, + "url": { + "type": "string", + "format": "uri", + "example": "https://pokeapi.co/api/v2/encounter-method/18/", + }, + }, + }, + "min_level": { + "type": "number", + "example": 10, + }, + }, + }, + }, + "max_chance": {"type": "number", "example": 100}, + "version": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "example": "red"}, + "url": { + "type": "string", + "format": "uri", + "example": "https://pokeapi.co/api/v2/version/1/", + }, + }, + }, + }, + }, + }, + }, + }, + } + }, +) class PokemonEncounterView(APIView): - """ - Handles Pokemon Encounters as a sub-resource. - """ - def get(self, request, pokemon_id): self.context = dict(request=request) diff --git a/pokemon_v2/migrations/0015_pokemoncries.py b/pokemon_v2/migrations/0015_pokemoncries.py new file mode 100644 index 00000000..05099ce1 --- /dev/null +++ b/pokemon_v2/migrations/0015_pokemoncries.py @@ -0,0 +1,41 @@ +# Generated by Django 3.2.23 on 2024-02-02 18:02 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + dependencies = [ + ("pokemon_v2", "0014_auto_20231121_1209"), + ] + + operations = [ + migrations.CreateModel( + name="PokemonCries", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("cries", models.JSONField()), + ( + "pokemon", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="pokemoncries", + to="pokemon_v2.pokemon", + ), + ), + ], + options={ + "abstract": False, + }, + ), + ] diff --git a/pokemon_v2/models.py b/pokemon_v2/models.py index ed6622dc..d7d0e48a 100644 --- a/pokemon_v2/models.py +++ b/pokemon_v2/models.py @@ -1796,3 +1796,7 @@ class PokemonTypePast(HasPokemon, HasType, HasGeneration): class PokemonSprites(HasPokemon): sprites = models.JSONField() + + +class PokemonCries(HasPokemon): + cries = models.JSONField() diff --git a/pokemon_v2/serializers.py b/pokemon_v2/serializers.py index b1acff77..3b5df51f 100644 --- a/pokemon_v2/serializers.py +++ b/pokemon_v2/serializers.py @@ -2,6 +2,7 @@ from collections import OrderedDict import json from django.urls import reverse from rest_framework import serializers +from drf_spectacular.utils import extend_schema_field # pylint: disable=redefined-builtin @@ -477,6 +478,16 @@ class CharacteristicDetailSerializer(serializers.ModelSerializer): "descriptions", ) + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "integer", + "format": "int32", + }, + "examples": [[0, 5, 10, 15, 20, 25, 30]], + } + ) def get_values(self, obj): mod = obj.gene_mod_5 values = [] @@ -609,6 +620,23 @@ class RegionDetailSerializer(serializers.ModelSerializer): "version_groups", ) + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["red-blue"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/version-group/1/"], + }, + }, + }, + } + ) def get_region_version_groups(self, obj): vg_regions = VersionGroupRegion.objects.filter(region=obj) data = VersionGroupRegionSerializer( @@ -676,6 +704,32 @@ class GenderDetailSerializer(serializers.ModelSerializer): model = Gender fields = ("id", "name", "pokemon_species_details", "required_for_evolution") + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["rate", "pokemon_species"], + "properties": { + "rate": {"type": "integer", "format": "int32", "examples": [1]}, + "pokemon_species": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["bulbasaur"]}, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/pokemon-species/1/" + ], + }, + }, + }, + }, + }, + } + ) def get_species(self, obj): species_objects = [] @@ -698,6 +752,23 @@ class GenderDetailSerializer(serializers.ModelSerializer): return details + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["wormadam"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/pokemon-species/413/"], + }, + }, + }, + } + ) def get_required(self, obj): evo_objects = PokemonEvolution.objects.filter(gender=obj) species_list = [] @@ -907,6 +978,62 @@ class LocationAreaDetailSerializer(serializers.ModelSerializer): "pokemon_encounters", ) + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["encounter_method", "version_details"], + "properties": { + "encounter_method": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["old-rod"]}, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/encounter-method/2/" + ], + }, + }, + }, + "version_details": { + "type": "array", + "items": { + "type": "object", + "required": ["rate", "version"], + "properties": { + "rate": { + "type": "integer", + "format": "int32", + "examples": [5], + }, + "version": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["platinum"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/version/14/" + ], + }, + }, + }, + }, + }, + }, + }, + }, + } + ) def get_method_rates(self, obj): # Get encounters related to this area and pull out unique encounter methods encounter_rates = LocationAreaEncounterRate.objects.filter( @@ -948,6 +1075,121 @@ class LocationAreaDetailSerializer(serializers.ModelSerializer): return encounter_rate_list + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["pokemon", "version_details"], + "properties": { + "pokemon": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["tentacool"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/pokemon/72/"], + }, + }, + }, + "version_details": { + "type": "array", + "items": { + "type": "object", + "required": ["version", "max_chance", "encounter_details"], + "properties": { + "version": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["diamond"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/version/12/" + ], + }, + }, + }, + "max_chance": { + "type": "integer", + "format": "int32", + "examples": [60], + }, + "encounter_details": { + "type": "object", + "required": [ + "min_level", + "max_level", + "condition_value", + "chance", + "method", + ], + "properties": { + "min_level": { + "type": "integer", + "format": "int32", + "examples": [20], + }, + "max_level": { + "type": "integer", + "format": "int32", + "examples": [30], + }, + "condition_values": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["slot2-sapphire"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/encounter-condition-value/10/" + ], + }, + }, + }, + "chance": { + "type": "integer", + "format": "int32", + "examples": [60], + }, + "method": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["surf"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/encounter-method/5/" + ], + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + } + ) def get_encounters(self, obj): # get versions for later use version_objects = Version.objects.all() @@ -1119,6 +1361,31 @@ class AbilityDetailSerializer(serializers.ModelSerializer): "pokemon", ) + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["is_hidden", "slot", "pokemon"], + "properties": { + "is_hidden": {"type": "boolean"}, + "slot": {"type": "integer", "format": "int32", "examples": [3]}, + "pokemon": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["gloom"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/pokemon/44/"], + }, + }, + }, + }, + }, + } + ) def get_ability_pokemon(self, obj): pokemon_ability_objects = PokemonAbility.objects.filter(ability=obj) data = PokemonAbilitySerializer( @@ -1169,6 +1436,73 @@ class StatDetailSerializer(serializers.ModelSerializer): "names", ) + @extend_schema_field( + field={ + "type": "object", + "required": ["decrease", "increase"], + "properties": { + "increase": { + "type": "array", + "items": { + "type": "object", + "required": ["change", "move"], + "properties": { + "change": { + "type": "integer", + "format": "int32", + "examples": [-1], + }, + "move": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["swords-dance"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/move/14/" + ], + }, + }, + }, + }, + }, + }, + "decrease": { + "type": "array", + "items": { + "type": "object", + "required": ["change", "move"], + "properties": { + "change": { + "type": "integer", + "format": "int32", + "examples": [5], + }, + "move": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["growl"]}, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/move/45/" + ], + }, + }, + }, + }, + }, + }, + }, + } + ) def get_moves_that_affect(self, obj): stat_change_objects = MoveMetaStatChange.objects.filter(stat=obj) stat_changes = MoveMetaStatChangeSerializer( @@ -1185,6 +1519,44 @@ class StatDetailSerializer(serializers.ModelSerializer): return changes + @extend_schema_field( + field={ + "type": "object", + "required": ["increase", "decrease"], + "properties": { + "increase": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["lonely"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/nature/6/"], + }, + }, + }, + }, + "decrease": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["bold"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/nature/2/"], + }, + }, + }, + }, + }, + } + ) def get_natures_that_affect(self, obj): increase_objects = Nature.objects.filter(increased_stat=obj) increases = NatureSummarySerializer( @@ -1279,6 +1651,23 @@ class ItemAttributeDetailSerializer(serializers.ModelSerializer): model = ItemAttribute fields = ("id", "name", "descriptions", "items", "names") + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["master-ball"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/item/1/"], + }, + }, + }, + } + ) def get_attribute_items(self, obj): item_map_objects = ItemAttributeMap.objects.filter(item_attribute=obj) items = [] @@ -1395,6 +1784,36 @@ class ItemDetailSerializer(serializers.ModelSerializer): "machines", ) + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["machine", "version_group"], + "properties": { + "machine": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/machine/1/"], + }, + "version_group": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["sword-shield"]}, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/version-group/20/" + ], + }, + }, + }, + }, + }, + } + ) def get_item_machines(self, obj): machine_objects = Machine.objects.filter(item=obj) @@ -1415,10 +1834,42 @@ class ItemDetailSerializer(serializers.ModelSerializer): return machines + @extend_schema_field( + field={ + "type": "object", + "required": ["default"], + "properties": { + "default": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/media/sprites/items/master-ball.png" + ], + } + }, + } + ) def get_item_sprites(self, obj): sprites_object = ItemSprites.objects.get(item_id=obj) return sprites_object.sprites + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["countable"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/item-attribute/1/"], + }, + }, + }, + } + ) def get_item_attributes(self, obj): item_attribute_maps = ItemAttributeMap.objects.filter(item=obj) serializer = ItemAttributeMapSerializer( @@ -1436,6 +1887,60 @@ class ItemDetailSerializer(serializers.ModelSerializer): return attributes + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["pokemon", "version-details"], + "properties": { + "pokemon": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["farfetchd"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/pokemon/83/"], + }, + }, + }, + "version-details": { + "type": "array", + "items": { + "type": "object", + "required": ["rarity", "version"], + "properties": { + "rarity": { + "type": "integer", + "format": "int32", + "examples": [5], + }, + "version": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["ruby"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/version/7/" + ], + }, + }, + }, + }, + }, + }, + }, + }, + } + ) def get_held_by_pokemon(self, obj): pokemon_items = PokemonItem.objects.filter(item=obj).order_by("pokemon_id") pokemon_ids = pokemon_items.values("pokemon_id").distinct() @@ -1468,6 +1973,19 @@ class ItemDetailSerializer(serializers.ModelSerializer): return pokemon_list + @extend_schema_field( + field={ + "type": "object", + "required": ["url"], + "properties": { + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/evolution-chain/51/"], + } + }, + } + ) def get_baby_trigger_for(self, obj): try: chain_object = EvolutionChain.objects.get(baby_trigger_item=obj) @@ -1532,6 +2050,36 @@ class NatureDetailSerializer(serializers.ModelSerializer): "names", ) + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["max_change", "pokeathlon_stat"], + "properties": { + "max_change": { + "type": "integer", + "format": "int32", + "examples": [1], + }, + "pokeathlon_stat": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["power"]}, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/pokeathlon-stat/2/" + ], + }, + }, + }, + }, + }, + } + ) def get_pokeathlon_stats(self, obj): pokeathlon_stat_objects = NaturePokeathlonStat.objects.filter(nature=obj) pokeathlon_stats = NaturePokeathlonStatSerializer( @@ -1587,6 +2135,35 @@ class BerryFlavorDetailSerializer(serializers.ModelSerializer): model = BerryFlavor fields = ("id", "name", "berries", "contest_type", "names") + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["potency", "berry"], + "properties": { + "potency": {"type": "integer", "examples": [10]}, + "berry": { + "type": "object", + "require": ["name", "url"], + "properties": { + "name": { + "type": "string", + "description": "The name of the berry", + "examples": ["rowap"], + }, + "url": { + "type": "string", + "format": "uri", + "description": "The URL to get more information about the berry", + "examples": ["https://pokeapi.co/api/v2/berry/64/"], + }, + }, + }, + }, + }, + } + ) def get_berries_with_flavor(self, obj): flavor_map_objects = BerryFlavorMap.objects.filter( berry_flavor=obj, potency__gt=0 @@ -1624,6 +2201,37 @@ class BerryDetailSerializer(serializers.ModelSerializer): "natural_gift_type", ) + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["potency", "flavor"], + "properties": { + "potency": {"type": "integer", "examples": [10]}, + "flavor": { + "type": "object", + "require": ["name", "url"], + "properties": { + "name": { + "type": "string", + "description": "The name of the flavor", + "examples": ["spicy"], + }, + "url": { + "type": "string", + "format": "uri", + "description": "The URL to get more information about the flavor", + "examples": [ + "https://pokeapi.co/api/v2/berry-flavor/1/" + ], + }, + }, + }, + }, + }, + } + ) def get_berry_flavors(self, obj): flavor_map_objects = BerryFlavorMap.objects.filter(berry=obj) flavor_maps = BerryFlavorMapSerializer( @@ -1666,6 +2274,28 @@ class EggGroupDetailSerializer(serializers.ModelSerializer): model = EggGroup fields = ("id", "name", "names", "pokemon_species") + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["potency", "flavor"], + "properties": { + "name": { + "type": "string", + "description": "Pokemon species name.", + "examples": ["bulbasaur"], + }, + "url": { + "type": "string", + "format": "uri", + "description": "The URL to get more information about the species", + "examples": ["https://pokeapi.co/api/v2/pokemon-species/1/"], + }, + }, + }, + } + ) def get_species(self, obj): results = PokemonEggGroup.objects.filter(egg_group=obj) data = PokemonEggGroupSerializer(results, many=True, context=self.context).data @@ -1745,6 +2375,7 @@ class TypeDetailSerializer(serializers.ModelSerializer): # adds an entry for the given type with the given damage # factor in the given direction to the set of relations + def add_type_entry(self, relations, type, damage_factor, direction="_damage_to"): if damage_factor == 200: relations["double" + direction].append( @@ -1759,6 +2390,111 @@ class TypeDetailSerializer(serializers.ModelSerializer): TypeSummarySerializer(type, context=self.context).data ) + @extend_schema_field( + field={ + "type": "object", + "required": [ + "no_damage_to", + "half_damage_to", + "double_damage_to", + "no_damage_from", + "half_damage_from", + "double_damage_from", + ], + "properties": { + "no_damage_to": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["flying"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/type/3/"], + }, + }, + }, + }, + "half_damage_to": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["bug"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/type/7/"], + }, + }, + }, + }, + "double_damage_to": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["poison"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/type/4/"], + }, + }, + }, + }, + "no_damage_from": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["electric"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/type/13/"], + }, + }, + }, + }, + "half_damage_from": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["poison"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/type/4/"], + }, + }, + }, + }, + "double_damage_from": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["water"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/type/11/"], + }, + }, + }, + }, + }, + } + ) def get_type_relationships(self, obj): relations = OrderedDict() relations["no_damage_to"] = [] @@ -1823,6 +2559,159 @@ class TypeDetailSerializer(serializers.ModelSerializer): return # returns past type relationships for the given type object + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["generation", "damage_relations"], + "properties": { + "generation": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["generation-v"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/generation/5/"], + }, + }, + }, + "damage_relations": { + "type": "object", + "required": [ + "no_damage_to", + "half_damage_to", + "double_damage_to", + "no_damage_from", + "half_damage_from", + "double_damage_from", + ], + "properties": { + "no_damage_to": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["flying"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/type/3/" + ], + }, + }, + }, + }, + "half_damage_to": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["bug"]}, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/type/7/" + ], + }, + }, + }, + }, + "double_damage_to": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["poison"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/type/4/" + ], + }, + }, + }, + }, + "no_damage_from": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["electric"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/type/13/" + ], + }, + }, + }, + }, + "half_damage_from": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["poison"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/type/4/" + ], + }, + }, + }, + }, + "double_damage_from": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["water"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/type/11/" + ], + }, + }, + }, + }, + }, + }, + }, + }, + } + ) def get_type_past_relationships(self, obj): # collect data from DB damage_type_results = list(TypeEfficacyPast.objects.filter(damage_type=obj)) @@ -1917,6 +2806,35 @@ class TypeDetailSerializer(serializers.ModelSerializer): gen_introduced = Generation.objects.get(pk=type_obj.generation.id) return gen_introduced.id <= current_gen.id + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["potency", "flavor"], + "properties": { + "slot": {"type": "integer", "examples": [1]}, + "pokemon": { + "type": "object", + "require": ["name", "url"], + "properties": { + "name": { + "type": "string", + "description": "The name of the pokemon", + "examples": ["sandshrew"], + }, + "url": { + "type": "string", + "format": "uri", + "description": "The URL to get more information about the pokemon", + "examples": ["https://pokeapi.co/api/v2/pokemon/27/"], + }, + }, + }, + }, + }, + } + ) def get_type_pokemon(self, obj): poke_type_objects = PokemonType.objects.filter(type=obj) poke_types = PokemonTypeSerializer( @@ -2023,6 +2941,23 @@ class MoveMetaAilmentDetailSerializer(serializers.ModelSerializer): model = MoveMetaAilment fields = ("id", "name", "moves", "names") + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["thunder-punch"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/move/9/"], + }, + }, + }, + } + ) def get_ailment_moves(self, obj): move_meta_objects = MoveMeta.objects.filter(move_meta_ailment=obj) moves = [] @@ -2053,6 +2988,23 @@ class MoveMetaCategoryDetailSerializer(serializers.ModelSerializer): model = MoveMetaCategory fields = ("id", "name", "descriptions", "moves") + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["sing"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/move/47/"], + }, + }, + }, + } + ) def get_category_moves(self, obj): move_meta_objects = MoveMeta.objects.filter(move_meta_category=obj) moves = [] @@ -2147,6 +3099,41 @@ class MoveChangeSerializer(serializers.ModelSerializer): "version_group", ) + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["effect", "short_effect", "language"], + "properties": { + "effect": { + "type": "string", + "examples": [ + "Inflicts [regular damage]{mechanic:regular-damage}." + ], + }, + "short_effect": { + "type": "string", + "examples": [ + "Inflicts regular damage with no additional effect." + ], + }, + "language": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["en"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/language/9/"], + }, + }, + }, + }, + }, + } + ) def get_effects(self, obj): effect_texts = MoveEffectEffectText.objects.filter(move_effect=obj.move_effect) data = MoveEffectEffectTextSerializer( @@ -2244,6 +3231,23 @@ class MoveDetailSerializer(serializers.ModelSerializer): "learned_by_pokemon", ) + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["clefairy"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/pokemon/35/"], + }, + }, + }, + } + ) def get_learned_by_pokemon(self, obj): pokemon_moves = PokemonMove.objects.filter(move_id=obj).order_by("pokemon_id") @@ -2261,6 +3265,42 @@ class MoveDetailSerializer(serializers.ModelSerializer): return pokemon_list + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["machine", "version_group"], + "properties": { + "machine": { + "type": "object", + "required": ["url"], + "properties": { + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/machine/1/"], + } + }, + }, + "version_group": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["sword-shield"]}, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/version-group/1/" + ], + }, + }, + }, + }, + }, + } + ) def get_move_machines(self, obj): machine_objects = Machine.objects.filter(move=obj) @@ -2281,6 +3321,110 @@ class MoveDetailSerializer(serializers.ModelSerializer): return machines + @extend_schema_field( + field={ + "type": "object", + "required": ["normal", "super"], + "properties": { + "normal": { + "type": "object", + "required": ["use_before", "use_after"], + "properties": { + "use_before": { + "type": "array", + "nullable": True, + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["fire-punch"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/move/7/" + ], + }, + }, + }, + }, + "use_after": { + "type": "array", + "nullable": True, + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["ice-punch"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/move/8/" + ], + }, + }, + }, + }, + }, + }, + "super": { + "type": "object", + "required": ["use_before", "use_after"], + "properties": { + "use_before": { + "type": "array", + "nullable": True, + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["night-slash"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/move/400/" + ], + }, + }, + }, + }, + "use_after": { + "type": "array", + "nullable": True, + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["focus-energy"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/move/116/" + ], + }, + }, + }, + }, + }, + }, + }, + } + ) def get_combos(self, obj): normal_before_objects = ContestCombo.objects.filter(first_move=obj) normal_before_data = ContestComboSerializer( @@ -2338,14 +3482,109 @@ class MoveDetailSerializer(serializers.ModelSerializer): return details + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["effect", "short_effect", "language"], + "properties": { + "effect": { + "type": "string", + "examples": [ + "Inflicts [regular damage]{mechanic:regular-damage}." + ], + }, + "short_effect": { + "type": "string", + "examples": [ + "Inflicts regular damage with no additional effect." + ], + }, + "language": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["en"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/language/9/"], + }, + }, + }, + }, + }, + } + ) def get_effect_text(self, obj): effect_texts = MoveEffectEffectText.objects.filter(move_effect=obj.move_effect) data = MoveEffectEffectTextSerializer( effect_texts, many=True, context=self.context ).data + if len(data) > 0: + for key, value in data[0].items(): + if "$effect_chance%" in value: + data[0][key] = value.replace( + "$effect_chance", f"{obj.move_effect_chance}" + ) return data + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["effect_entries", "version_group"], + "properties": { + "effect_entries": { + "type": "array", + "items": { + "type": "object", + "required": ["effect", "language"], + "properties": { + "effect": { + "type": "string", + "examples": [ + "Hits Pokémon under the effects of dig and fly." + ], + }, + "language": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["en"]}, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/language/9/" + ], + }, + }, + }, + }, + }, + }, + "version_group": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["gold-silver"]}, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/version-group/3/" + ], + }, + }, + }, + }, + }, + } + ) def get_effect_change_text(self, obj): effect_changes = MoveEffectChange.objects.filter(move_effect=obj.move_effect) data = MoveEffectChangeSerializer( @@ -2354,6 +3593,30 @@ class MoveDetailSerializer(serializers.ModelSerializer): return data + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["change", "stat"], + "properties": { + "change": {"type": "integer", "format": "int32", "examples": [2]}, + "stat": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["attack"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/stat/1/"], + }, + }, + }, + }, + }, + } + ) def get_move_stat_change(self, obj): stat_change_objects = MoveMetaStatChange.objects.filter(move=obj) stat_changes = MoveMetaStatChangeSerializer( @@ -2398,6 +3661,37 @@ class PalParkAreaDetailSerializer(serializers.ModelSerializer): model = PalParkArea fields = ("id", "name", "names", "pokemon_encounters") + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["base_score", "pokemon-species", "rate"], + "properties": { + "base_score": { + "type": "integer", + "format": "int32", + "examples": [50], + }, + "pokemon-species": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["bulbasaur"]}, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/pokemon-species/1/" + ], + }, + }, + }, + "rate": {"type": "integer", "format": "int32", "examples": [30]}, + }, + }, + } + ) def get_encounters(self, obj): pal_park_objects = PalPark.objects.filter(pal_park_area=obj) parks = PalParkSerializer( @@ -2482,6 +3776,30 @@ class PokemonFormDetailSerializer(serializers.ModelSerializer): "types", ) + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["language", "name"], + "properties": { + "language": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["en"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/language/9/"], + }, + }, + }, + "name": {"type": "string", "examples": ["Plant Cloak"]}, + }, + }, + } + ) def get_pokemon_form_names(self, obj): form_results = PokemonFormName.objects.filter( pokemon_form=obj, name__regex=".+" @@ -2497,6 +3815,30 @@ class PokemonFormDetailSerializer(serializers.ModelSerializer): return data + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["language", "name"], + "properties": { + "language": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["en"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/language/9/"], + }, + }, + }, + "name": {"type": "string", "examples": ["Plant Cloak"]}, + }, + }, + } + ) def get_pokemon_form_pokemon_names(self, obj): form_results = PokemonFormName.objects.filter( pokemon_form=obj, pokemon_name__regex=".+" @@ -2513,10 +3855,68 @@ class PokemonFormDetailSerializer(serializers.ModelSerializer): return data + @extend_schema_field( + field={ + "type": "object", + "properties": { + "default": { + "type": "string", + "format": "uri", + "examples": [ + "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/412.png" + ], + } + }, + "additionalProperties": { # Stoplight Elements doesn't render this well + "type": "string", + "format": "uri", + "nullable": True, + "examples": [ + "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/shiny/412.png" + ], + }, + "examples": [ + { + "back_default": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/412.png", + "back_female": None, + "back_shiny": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/shiny/412.png", + "back_shiny_female": None, + "front_default": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/412.png", + "front_female": None, + "front_shiny": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/shiny/412.png", + "front_shiny_female": None, + } + ], + } + ) def get_pokemon_form_sprites(self, obj): sprites_object = PokemonFormSprites.objects.get(pokemon_form_id=obj) return sprites_object.sprites + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["slot", "type"], + "properties": { + "slot": {"type": "integer", "format": "int32", "examples": [1]}, + "type": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["bug"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/type/7/"], + }, + }, + }, + }, + }, + } + ) def get_pokemon_form_types(self, obj): form_type_objects = PokemonFormType.objects.filter(pokemon_form=obj) form_types = PokemonFormTypeSerializer( @@ -2600,6 +4000,29 @@ class MoveLearnMethodDetailSerializer(serializers.ModelSerializer): model = MoveLearnMethod fields = ("id", "name", "names", "descriptions", "version_groups") + # "version_groups": [ + # { + # "name": "red-blue", + # "url": "https://pokeapi.co/api/v2/version-group/1/" + # }, + + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["red-blue"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/version-group/1/"], + }, + }, + }, + } + ) def get_method_version_groups(self, obj): version_group_objects = VersionGroupMoveLearnMethod.objects.filter( move_learn_method=obj @@ -2644,6 +4067,23 @@ class PokemonShapeDetailSerializer(serializers.ModelSerializer): model = PokemonShape fields = ("id", "name", "awesome_names", "names", "pokemon_species") + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["url", "name"], + "properties": { + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/language/9/"], + }, + "name": {"type": "string", "examples": ["Ball"]}, + }, + }, + } + ) def get_shape_names(self, obj): results = PokemonShapeName.objects.filter(pokemon_shape_id=obj) serializer = PokemonShapeNameSerializer( @@ -2656,6 +4096,46 @@ class PokemonShapeDetailSerializer(serializers.ModelSerializer): return data + # "awesome_names": [ + # { + # "awesome_name": "Pomacé", + # "language": { + # "name": "fr", + # "url": "https://pokeapi.co/api/v2/language/5/" + # } + # }, + # { + # "awesome_name": "Pomaceous", + # "language": { + # "name": "en", + # "url": "https://pokeapi.co/api/v2/language/9/" + # } + # } + # ], + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["awesome_name", "language"], + "properties": { + "awesome_name": {"type": "string", "examples": ["Pomaceous"]}, + "language": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["en"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/language/9/"], + }, + }, + }, + }, + }, + } + ) def get_shape_awesome_names(self, obj): results = PokemonShapeName.objects.filter(pokemon_shape_id=obj) serializer = PokemonShapeNameSerializer( @@ -2722,6 +4202,7 @@ class PokemonDetailSerializer(serializers.ModelSerializer): held_items = serializers.SerializerMethodField("get_pokemon_held_items") location_area_encounters = serializers.SerializerMethodField("get_encounters") sprites = serializers.SerializerMethodField("get_pokemon_sprites") + cries = serializers.SerializerMethodField("get_pokemon_cries") class Meta: model = Pokemon @@ -2742,15 +4223,416 @@ class PokemonDetailSerializer(serializers.ModelSerializer): "moves", "species", "sprites", + "cries", "stats", "types", "past_types", ) + @extend_schema_field( + field={ + "type": "object", + "properties": { + "front_default": { + "type": "string", + "format": "uri", + "exmaple": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/1.png", + } + }, + "additionalProperties": { # Stoplight Elements doesn't render this well + "type": "string", + "format": "uri", + "nullable": True, + "examples": [ + "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/shiny/1.png" + ], + }, + "examples": [ + { + "back_default": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/1.png", + "back_female": None, + "back_shiny": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/shiny/1.png", + "back_shiny_female": None, + "front_default": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/1.png", + "front_female": None, + "front_shiny": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/shiny/1.png", + "front_shiny_female": None, + } + ], + } + ) def get_pokemon_sprites(self, obj): sprites_object = PokemonSprites.objects.get(pokemon_id=obj) return sprites_object.sprites + @extend_schema_field( + field={ + "type": "object", + "required": ["latest", "legacy"], + "properties": { + "latest": { + "type": "string", + "format": "uri", + "examples": [ + "https://raw.githubusercontent.com/PokeAPI/cries/main/cries/pokemon/latest/50.ogg" + ], + }, + "legacy": { + "type": "string", + "format": "uri", + "examples": [ + "https://raw.githubusercontent.com/PokeAPI/cries/main/cries/pokemon/legacy/50.ogg" + ], + }, + }, + } + ) + def get_pokemon_cries(self, obj): + cries_object = PokemonCries.objects.get(pokemon_id=obj) + return cries_object.cries + + # { + # "move": { + # "name": "scratch", + # "url": "https://pokeapi.co/api/v2/move/10/" + # }, + # "version_group_details": [ + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "red-blue", + # "url": "https://pokeapi.co/api/v2/version-group/1/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "yellow", + # "url": "https://pokeapi.co/api/v2/version-group/2/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "gold-silver", + # "url": "https://pokeapi.co/api/v2/version-group/3/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "crystal", + # "url": "https://pokeapi.co/api/v2/version-group/4/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "ruby-sapphire", + # "url": "https://pokeapi.co/api/v2/version-group/5/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "emerald", + # "url": "https://pokeapi.co/api/v2/version-group/6/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "firered-leafgreen", + # "url": "https://pokeapi.co/api/v2/version-group/7/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "diamond-pearl", + # "url": "https://pokeapi.co/api/v2/version-group/8/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "platinum", + # "url": "https://pokeapi.co/api/v2/version-group/9/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "heartgold-soulsilver", + # "url": "https://pokeapi.co/api/v2/version-group/10/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "black-white", + # "url": "https://pokeapi.co/api/v2/version-group/11/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "colosseum", + # "url": "https://pokeapi.co/api/v2/version-group/12/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "xd", + # "url": "https://pokeapi.co/api/v2/version-group/13/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "black-2-white-2", + # "url": "https://pokeapi.co/api/v2/version-group/14/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "x-y", + # "url": "https://pokeapi.co/api/v2/version-group/15/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "omega-ruby-alpha-sapphire", + # "url": "https://pokeapi.co/api/v2/version-group/16/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "sun-moon", + # "url": "https://pokeapi.co/api/v2/version-group/17/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "ultra-sun-ultra-moon", + # "url": "https://pokeapi.co/api/v2/version-group/18/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "lets-go-pikachu-lets-go-eevee", + # "url": "https://pokeapi.co/api/v2/version-group/19/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "sword-shield", + # "url": "https://pokeapi.co/api/v2/version-group/20/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "brilliant-diamond-and-shining-pearl", + # "url": "https://pokeapi.co/api/v2/version-group/23/" + # } + # }, + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "scarlet-violet", + # "url": "https://pokeapi.co/api/v2/version-group/25/" + # } + # } + # ] + # }, + + # "move": { + # "name": "scratch", + # "url": "https://pokeapi.co/api/v2/move/10/" + # }, + # "version_group_details": [ + # { + # "level_learned_at": 1, + # "move_learn_method": { + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + # }, + # "version_group": { + # "name": "red-blue", + # "url": "https://pokeapi.co/api/v2/version-group/1/" + # } + # }, + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["move", "version_group_details"], + "properties": { + "move": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["scratch"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/move/10/"], + }, + }, + }, + "version_group_details": { + "type": "array", + "items": { + "type": "object", + "required": [ + "level_learned_at", + "move_learn_method", + "version_group", + ], + "properties": { + "level_learned_at": { + "type": "integer", + "format": "int32", + "examples": [1], + }, + "move_learn_method": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["level-up"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/move-learn-method/1/" + ], + }, + }, + }, + "version_group": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["red-blue"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/version-group/1/" + ], + }, + }, + }, + }, + }, + }, + }, + }, + } + ) def get_pokemon_moves(self, obj): version_objects = VersionGroup.objects.all() version_data = VersionGroupSummarySerializer( @@ -2802,6 +4684,67 @@ class PokemonDetailSerializer(serializers.ModelSerializer): return move_list + # { + # "item": { + # "name": "soft-sand", + # "url": "https://pokeapi.co/api/v2/item/214/" + # }, + # "version_details": [ + # { + # "rarity": 5, + # "version": { + # "name": "diamond", + # "url": "https://pokeapi.co/api/v2/version/12/" + # } + # }, + @extend_schema_field( + field={ + "type": "object", + "required": ["item", "version_details"], + "properties": { + "item": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["soft-sand"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/item/214/"], + }, + }, + }, + "version_details": { + "type": "array", + "items": { + "type": "object", + "required": ["rarity", "version"], + "properties": { + "rarity": { + "type": "integer", + "format": "int32", + "examples": [5], + }, + "version": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["diamond"]}, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/version/12/" + ], + }, + }, + }, + }, + }, + }, + }, + } + ) def get_pokemon_held_items(self, obj): # Get items related to this pokemon and pull out unique Item IDs pokemon_items = PokemonItem.objects.filter(pokemon_id=obj).order_by("item_id") @@ -2835,6 +4778,39 @@ class PokemonDetailSerializer(serializers.ModelSerializer): return item_list + # { + # "ability": { + # "name": "sand-veil", + # "url": "https://pokeapi.co/api/v2/ability/8/" + # }, + # "is_hidden": false, + # "slot": 1 + # }, + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["ability", "is_hidden", "slot"], + "properties": { + "ability": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["sand-veil"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/ability/8/"], + }, + }, + }, + "is_hidden": {"type": "boolean"}, + "slot": {"type": "integer", "format": "int32", "examples": [1]}, + }, + }, + } + ) def get_pokemon_abilities(self, obj): pokemon_ability_objects = PokemonAbility.objects.filter(pokemon=obj) data = PokemonAbilitySerializer( @@ -2848,6 +4824,77 @@ class PokemonDetailSerializer(serializers.ModelSerializer): return abilities + # { + # "abilities": [ + # { + # "ability": { + # "name": "levitate", + # "url": "https://pokeapi.co/api/v2/ability/26/" + # }, + # "is_hidden": false, + # "slot": 1 + # } + # ], + # "generation": { + # "name": "generation-vi", + # "url": "https://pokeapi.co/api/v2/generation/6/" + # } + # } + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["abilities", "generation"], + "properties": { + "abilities": { + "type": "array", + "items": { + "type": "object", + "required": ["ability", "is_hidden", "slot"], + "properties": { + "ability": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["levitate"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/ability/26/" + ], + }, + }, + }, + "is_hidden": {"type": "boolean"}, + "slot": { + "type": "integer", + "format": "int32", + "examples": [1], + }, + }, + }, + }, + "generation": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["generation-vi"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/generation/6/"], + }, + }, + }, + }, + }, + } + ) def get_past_pokemon_abilities(self, obj): pokemon_past_ability_objects = PokemonAbilityPast.objects.filter(pokemon=obj) pokemon_past_abilities = PokemonAbilityPastSerializer( @@ -2883,6 +4930,37 @@ class PokemonDetailSerializer(serializers.ModelSerializer): return final_data + # { + # "slot": 1, + # "type": { + # "name": "ghost", + # "url": "https://pokeapi.co/api/v2/type/8/" + # } + # }, + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["slot", "type"], + "properties": { + "slot": {"type": "integer", "format": "int32", "examples": [1]}, + "type": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["ghost"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/type/8/"], + }, + }, + }, + }, + }, + } + ) def get_pokemon_types(self, obj): poke_type_objects = PokemonType.objects.filter(pokemon=obj) poke_types = PokemonTypeSerializer( @@ -2894,6 +4972,77 @@ class PokemonDetailSerializer(serializers.ModelSerializer): return poke_types + # "past_types": [ + # { + # "generation": { + # "name": "generation-v", + # "url": "https://pokeapi.co/api/v2/generation/5/" + # }, + # "types": [ + # { + # "slot": 1, + # "type": { + # "name": "normal", + # "url": "https://pokeapi.co/api/v2/type/1/" + # } + # } + # ] + # } + # ], + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["generation", "types"], + "properties": { + "generation": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["generation-v"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/generation/5/"], + }, + }, + }, + "types": { + "type": "array", + "items": { + "type": "object", + "required": ["slot", "type"], + "properties": { + "slot": { + "type": "integer", + "format": "int32", + "examples": [1], + }, + "type": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": ["normal"], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/type/1/" + ], + }, + }, + }, + }, + }, + }, + }, + }, + } + ) def get_past_pokemon_types(self, obj): poke_past_type_objects = PokemonTypePast.objects.filter(pokemon=obj) poke_past_types = PokemonTypePastSerializer( @@ -2929,6 +5078,12 @@ class PokemonDetailSerializer(serializers.ModelSerializer): return final_data + @extend_schema_field( + field={ + "type": "string", + "examples": ["https://pokeapi.co/api/v2/pokemon/1/encounters"], + } + ) def get_encounters(self, obj): return reverse("pokemon_encounters", kwargs={"pokemon_id": obj.pk}) @@ -2954,6 +5109,23 @@ class EvolutionTriggerDetailSerializer(serializers.HyperlinkedModelSerializer): model = EvolutionTrigger fields = ("id", "name", "names", "pokemon_species") + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["ivysaur"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/pokemon-species/2/"], + }, + }, + }, + } + ) def get_species(self, obj): evo_objects = PokemonEvolution.objects.filter(evolution_trigger=obj) species_list = [] @@ -3061,6 +5233,30 @@ class PokemonSpeciesDetailSerializer(serializers.ModelSerializer): "varieties", ) + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["language", "name"], + "properties": { + "language": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["en"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/language/9/"], + }, + }, + }, + "name": {"type": "string", "examples": ["bulbasaur"]}, + }, + }, + } + ) def get_pokemon_names(self, obj): species_results = PokemonSpeciesName.objects.filter(pokemon_species=obj) species_serializer = PokemonSpeciesNameSerializer( @@ -3074,6 +5270,37 @@ class PokemonSpeciesDetailSerializer(serializers.ModelSerializer): return data + # { + # "genus": "Seed Pokémon", + # "language": { + # "name": "en", + # "url": "https://pokeapi.co/api/v2/language/9/" + # } + # }, + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["genus", "language"], + "properties": { + "genus": {"type": "string", "examples": ["Seed Pokémon"]}, + "language": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["en"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/language/9/"], + }, + }, + }, + }, + }, + } + ) def get_pokemon_genera(self, obj): results = PokemonSpeciesName.objects.filter(pokemon_species=obj) serializer = PokemonSpeciesNameSerializer( @@ -3089,6 +5316,23 @@ class PokemonSpeciesDetailSerializer(serializers.ModelSerializer): return genera + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["monster"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/egg-group/1/"], + }, + }, + }, + } + ) def get_pokemon_egg_groups(self, obj): results = PokemonEggGroup.objects.filter(pokemon_species=obj) data = PokemonEggGroupSerializer(results, many=True, context=self.context).data @@ -3098,6 +5342,30 @@ class PokemonSpeciesDetailSerializer(serializers.ModelSerializer): return groups + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["is_default", "pokemon"], + "properties": { + "is_default": {"type": "boolean"}, + "pokemon": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["bulbasaur"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/pokemon/1/"], + }, + }, + }, + }, + }, + } + ) def get_pokemon_varieties(self, obj): results = Pokemon.objects.filter(pokemon_species=obj) summary_data = PokemonSummarySerializer( @@ -3117,6 +5385,37 @@ class PokemonSpeciesDetailSerializer(serializers.ModelSerializer): return varieties + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["area", "base_score", "rate"], + "properties": { + "area": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["field"]}, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/pal-park-area/2/" + ], + }, + }, + }, + "base_score": { + "type": "integer", + "format": "int32", + "examples": [50], + }, + "rate": {"type": "integer", "format": "int32", "examples": [30]}, + }, + }, + } + ) def get_encounters(self, obj): pal_park_objects = PalPark.objects.filter(pokemon_species=obj) parks = PalParkSerializer( @@ -3174,6 +5473,214 @@ class EvolutionChainDetailSerializer(serializers.ModelSerializer): model = EvolutionChain fields = ("id", "baby_trigger_item", "chain") + # TODO: Revisit Schema + @extend_schema_field( + field={ + "type": "object", + "required": ["evolution_details", "evolves_to", "is_baby", "species"], + "properties": { + "evolution_details": {"type": "array", "items": {}, "examples": []}, + "evolves_to": { + "type": "array", + "items": { + "type": "object", + "required": [ + "evolution_details", + "evolves_to", + "is_baby", + "species", + ], + "properties": { + "evolution_details": { + "type": "array", + "items": { + "type": "object", + "required": [ + "gender", + "held_item", + "item", + "known_move", + "known_move_type", + "location", + "min_affection", + "min_beauty", + "min_happiness", + "min_level", + "needs_overworld_rain", + "party_species", + "party_type", + "relative_physical_stats", + "time_of_day", + "trade_species", + "trigger", + "turn_upside_down", + ], + "properties": { + "gender": { + "type": "", + "nullable": True, + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": [1], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [2], + }, + }, + }, + "held_item": { + "type": "object", + "nullable": True, + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": [1], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [2], + }, + }, + }, + "item": { + "type": "object", + "nullable": True, + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + "examples": [1], + }, + "url": { + "type": "string", + "format": "uri", + "examples": [2], + }, + }, + }, + "known_move": { + "type": "", + "nullable": True, + }, + "known_move_type": { + "type": "", + "nullable": True, + }, + "location": { + "type": "object", + "nullable": True, + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + }, + "url": { + "type": "string", + "format": "uri", + }, + }, + }, + "min_affection": { + "type": "integer", + "format": "int32", + "nullable": True, + }, + "min_beauty": { + "type": "integer", + "format": "int32", + "nullable": True, + }, + "min_happiness": { + "type": "integer", + "format": "int32", + "nullable": True, + }, + "min_level": { + "type": "integer", + "format": "int32", + "nullable": True, + }, + "needs_overworld_rain": { + "type": "boolean", + "nullable": True, + }, + "party_species": { + "type": "string", + "nullable": True, + }, + "party_type": { + "type": "string", + "nullable": True, + }, + "relative_physical_stats": { + "type": "string", + "nullable": True, + }, + "time_of_day": {"type": "string"}, + "trade_species": { + "type": "string", + "nullable": True, + }, + "trigger": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": { + "type": "string", + }, + "url": { + "type": "string", + "format": "uri", + }, + }, + }, + "turn_upside_down": {"type": "boolean"}, + }, + }, + }, + "is_baby": {"type": "boolean"}, + "species": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["happiny"]}, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/pokemon-species/440/" + ], + }, + }, + }, + }, + }, + }, + "is_baby": {"type": "boolean"}, + "species": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["happiny"]}, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/pokemon-species/440/" + ], + }, + }, + }, + }, + } + ) def build_chain(self, obj): chain_id = obj.id @@ -3286,6 +5793,72 @@ class PokeathlonStatDetailSerializer(serializers.HyperlinkedModelSerializer): model = PokeathlonStat fields = ("id", "name", "affecting_natures", "names") + @extend_schema_field( + field={ + "type": "object", + "required": ["decrease", "increase"], + "properties": { + "decrease": { + "type": "array", + "items": { + "type": "object", + "required": ["max_change", "nature"], + "properties": { + "max_change": { + "type": "integer", + "format": "int32", + "maximum": -1, + "examples": [-1], + }, + "nature": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["hardy"]}, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/nature/1/" + ], + }, + }, + }, + }, + }, + }, + "increase": { + "type": "array", + "items": { + "type": "object", + "required": ["max_change", "nature"], + "properties": { + "max_change": { + "type": "integer", + "format": "int32", + "minimum": 1, + "examples": [2], + }, + "nature": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["hardy"]}, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/nature/1/" + ], + }, + }, + }, + }, + }, + }, + }, + } + ) def get_natures_that_affect(self, obj): stat_change_objects = NaturePokeathlonStat.objects.filter(pokeathlon_stat=obj) stat_changes = NaturePokeathlonStatSerializer( @@ -3344,6 +5917,36 @@ class PokedexDetailSerializer(serializers.ModelSerializer): "version_groups", ) + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["entry_number", "pokemon_species"], + "properties": { + "entry_number": { + "type": "integer", + "format": "int32", + "examples": [1], + }, + "pokemon_species": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["bulbasaur"]}, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://pokeapi.co/api/v2/pokemon-species/1/" + ], + }, + }, + }, + }, + }, + } + ) def get_pokedex_entries(self, obj): results = PokemonDexNumber.objects.filter(pokedex=obj).order_by( "pokedex_number" @@ -3358,6 +5961,23 @@ class PokedexDetailSerializer(serializers.ModelSerializer): return data + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["the-teal-mask"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/version-group/26/"], + }, + }, + }, + } + ) def get_pokedex_version_groups(self, obj): dex_group_objects = PokedexVersionGroup.objects.filter(pokedex=obj) dex_groups = PokedexVersionGroupSerializer( @@ -3417,6 +6037,23 @@ class VersionGroupDetailSerializer(serializers.ModelSerializer): "versions", ) + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["kanto"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/region/1/"], + }, + }, + }, + } + ) def get_version_group_regions(self, obj): vg_regions = VersionGroupRegion.objects.filter(version_group=obj) data = VersionGroupRegionSerializer( @@ -3429,6 +6066,25 @@ class VersionGroupDetailSerializer(serializers.ModelSerializer): return regions + # "name": "level-up", + # "url": "https://pokeapi.co/api/v2/move-learn-method/1/" + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["level-up"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/move-learn-method/1/"], + }, + }, + }, + } + ) def get_learn_methods(self, obj): learn_method_objects = VersionGroupMoveLearnMethod.objects.filter( version_group=obj @@ -3443,6 +6099,23 @@ class VersionGroupDetailSerializer(serializers.ModelSerializer): return methods + @extend_schema_field( + field={ + "type": "array", + "items": { + "type": "object", + "required": ["name", "url"], + "properties": { + "name": {"type": "string", "examples": ["kanto"]}, + "url": { + "type": "string", + "format": "uri", + "examples": ["https://pokeapi.co/api/v2/pokedex/2/"], + }, + }, + }, + } + ) def get_version_groups_pokedexes(self, obj): dex_group_objects = PokedexVersionGroup.objects.filter(version_group=obj) dex_groups = PokedexVersionGroupSerializer( diff --git a/pokemon_v2/tests.py b/pokemon_v2/tests.py index 57ef4a14..efa42567 100644 --- a/pokemon_v2/tests.py +++ b/pokemon_v2/tests.py @@ -1679,42 +1679,46 @@ class APIData: showdown = { "front_default": showdown_path % pokemon.id if front_default else None, - "front_female": showdown_path % f"female/{pokemon.id}" - if front_female - else None, - "front_shiny": showdown_path % f"shiny/{pokemon.id}" - if front_shiny - else None, - "front_shiny_female": showdown_path % f"shiny/female/{pokemon.id}" - if front_shiny_female - else None, - "back_default": showdown_path % f"back/{pokemon.id}" - if back_default - else None, - "back_female": showdown_path % f"back/female/{pokemon.id}" - if back_female - else None, - "back_shiny": showdown_path % f"back/shiny/{pokemon.id}" - if back_shiny - else None, - "back_shiny_female": showdown_path % f"back/shiny/female/{pokemon.id}" - if back_shiny_female - else None, + "front_female": ( + showdown_path % f"female/{pokemon.id}" if front_female else None + ), + "front_shiny": ( + showdown_path % f"shiny/{pokemon.id}" if front_shiny else None + ), + "front_shiny_female": ( + showdown_path % f"shiny/female/{pokemon.id}" + if front_shiny_female + else None + ), + "back_default": ( + showdown_path % f"back/{pokemon.id}" if back_default else None + ), + "back_female": ( + showdown_path % f"back/female/{pokemon.id}" if back_female else None + ), + "back_shiny": ( + showdown_path % f"back/shiny/{pokemon.id}" if back_shiny else None + ), + "back_shiny_female": ( + showdown_path % f"back/shiny/female/{pokemon.id}" + if back_shiny_female + else None + ), } sprites = { "front_default": sprite_path % pokemon.id if front_default else None, "front_female": sprite_path % pokemon.id if front_female else None, "front_shiny": sprite_path % pokemon.id if front_shiny else None, - "front_shiny_female": sprite_path % pokemon.id - if front_shiny_female - else None, + "front_shiny_female": ( + sprite_path % pokemon.id if front_shiny_female else None + ), "back_default": sprite_path % pokemon.id if back_default else None, "back_female": sprite_path % pokemon.id if back_female else None, "back_shiny": sprite_path % pokemon.id if back_shiny else None, - "back_shiny_female": sprite_path % pokemon.id - if back_shiny_female - else None, + "back_shiny_female": ( + sprite_path % pokemon.id if back_shiny_female else None + ), } pokemon_sprites = PokemonSprites.objects.create( @@ -1725,6 +1729,21 @@ class APIData: return pokemon_sprites + @classmethod + def setup_pokemon_cries_data(cls, pokemon, latest=True, legacy=False): + cries_path = ( + "https://raw.githubusercontent.com/PokeAPI/cries/main/cries/pokemon/%s.ogg" + ) + cries = { + "latest": cries_path % f"latest/{pokemon.id}" if latest else None, + "legacy": cries_path % f"legacy/{pokemon.id}" if legacy else None, + } + pokemon_cries = PokemonCries.objects.create( + pokemon=pokemon, cries=json.dumps(cries) + ) + pokemon_cries.save() + return pokemon_cries + # Evolution Data @classmethod def setup_evolution_trigger_data(cls, name="evltn trgr"): @@ -4596,6 +4615,7 @@ class APITests(APIData, APITestCase): pokemon_species=pokemon_species, name="pkm for base pkmn spcs" ) self.setup_pokemon_sprites_data(pokemon) + self.setup_pokemon_cries_data(pokemon) response = self.client.get( "{}/pokemon-species/{}/".format(API_V2, pokemon_species.pk), @@ -4816,6 +4836,7 @@ class APITests(APIData, APITestCase): ) pokemon_item = self.setup_pokemon_item_data(pokemon=pokemon) pokemon_sprites = self.setup_pokemon_sprites_data(pokemon=pokemon) + pokemon_cries = self.setup_pokemon_cries_data(pokemon, latest=True, legacy=True) pokemon_game_index = self.setup_pokemon_game_index_data( pokemon=pokemon, game_index=10 ) @@ -5052,7 +5073,9 @@ class APITests(APIData, APITestCase): ) sprites_data = json.loads(pokemon_sprites.sprites) + cries_data = json.loads(pokemon_cries.cries) response_sprites_data = json.loads(response.data["sprites"]) + response_cries_data = json.loads(response.data["cries"]) # sprite params self.assertEqual( @@ -5070,6 +5093,35 @@ class APITests(APIData, APITestCase): response_sprites_data["other"]["showdown"]["back_default"], ) + # cries params + self.assertEqual( + cries_data["latest"], + "{}".format(cries_data["latest"]), + ) + self.assertEqual( + cries_data["legacy"], + "{}".format(cries_data["legacy"]), + ) + + # test search pokemon using search query param `q=partial_name` + + response = self.client.get( + "{}/pokemon/?q={}".format(API_V2, pokemon.name[:2]), + HTTP_HOST="testserver", + ) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data["count"], 1) + self.assertEqual(response.data["results"][0]["name"], pokemon.name) + + response = self.client.get( + "{}/pokemon/?q={}".format(API_V2, pokemon.name[-3:]), + ) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data["count"], 1) + self.assertEqual(response.data["results"][0]["name"], pokemon.name) + def test_pokemon_form_api(self): pokemon_species = self.setup_pokemon_species_data() pokemon = self.setup_pokemon_data(pokemon_species=pokemon_species) diff --git a/requirements.txt b/requirements.txt index c7d6d4a6..383b8bbd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,3 +11,4 @@ mimeparse==0.1.3 psycopg2-binary==2.9.9 python-dateutil==2.8.2 python-mimeparse==1.6.0 +drf-spectacular==0.27.2