https://block-compare-test-app.herokuapp.com
brew install elixir
git@github.com:relaxcoredev/shopping-list.git
cd shopping-list
cp .env.example .env
# set all variables correctly
source .env
mix deps.get
mix ecto.setup
mix phx.server
Now you can visit localhost:4000
from your browser.
GET /api/v1/items
Params:
filter[category]
- category name
filter[bought]
- true/false
sort[name]
- asc/desc
sort[price]
- asc/desc
Success Response:
{
"data": [
{
"bought": false,
"category": {
"id": "d7c2f78f-c804-43d7-a20f-8c2ab8498fb7",
"name": "Beverages"
},
"id": "631a4570-295c-4b0c-bc2d-4db0b5aace08",
"name": "Coca-Cola",
"price": 2.5
}
]
}
GET /api/v1/items/:item_id
Success Response:
{
"data": {
"bought": false,
"category": {
"id": "d7c2f78f-c804-43d7-a20f-8c2ab8498fb7",
"name": "Beverages"
},
"id": "631a4570-295c-4b0c-bc2d-4db0b5aace08",
"name": "Coca-Cola",
"price": 2.5
}
}
Error Response:
{
"errors": {
"detail": "Not Found"
}
}
POST /api/v1/items
Params:
name
- item name
price
- item price
category_id
- item category_id. Categories list with IDs you can find at /api/v1/categories
Success Response:
{
"data": {
"bought": false,
"category": {
"id": "d7c2f78f-c804-43d7-a20f-8c2ab8498fb7",
"name": "Beverages"
},
"id": "631a4570-295c-4b0c-bc2d-4db0b5aace08",
"name": "Coca-Cola",
"price": 2.5
}
}
Error Response:
{
"errors": {
"name": [
"can't be blank"
],
"price": [
"can't be blank"
]
}
}
PUT /api/v1/items/:item_id
All same as create action, except one extra param:
bought
- true/false
DELETE /api/v1/items/:item_id
Success Response:
Status code 200 with no content
Error Response:
{
"errors": {
"detail": "Not Found"
}
}