To setup database simply run:
node utils/cards_parser.js
to get your card data into utils/cards.json
(Note you may need to update the endpoint to get newer card lists!)
https://api.hearthstonejson.com/v1/25770/enUS/cards.collectible.json
is current as of 8/9/18 but you will have to replace the '25770' part
with the latest API endpoint number from https://api.hearthstonejson.com/v1/
node utils/schema.js
to set up tables for cards, decks and cards_decks, and seed your card data into postgres
Live site: https://hsdeckbuilder.netlify.com/ Client Repo: https://github.com/MitchGianoni/hsdeckbuilder-client
This route to create a user
Params:
- username: string
- password: string
- email: string
Request
{
"username": string,
"password": string,
"email": string
}
Response
201 on success, 422 on error
This route is for logging in and retrieving auth token.
This route is for refreshing auth token.
This route is for retrieving two random cards from the card database. This route bypasses authentication.
Response
[
{
"id": "GIL_677",
"class": "ROGUE",
"name": "Face Collector",
"data": {
"artist": "James Ryman",
"attack": 2,
"cardClass": "ROGUE",
"collectible": true,
"cost": 3,
"dbfId": 47599,
"elite": true,
"flavor": "“I’ll trade you a Malfurion for an Anduin.”",
"health": 2,
"id": "GIL_677",
"mechanics": [
"BATTLECRY",
"ECHO"
],
"name": "Face Collector",
"rarity": "LEGENDARY",
"set": "GILNEAS",
"text": "<b>Echo</b>\n<b>Battlecry:</b> Add a random <b>Legendary</b> minion to your hand.",
"type": "MINION"
}
},
{
"id": "OG_325",
"class": "HUNTER",
"name": "Carrion Grub",
"data": {
"artist": "Kan Liu",
"attack": 2,
"cardClass": "HUNTER",
"collectible": true,
"cost": 3,
"dbfId": 38985,
"flavor": "Carrion, my wayward grub.",
"health": 5,
"id": "OG_325",
"name": "Carrion Grub",
"race": "BEAST",
"rarity": "COMMON",
"set": "OG",
"type": "MINION"
}
}
]
This route retrieves all cards from the database.
Response
[
{
"id": "GIL_677",
"class": "ROGUE",
"name": "Face Collector",
"data": {
"artist": "James Ryman",
"attack": 2,
"cardClass": "ROGUE",
"collectible": true,
"cost": 3,
"dbfId": 47599,
"elite": true,
"flavor": "“I’ll trade you a Malfurion for an Anduin.”",
"health": 2,
"id": "GIL_677",
"mechanics": [
"BATTLECRY",
"ECHO"
],
"name": "Face Collector",
"rarity": "LEGENDARY",
"set": "GILNEAS",
"text": "<b>Echo</b>\n<b>Battlecry:</b> Add a random <b>Legendary</b> minion to your hand.",
"type": "MINION"
}
},
{
"id": "OG_325",
"class": "HUNTER",
"name": "Carrion Grub",
"data": {
"artist": "Kan Liu",
"attack": 2,
"cardClass": "HUNTER",
"collectible": true,
"cost": 3,
"dbfId": 38985,
"flavor": "Carrion, my wayward grub.",
"health": 5,
"id": "OG_325",
"name": "Carrion Grub",
"race": "BEAST",
"rarity": "COMMON",
"set": "OG",
"type": "MINION"
}
}
]
Just a sample of the card data
Get a specific card from the database by id. ID is the same that the game uses. I.E. "GIL_677"
Response
{
"id": "GIL_677",
"class": "ROGUE",
"name": "Face Collector",
"data": {
"artist": "James Ryman",
"attack": 2,
"cardClass": "ROGUE",
"collectible": true,
"cost": 3,
"dbfId": 47599,
"elite": true,
"flavor": "“I’ll trade you a Malfurion for an Anduin.”",
"health": 2,
"id": "GIL_677",
"mechanics": [
"BATTLECRY",
"ECHO"
],
"name": "Face Collector",
"rarity": "LEGENDARY",
"set": "GILNEAS",
"text": "<b>Echo</b>\n<b>Battlecry:</b> Add a random <b>Legendary</b> minion to your hand.",
"type": "MINION"
}
}
This route retrieves all decks for the current logged in user.
Params:
- user.id: string
Request
{
"user_id": string
}
Response
[
{
"id": 36,
"user_id": 2,
"deckName": "Druid",
"deckClass": "DRUID"
},
{
"id": 38,
"user_id": 2,
"deckName": "Mage",
"deckClass": "MAGE"
},
{
"id": 39,
"user_id": 2,
"deckName": "Mage",
"deckClass": "MAGE"
},
{
"id": 43,
"user_id": 2,
"deckName": "f",
"deckClass": "WARLOCK"
}
]
This route is to create decks for the logged in user.
Params:
- user.id: string
- deckClass: string
- deckName: string
Request
{
"user_id": string,
"deckClass": string,
"deckName": string
}
Response
201 on success, 422 on error
This route deletes a deck by id.
Params:
- user.id: string
- deckId: string
Request
{
"user_id": string,
"deckId": string
}
Response
204 on success
Retrieves all cards in a deck by deck id.
Params:
- user.id: string
- deckId: string
Request
{
"user_id": string,
"deckId": string
}
Response
201 on success
Adds a card to a deck by deck id and card id.
Params:
- user.id: string
- deckId: string
- cardId: string
Request
{
"user_id": string,
"deckId": string,
"cardId": string
}
Response
201 on success
This route deletes a card from a deck by id.
Params:
- user.id: string
- deckId: string
- cardId: string
Request
{
"user_id": string,
"deckId": string,
"cardId": string
}
Response
204 on success