{"swaggerDoc":{"swagger":"2.0","info":{"version":"0.0.1","title":"TagChatter API","contact":{"email":"team@tagview.com.br"}},"host":"tagchatter.herokuapp.com","externalDocs":{"description":"Instruções","url":"https://github.com/tagview/tagchatter"},"schemes":["https","http"],"tags":[{"name":"user"}],"paths":{"/me":{"get":{"tags":["user"],"summary":"Retorna os dados do User autenticado","responses":{"200":{"description":"Operação bem sucedida","schema":{"$ref":"#/definitions/User"}}}}},"/users":{"get":{"tags":["user"],"summary":"Retorna uma lista com todos os Users","responses":{"200":{"description":"Operação bem sucedida","schema":{"type":"array","items":{"$ref":"#/definitions/User"}}}}}},"/messages":{"get":{"tags":["message"],"summary":"Retorna uma lista com todas as 200 últimas Messages, em ordem crescente de data de criação","responses":{"200":{"description":"Operação bem sucedida","schema":{"type":"array","items":{"$ref":"#/definitions/Message"}}}}},"post":{"tags":["message"],"summary":"Envia uma Message","description":"## ATENÇÃO: Esse request falha *intencionalmente* em 25% das vezes com um erro inesperado (status code 500). Utilize o parâmetro `stable` na query string para desabilitar isso.","parameters":[{"name":"stable","in":"query","type":"boolean","default":false,"description":"Envie \"true\" para desabilitar os erros aleatórios. Idealmente esse parâmetro **não** deve ser usado na versão final da sua implementação."},{"name":"body","in":"body","schema":{"type":"object","properties":{"message":{"type":"string","description":"A mensagem a ser enviada"},"author_id":{"type":"string","description":"O ID do User autor da mensagem"}},"example":{"message":"Hello World!","author_id":"us3r"},"required":["message","author_id"]},"required":true}],"responses":{"200":{"description":"Operação bem sucedida","schema":{"$ref":"#/definitions/Message"}},"400":{"$ref":"#/responses/MissingPropertyError"},"404":{"$ref":"#/responses/UserNotFoundError"},"500":{"$ref":"#/responses/InternalError"}}}},"/messages/{messageId}/parrot":{"put":{"tags":["message","parrot"],"summary":"Marca uma Message como parrot","parameters":[{"name":"messageId","description":"ID da Message","in":"path","required":true,"type":"string"}],"responses":{"200":{"description":"Operação bem sucedida","schema":{"$ref":"#/definitions/Message"}},"404":{"$ref":"#/responses/MessageNotFoundError"}}}},"/messages/{messageId}/unparrot":{"put":{"tags":["message","parrot"],"summary":"Desmarca uma Message marcada como parrot","parameters":[{"name":"messageId","description":"ID da Message","in":"path","required":true,"type":"string"}],"responses":{"200":{"description":"Operação bem sucedida","schema":{"$ref":"#/definitions/Message"}},"404":{"$ref":"#/responses/MessageNotFoundError"}}}},"/messages/parrots-count":{"get":{"tags":["message","parrot"],"summary":"Retorna a contagem de mensagens marcadas como parrot","responses":{"200":{"description":"Operação bem sucedida","schema":{"type":"integer"}}}}}},"responses":{"InternalError":{"description":"Houve um erro inesperado","schema":{"example":{"type":"internal_error","error":"Unexpected error"},"allOf":[{"$ref":"#/definitions/ResponseError"},{"type":"object","properties":{"type":{"type":"string","enum":["internal_error"]}}}]}},"UserNotFoundError":{"description":"O User informado não existe","schema":{"example":{"type":"user_not_found","error":"User not found","user":"invalid_id"},"allOf":[{"$ref":"#/definitions/ResponseError"},{"type":"object","properties":{"type":{"type":"string","enum":["user_not_found"]},"user":{"description":"ID do User não encontrado","type":"string"}},"required":["user"]}]}},"MessageNotFoundError":{"description":"A Message informada não existe","schema":{"example":{"type":"message_not_found","error":"Message not found","message":"invalid_id"},"allOf":[{"$ref":"#/definitions/ResponseError"},{"type":"object","properties":{"type":{"type":"string","enum":["message_not_found"]},"message":{"description":"ID da Message não encontrada","type":"string"}},"required":["message"]}]}},"NotFoundError":{"description":"Não encontrado","schema":{"example":{"type":"user_not_found","error":"User not found"},"allOf":[{"$ref":"#/definitions/ResponseError"},{"type":"object","properties":{"type":{"type":"string","enum":["user_not_found","message_not_found"]}}}]}},"MissingPropertyError":{"description":"Um parâmetro requerido não foi informado","schema":{"example":{"type":"missing_property","error":"Property \"message\" is required","properties":["message"]},"allOf":[{"$ref":"#/definitions/ResponseError"},{"type":"object","properties":{"type":{"type":"string","enum":["missing_property"]},"properties":{"description":"Nome das propriedades que são requeridas mas estão ausentes","type":"array","items":{"type":"string"}}},"required":["properties"]}]}}},"definitions":{"User":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"avatar":{"type":"string","description":"O URL da foto do usuário"}},"required":["id","name","avatar"],"example":{"id":"us3r","name":"John Doe","avatar":"https://example.com/us3r.jpg"}},"Message":{"type":"object","properties":{"id":{"type":"string"},"content":{"type":"string"},"has_parrot":{"type":"boolean","description":"Se a mensagem foi marcada como parrot"},"created_at":{"type":"string","description":"A data de criação da mensagem no formato ISO 8601"},"author":{"$ref":"#/definitions/User"}},"required":["id","content","created_at","has_parrot","author"],"example":{"id":"m3ss4g3","content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit","created_at":"2017-10-17T12:09:07.997Z","has_parrot":false,"author":{"id":"us3r","name":"John Doe","avatar":"https://example.com/us3r.jpg"}}},"ResponseError":{"description":"Estrutura básica de todos os erros","type":"object","properties":{"type":{"description":"O identificador do erro","type":"string","enum":["user_not_found","message_not_found","missing_property","internal_error"]},"error":{"type":"string","description":"Uma descrição breve do erro"}},"required":["type","error"]}}},"customOptions":{}}