# HEROES API Make your Heroes API ## Installation ### Standar installation heroeapi require of **python packages** and **MongoDB** for work. After running your **MongoDB** set configuration: Write `.env` file: ```sh API_DEBUG=False DB_NAME=heroes # changeme DB_HOST=127.0.0.1 DB_PORT=27017 DB_USER=root # changeme DB_PASS=example # changeme DB_AUTH=admin JWT_SECRET_KEY=eo7aiHie4aeth4eteeho7ahC7yeetohsi7a # changeme USER_ENABLE_REGISTER=True ``` ```console $ git clone https://c.hgit.ga/software/heroeapi.git ``` ```console $ virtualenv -p python3 venv ``` ```console $ pip install -r requirements.txt ``` ```console $ python wsgi.py ``` ### Docker Compose Set configuration file `.env` on **heroeapi app** and `.db.env` **mongo database** Write `.env`: ```sh # APP API_DEBUG=False DB_NAME=heroes # changeme DB_HOST=127.0.0.1 DB_PORT=27017 DB_USER=root DB_PASS=example # changeme DB_AUTH=admin JWT_SECRET_KEY=eo7aiHie4aeth4eteeho7ahC7yeetohsi7a # changeme USER_ENABLE_REGISTER=True # GUNICORN GUNICORN_TIMEOUT=30 GUNICORN_NUM_WORKERS=4 ``` Write `.db.env`: ```sh MONGO_INITDB_ROOT_USERNAME=root # changeme MONGO_INITDB_ROOT_PASSWORD=example # changeme MONGO_INITDB_DATABASE=admin ``` Write `docker-compose.yml`: ```yaml version: '3.5' services: app: image: rusian/heroesapi container_name: heroeapi env_file: .env networks: - heroeapi ports: - "5000:5000" tty: true restart: "always" mongo: image: mongo:4.4.12-focal container_name: heroeapi_db networks: - heroeapi restart: always command: [--auth] env_file: - .db.env volumes: - ./heroeapi_db:/data/db ports: - "27017:27017" networks: heroeapi: driver: bridge ``` ```console $ docker-compose up -d ``` ### Generate image from build ```console $ docker build --tag rusian/heroesapi -f Dockerfile . ``` ## Usage Check `test` directory for some examples. Remember that you must first create the **user** to be able to add a **Hero** ## API References #### Heroes | Reference | Method | Purpose | |--------------------------------|--------|----------------------------------------------------------------------------| | /api/v1/heroes | GET | Returns all information of the character. | | /api/v1/heroes/:id | GET | Search by character id. Returns all information of the character. | | /api/v1/heroes/:id | POST | Add of information of the character (only Admin) | | /api/v1/heroes/:id | DELETE | Delete character by id (only Admin) | | /api/v1/heroes/:id | PUT | Update character by id (only Admin) | | /api/v1/heroes/:id/powerstats | GET | Returns JSON Array of all powerstats of given character. | | /api/v1/heroes/:id/biography | GET | Returns JSON Array of character's biography. | | /api/v1/heroes/:id/appearance | GET | Returns JSON Array of character's appearance. | | /api/v1/heroes/:id/work | GET | Returns JSON Array of character's work i.e. occupation and operation base. | | /api/v1/heroes/:id/connections | GET | Returns JSON Array of character's connections. | | /api/v1/heroes/:id/image | GET | Returns image url of the character. | | /api/v1/heroes/search/name | GET | Search character by name. Returns character id. | ###### /api/v1/heroes/id/powerstats This API call provides all powerstats for the given character. The powerstats are as follows: - Intelligence - Strength - Speed - Durability - Power - Combat ###### /api/v1/heroes/id/biography This API call gives the biographical stats of the character. They are: - Full Name - Alter Egos - Aliases - Place of Birth - First Appearance - Publisher - Alignment ###### /api/v1/heroes/id/appearance This API call provides the appearance of the character. The various statistics are : - Gender - Race - Height - Weight - Eye Color - Hair Color ###### /api/v1/heroes/id/work This API lists the work/occupation of the character. They are: - Occupation - Base of operation ###### /api/v1/heroes/id/connections This call lists out the connections of the character. - Group Affiliation - Relatives ###### /api/v1/heroes/id/image This provides the image for the character, if exists. - image ###### /api/v1/heroes/search/name This API call helps you in finding the character-id of a character by searching it's name. #### Users | Reference | Method | Purpose | |---------------------|--------|-----------------------------------------------| | /api/v1/users | GET | Returns all information of users (only Admin) | | /api/v1/users/:id | GET | Search by character id (only Admin) | | /api/v1/users/:id | POST | Add of information of the user (only Admin) | | /api/v1/users/:id | DELETE | Delete user by id (only Admin) | | /api/v1/users/:id | PUT | Update user by id (only Admin) | | /api/v1/auth/signup | POST | Create user | | /api/v1/auth/token | POST | Generate Token | ## LICENSE This work is licensed under the [GNU GPLv3+](LICENSE)