apiary.apib
FORMAT: 1A
HOST: https://vuttr-api.herokuapp.com/api/v1
# VUTTR API
Uma API para a aplicação VUTTR (Very Useful Tools to Remember), para gerenciar ferramentas,
onde um usuário logado pode listar/criar/editar/excluir ferramentas.
# Group Autenticação
## Autenticação [/auth/login]
### /auth/login
Autenticar um usuário
### Autenticar um usuário [POST /auth/login]
+ Parameters
+ email: `mariajoana@hotmail.com` (string, required) - Email do usuário
+ password: `cec7052fcd3` (string, required) - Senha do usuário
+ Request returns an authentication token
**POST** `/api/v1/auth/login`
+ Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
+ Body
{
"email": "rodolfo@tremblay.com",
"password": "QxGnZ0Ax"
}
+ Response 200
+ Headers
Content-Type: application/json; charset=utf-8
+ Body
{
"auth_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjo2MTcsImV4cGlyYXRpb24iOjE1NTg3NTc5MzV9.HRcC8-zUJ5gxSI8lnoyWaUtP4iJNMrJ59QtBDZYERHw"
}
+ Request returns invalid credentials message
**POST** `/api/v1/auth/login`
+ Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
+ Body
{
"email": "eleasedach@nolan.net",
"password": "0sSi4eYa0pOcR"
}
+ Response 401
+ Headers
Content-Type: application/json; charset=utf-8
+ Body
{
"message": "Invalid credentials"
}
# Group Ferramentas
## Ferramentas [/tools]
### /tools
Endpoint para criar/editar/apagar/listar/filtrar ferramentas
### Listar todas ferramentas cadastradas [GET /api/v1/tools]
+ Request returns tool collections
**GET** `/api/v1/tools`
+ Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
+ Response 200
+ Headers
Content-Type: application/json; charset=utf-8
+ Body
[
{
"id": 6244,
"title": "nostrum",
"link": "http://andersonmarvin.net/milo",
"description": "Atque veniam iste. Iste ipsum rerum. Quas optio tempora. Modi asperiores sint. Dolor voluptas ipsam.",
"tags": [
"organizing",
"planning",
"webapps",
"organization",
"domain"
],
"created_by": "619"
},
{
"id": 6245,
"title": "vero",
"link": "http://hoeger.biz/tristan_hackett",
"description": "Sed esse vero. Est porro et. Aperiam nulla est. Illum omnis ipsum. Atque consequatur rerum. Possimu.",
"tags": [
"webapps",
"developer",
"calendar",
"organizing",
"planning"
],
"created_by": "619"
},
{
"id": 6246,
"title": "est",
"link": "http://steuber.org/brandi.ledner",
"description": "Distinctio et nostrum. Eum deleniti tempora. Qui quam unde. Itaque placeat eius. Enim perferendis o.",
"tags": [
"webapps",
"planning",
"https",
"domain",
"organization"
],
"created_by": "619"
},
{
"id": 6247,
"title": "nihil",
"link": "http://leannonleannon.net/trisha_bednar",
"description": "Cum eos quia. Non officia qui. Totam consectetur tenetur. Officiis velit voluptatum. Ea incidunt ea.",
"tags": [
"planning",
"webapps",
"writing",
"node",
"developer"
],
"created_by": "619"
},
{
"id": 6248,
"title": "quidem",
"link": "http://medhurstbeier.io/art_marks",
"description": "Perferendis iusto dicta. Velit mollitia aut. Veniam animi aut. Quae libero minima. Et dolore iste. .",
"tags": [
"webapps",
"node",
"developer",
"https",
"domain"
],
"created_by": "619"
},
{
"id": 6249,
"title": "nisi",
"link": "http://hopperohan.biz/stephany_stracke",
"description": "Eius molestiae voluptas. Incidunt natus ut. Nihil deleniti quisquam. Quod nesciunt autem. Adipisci .",
"tags": [
"organization",
"node",
"https",
"proxy",
"webapps"
],
"created_by": "619"
},
{
"id": 6250,
"title": "placeat",
"link": "http://nicolas.co/criy_hoppe",
"description": "Quaerat occaecati harum. Laudantium quam distinctio. Soluta et ducimus. Neque et molestias. Sunt ve.",
"tags": [
"organization",
"proxy",
"https",
"developer",
"calendar"
],
"created_by": "619"
},
{
"id": 6251,
"title": "quasi",
"link": "http://champlinruecker.name/ali.terry",
"description": "Aut id excepturi. Ad cumque placeat. Excepturi ut consequatur. Soluta nihil vitae. Accusamus ration.",
"tags": [
"collaboration",
"organization",
"developer",
"webapps",
"calendar"
],
"created_by": "619"
},
{
"id": 6252,
"title": "recusandae",
"link": "http://jaskolskiherman.info/hellen",
"description": "Consectetur sunt ratione. Fugiat itaque qui. Numquam distinctio voluptatem. Ut sapiente eius. Non e.",
"tags": [
"https",
"proxy",
"developer",
"organizing",
"planning"
],
"created_by": "619"
},
{
"id": 6253,
"title": "dolorem",
"link": "http://armstrongcorwin.biz/meghan",
"description": "Qui suscipit error. Modi fugiat nihil. Est quia quia. Eum alias aperiam. Est perspiciatis tenetur. .",
"tags": [
"writing",
"webapps",
"proxy",
"organizing",
"calendar"
],
"created_by": "619"
}
]
### Listar uma ferramenta por ID [GET /tools/{id}]
+ Parameters
+ id: `10` (number, required) - Id da ferramenta
+ Request returns a tool collection
**GET** `/api/v1/tools/6254`
+ Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
+ Response 200
+ Headers
Content-Type: application/json; charset=utf-8
+ Body
{
"id": 6254,
"title": "molestiae",
"link": "http://keeling.io/troy.quitzon",
"description": "Quo porro nisi. Deserunt qui delectus. Quia reiciendis et. Sed illum laboriosam. In nobis eum. Repe.",
"tags": [
"collaboration",
"https",
"organizing",
"calendar",
"proxy"
],
"created_by": "620"
}
+ Request return a not found message
**GET** `/api/v1/tools/120`
+ Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
+ Response 404
+ Headers
Content-Type: application/json; charset=utf-8
+ Body
{
"message": "Couldn't find Tool with 'id'=120"
}
### Filtrar ferramentas utilizando uma busca por tag [GET /tools/?tag={tag}]
+ Parameters
+ tags: `node` (string, required) - Tag a ser filtrada
+ Request returns tools tagged with this tag
**GET** `/api/v1/tools?tag=node`
+ Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
+ Response 200
+ Headers
Content-Type: application/json; charset=utf-8
+ Body
[
{
"id": 6274,
"title": "eligendi",
"link": "http://heller.co/tanner_crona",
"description": "Aperiam molestiae rerum. Quidem similique aut. Minima perferendis magni. Suscipit labore esse. Quia.",
"tags": [
"proxy",
"webapps",
"calendar",
"node",
"developer"
],
"created_by": "622"
},
{
"id": 6280,
"title": "quos",
"link": "http://kulas.org/trey.beatty",
"description": "Corporis earum id. Officiis nemo provident. Voluptatibus ut aut. Repellat dolorum omnis. Sapiente u.",
"tags": [
"webapps",
"https",
"calendar",
"node",
"developer"
],
"created_by": "622"
},
{
"id": 6281,
"title": "sunt",
"link": "http://mrazabbott.io/olin",
"description": "Placeat voluptatum natus. Quia maxime nisi. A consequatur est. Dolor rerum nihil. Voluptatem conseq.",
"tags": [
"proxy",
"planning",
"webapps",
"organization",
"node"
],
"created_by": "622"
},
{
"id": 6282,
"title": "doloribus",
"link": "http://bednar.co/pablo",
"description": "Voluptate molestiae asperiores. Hic quia vel. Omnis qui distinctio. Molestiae quo sit. Dolores et i.",
"tags": [
"organization",
"webapps",
"node",
"writing",
"https"
],
"created_by": "622"
}
]
+ Request body response is empty
**GET** `/api/v1/tools?tag=bla`
+ Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
+ Response 404
+ Headers
Content-Type: application/json; charset=utf-8
+ Body
### Cadastrar uma nova ferramenta [POST /tools]
+ Parameters
+ title: `quod` (string, required) - Nome da ferramenta
+ link: `http%3A%2F%2Fsauer.name%2Fangela` (string, required) - Link da ferramenta
+ description: `Modi+sit+consequatur` (string, required) - Descrição da ferramenta
+ tags: `%5B%22node%22%2C+%22web%22%5D` (array, required) - Tags da ferramenta
+ Request creates a new tool collection
**POST** `/api/v1/tools`
+ Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
+ Body
{
"title": "notebook",
"link": "https://example.com",
"description": "Local app manager. Start apps within your browser, developer tool with local\n .localhost domain and https out of the box.",
"tags": [
"electronic",
"organizing",
"computer",
"developer",
"node"
],
"created_by": "624"
}
+ Response 201
+ Headers
Content-Type: application/json; charset=utf-8
+ Body
{
"id": 6304,
"title": "notebook",
"link": "https://example.com",
"description": "Local app manager. Start apps within your browser, developer tool with local\n .localhost domain and https out of the box.",
"tags": [
"electronic",
"organizing",
"computer",
"developer",
"node"
],
"created_by": "624"
}
+ Request returns a validation failure message
**POST** `/api/v1/tools`
+ Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
+ Body
{
"title": "notebook",
"created_by": "625"
}
+ Response 422
+ Headers
Content-Type: application/json; charset=utf-8
+ Body
{
"message": "Validation failed: Link can't be blank, Description can't be blank, Tags can't be blank"
}
### Editar uma ferramenta [PUT /tools/{id}]
+ Parameters
+ title: `quod` (string, required) - Nome da ferramenta
+ link: `http%3A%2F%2Fsauer.name%2Fangela` (string, required) - Link da ferramenta
+ description: `Modi+sit+consequatur` (string, required) - Descrição da ferramenta
+ tags: `%5B%22node%22%2C+%22web%22%5D` (array, required) - Tags da ferramenta
+ Request updates the requested tool collection
**PUT** `/api/v1/tools/6315`
+ Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
+ Body
{
"title": "Lorem"
}
+ Response 204
+ Request return a not found message
**PUT** `/api/v1/tools/120`
+ Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
+ Body
"{\"title\":\"Lorem\"}"
+ Response 404
+ Headers
Content-Type: application/json; charset=utf-8
+ Body
{
"message": "Couldn't find Tool with 'id'=120"
}
### Apagar uma ferramenta por ID [DELETE /tools/{id}]
+ Parameters
+ id: `10` (number, required) - Id da ferramenta
+ Request deletes the requested tool collection
**DELETE** `/api/v1/tools/6335`
+ Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
+ Response 404
+ Headers
Content-Type: application/json; charset=utf-8
+ Body
{
"message": "Couldn't find Tool with 'id'=6335"
}
+ Request return a not found message
**DELETE** `/api/v1/tools/120`
+ Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
+ Response 404
+ Headers
Content-Type: application/json; charset=utf-8
+ Body
{
"message": "Couldn't find Tool with 'id'=120"
}
# Group Usuários
## Usuários [/signup]
### /signup
Endpoint para cadastrar um novo usuário
### Cadastrar um novo usuário [POST /signup]
+ Parameters
+ name: `Maria+Joana` (string, required) - Nome do usuário
+ email: `mariajoana%40hotmail.com` (string, required) - Email do usuário
+ password: `cec7052fcd3` (string, required) - Senha do usuário
+ password_confirmation: `cec7052fcd3` (string, required) - Confirmação da senha do usuário
+ Request creates a new user
**POST** `/api/v1/signup`
+ Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
+ Body
{
"name": "chanel",
"email": "chanel@barton.net",
"password": "LtO4WqWlZa",
"password_confirmation": "LtO4WqWlZa"
}
+ Response 201
+ Headers
Content-Type: application/json; charset=utf-8
+ Body
{
"message": "Account created successfully",
"auth_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjo2MzAsImV4cGlyYXRpb24iOjE1NTg3NTc5MzV9.D7z8O4m_EpR9MvX3WoRhZ74u6Lr6CiVcvwFuw6mIoRc"
}
+ Request returns an authentication token
**POST** `/api/v1/signup`
+ Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
+ Body
{
"name": "geri.becker",
"email": "geribecker@bogan.org",
"password": "C7Zi1d2m",
"password_confirmation": "C7Zi1d2m"
}
+ Response 201
+ Headers
Content-Type: application/json; charset=utf-8
+ Body
{
"message": "Account created successfully",
"auth_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjo2MzEsImV4cGlyYXRpb24iOjE1NTg3NTc5MzV9.Do2iWkYGWyuevCkzsySWu6GnwrZlLlEejWIKmgRUfnA"
}
+ Request does not create a new user
**POST** `/api/v1/signup`
+ Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
+ Response 422
+ Headers
Content-Type: application/json; charset=utf-8
+ Body
{
"message": "Validation failed: Password can't be blank, Name can't be blank, Email can't be blank, Password digest can't be blank"
}
+ Request returns failure message
**POST** `/api/v1/signup`
+ Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/json
+ Response 422
+ Headers
Content-Type: application/json; charset=utf-8
+ Body
{
"message": "Validation failed: Password can't be blank, Name can't be blank, Email can't be blank, Password digest can't be blank"
}