No description
Find a file
2024-02-24 01:51:37 -06:00
.circleci cicd: use newer images 2023-12-13 02:36:44 +01:00
.github cicd: run on PRs 2023-11-30 15:03:43 +01:00
config refactor: lint 2024-01-13 18:00:27 +01:00
data replacing move_effect_prose.csv with original 2024-02-24 01:51:35 -06:00
graphql fix: track and set permissions on talbes 2024-02-13 12:38:58 +01:00
pokemon_v2 fixing linter issue 2024-02-24 01:51:37 -06:00
Resources chore: add logging 2024-02-09 19:48:52 +01:00
.dockerignore revert: don't ship graphql files in docker image 2021-06-01 14:37:09 +02:00
.gitignore Copyright update, small fixes 2023-04-26 10:57:57 +12:00
.gitmodules feat: add cries repo 2024-01-29 21:00:03 +01:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md (#296) 2017-06-20 11:44:05 +01:00
CONTRIBUTING.md Activating Open Collective (#295) 2017-06-19 10:10:34 +01:00
CONTRIBUTORS.txt chore: add more contributors 2019-01-06 18:59:32 +01:00
docker-compose-dev.yml fix: allow dev deployment 2021-10-24 19:33:19 +02:00
docker-compose.override.yml fix: allow dev deployment 2021-10-24 19:33:19 +02:00
docker-compose.yml deps: upgrade images 2024-01-09 20:46:53 +01:00
gunicorn.conf.py feat: allow port customization 2021-05-28 11:52:40 +02:00
LICENSE.md Copyright update, small fixes 2023-04-26 10:57:57 +12:00
Makefile chore: try increase sleep 2024-01-11 22:06:15 +01:00
manage.py initial commit 2014-12-04 11:11:46 +00:00
README.md docs: fix port 2024-01-21 22:06:00 +01:00
requirements.txt deps: ipdate django to 3.2 2024-01-13 17:57:47 +01:00
SECURITY.md Create SECURITY.md 2021-09-09 13:53:37 +02:00
test-requirements.txt refactor: format with new black 2023-11-08 10:44:55 +01:00


PokeAPI

build status data status deploy status License Backers on Open Collective Sponsors on Open Collective



A RESTful API for Pokémon - pokeapi.co

Beta GraphQL support is rolling out! Check out the GraphQL paragraph for more info.

Setup   pyVersion310

  • Download this source code into a working directory, be sure to use the flag --recurse-submodules to clone also our submodules.

  • Install the requirements using pip:

    make install
    # This will install all the required packages and libraries for using PokeAPI
    
  • Set up the local development environment using the following command:

    make setup
    
  • Run the server on port 8000 using the following command:

    make serve
    

Database setup

To build or rebuild the database by applying any CSV file update, run

make build-db

Visit localhost:8000/api/v2/ to see the running API!

Each time the build-db script is run, it will iterate over each table in the database, wipe it, and rewrite each row using the data found in data/v2/csv.

If you ever need to wipe the database use this command:

make wipe-sqlite-db

If the database schema has changed, generate any outstanding migrations and apply them

make make-migrations
make migrate

Run make help to see all tasks.

Docker and Compose   docker hub

There is also a multi-container setup, managed by Docker 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

make docker-setup

If you don't have make on your machine you can use the following commands

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/ or localhost/api/v2/pokemon/bulbasaur/ on port 80.

To rebuild the database and apply any CSV file updates, run

make docker-build-db

If the database schema has changed, generate the migrations and apply those

make docker-make-migrations
make docker-migrate

GraphQL  

When you start PokéAPI with the above docker-compose setup, an Hasura Engine server is started as well. It's possible to track all the PokeAPI tables and foreign keys by simply

# hasura cli needs to be installed and available in your $PATH: https://hasura.io/docs/latest/graphql/core/hasura-cli/install-hasura-cli.html
# hasura cli's version has to greater than v2.0.8
make hasura-apply

When finished browse http://localhost:8080 and you will find the admin console. The GraphQL endpoint will be hosted at http://localhost:8080/v1/graphql.

A free public GraphiQL console is browsable at the address https://beta.pokeapi.co/graphql/console/. The relative GraphQL endpoint is accessible at https://beta.pokeapi.co/graphql/v1beta

A set of examples is provided in the directory /graphql/examples of this repository.

Kubernetes   k8s status

Kustomize files are provided in the folder https://github.com/PokeAPI/pokeapi/tree/master/Resources/k8s/kustomize/base/. Create and change your secrets:

cp Resources/k8s/kustomize/base/secrets/postgres.env.sample Resources/k8s/kustomize/base/secrets/postgres.env
cp Resources/k8s/kustomize/base/secrets/graphql.env.sample Resources/k8s/kustomize/base/secrets/graphql.env
cp Resources/k8s/kustomize/base/config/pokeapi.env.sample Resources/k8s/kustomize/base/config/pokeapi.env
# Edit the newly created files

Configure kubectl to point to a cluster and then run the following commands to start a PokéAPI service.

kubectl apply -k Resources/k8s/kustomize/base/
kubectl config set-context --current --namespace pokeapi # (Optional) Set pokeapi ns as the working ns
# Wait for the cluster to spin up
kubectl exec --namespace pokeapi deployment/pokeapi -- python manage.py migrate --settings=config.docker-compose # Migrate the DB
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' # Build the db
kubectl wait --namespace pokeapi --timeout=120s --for=condition=complete job/load-graphql # Wait for Graphql configuration job to finish

This k8s setup creates all k8s resources inside the Namespace pokeapi, run kubectl delete namespace pokeapi to delete them. It also creates a Service of type LoadBalancer which is exposed on port 80 and 443. Data is persisted on 12Gi of ReadWriteOnce volumes.

Wrappers

Official wrapper Repository Features
Node server-side PokeAPI/pokedex-promise-v2 Auto caching
Browser client-side PokeAPI/pokeapi-js-wrapper Auto caching, Image caching
Java/Kotlin PokeAPI/pokekotlin
Python 2/3 PokeAPI/pokepy Auto caching
Python 3 PokeAPI/pokebase Auto caching, Image caching
Wrapper Repository Features
PHP lmerotta/phpokeapi Auto caching, lazy loading
Ruby rdavid1099/poke-api-v2
.Net Standard mtrdp642/PokeApiNet Auto caching
Go mtslzr/pokeapi-go Auto caching
Dart prathanbomb/pokedart
Rust lunik1/pokerust Auto caching
Spring Boot dlfigueira/spring-pokeapi Auto caching
Swift kinkofer/PokemonAPI
Typescript server-side/client-side Gabb-c/Pokenode-ts Auto caching
Python beastmatser/aiopokeapi Auto caching, asynchronous
Scala juliano/pokeapi-scala 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!

Thank you to all our backers! Become a backer

Join Us On Slack!

Warning

Currently no maintainer has enough free time to support the community on Slack. Our Slack is in an unmaintained status.

Have a question or just want to discuss new ideas and improvements? Hit us up on Slack. Consider talking with us here before creating a new issue. This way we can keep issues here a bit more organized and helpful in the long run. Be excellent to each other 😄

Sign up easily!

Once you've signed up visit PokéAPI on Slack

Contributing

This project exists thanks to all the people who contribute

All contributions are welcome: bug fixes, data contributions, and recommendations.

Please see the issues on GitHub before you submit a pull request or raise an issue, someone else might have beat you to it.

To contribute to this repository:

  • Fork the project to your own GitHub profile

  • Download the forked project using git clone:

    git clone --recurse-submodules git@github.com:<YOUR_USERNAME>/pokeapi.git
    
  • Create a new branch with a descriptive name:

    git checkout -b my_new_branch
    
  • Write some code, fix something, and add a test to prove that it works. No pull request will be accepted without tests passing, or without new tests if new features are added.

  • Commit your code and push it to GitHub

  • Open a new pull request and describe the changes you have made.

  • We'll accept your changes after review.

Simple!

Deprecation

As of October 2018, the v1 API has been removed from PokéAPI. For more information, see pokeapi.co/docs/v1.html.