nelsonmfinda/vuttr-api

View on GitHub
apiary.apib

Summary

Maintainability
Test Coverage
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"
            }