Last active
August 17, 2019 15:27
-
-
Save joaomantovani/bd144495b10d12f7a928dc74af91512e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
openapi: 3.0.0 | |
info: | |
version: '1.0.0' | |
title: MarketPlace - Grupo 02 | |
description: | | |
# | |
Essa API tem como objetivo atender os requisitos de contexto de um Marketplace | |
## | |
Loja virtual com milhares de produtos e milhões de consumidores | |
Muitas empresas externas procuram para fazer parcerias de negócio | |
Tipos de parcerias que já foram discutidas | |
- Comparadores de preços | |
- Apps de alertas de desconto | |
- Redes de afiliados para revenda de produtos em promoção | |
- Sites especializados em listas de presentes | |
- Sites de tendências de consumo interessados nas listas dos artigos mais vendidos em diversas categorias | |
## | |
Grupo 02: | |
- Bruno Sepulveda de Matos | |
- Danilo de Sousa | |
- João Pedro Mantovani | |
- Priscila Ribeiro | |
- Wellington Lorenço | |
tags: | |
- name: Produto | |
description: Informações relacionadas aos produtos do Marketplace | |
- name: Categoria | |
description: Informações relacionadas as categorias de produtos do Marketplace | |
- name: Fornecedor | |
description: Informações relacionadas as pessoas (jurídicas/físicas) que vendem produtos no Marketplace | |
servers: | |
- url: 'https://api.grupodois.unicamp/v1/' | |
paths: | |
/presentes: | |
post: | |
tags: | |
- Presente | |
summary: Cria uma nova lista de presentes | |
consumes: | |
- application/json | |
produces: | |
- application/json | |
parameters: | |
- in: body | |
name: body | |
description: Pet object that needs to be added to the store | |
required: true | |
schema: | |
$ref: '#/components/schemas/Presente' | |
security: | |
- store_auth: | |
- 'write:presentes' | |
- 'read:presentes' | |
"/presentes/{id}": | |
get: | |
tags: | |
- Presente | |
summary: Pega todos os produtos de uma lista de presentes | |
responses: | |
'200': | |
description: Lista retornada com sucesso | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/Presente' | |
example: | |
[ | |
{ | |
id: dQw4w9WgXcQ, | |
nome: Smart Tv Led 32 Hd Toshiba L2800 Wi-fi Conversor Digital, | |
descricao: Tenha a melhor experiência em entretenimento com a Smart TV L2800 Toshiba., | |
preco: 975.99, | |
promocao: { | |
porcentagem: 10, | |
expira: 6229489484878, | |
quantidade_itens: 7 | |
} | |
}, | |
{ | |
id: dQw4w9WgXcQ, | |
nome: Smart Tv Led 64 Sony, | |
descricao: Ideal para seu PS4, | |
preco: 1497.51 | |
} | |
] | |
'404': | |
description: Lista não encontrada | |
'500': | |
description: Erro interno | |
put: | |
tags: | |
- Presente | |
summary: Atualiza uma lista de presentes | |
parameters: | |
- $ref: '#/components/parameters/token' | |
responses: | |
'200': | |
description: OK | |
'403': | |
description: Você não tem permissão para inativar a lista | |
'404': | |
description: A lista com esse ID não foi encontrada | |
'500': | |
description: Erro interno | |
security: | |
- store_auth: | |
- 'write:presentes' | |
- 'read:presentes' | |
delete: | |
tags: | |
- Presente | |
summary: Inativa uma lista de presentes | |
parameters: | |
- $ref: '#/components/parameters/token' | |
responses: | |
'200': | |
description: OK | |
'403': | |
description: Você não tem permissão para inativar a lista | |
'404': | |
description: A lista com esse ID não foi encontrada | |
'500': | |
description: Erro interno | |
'/produtos/': | |
get: | |
tags: | |
- Produto | |
summary: Obtém uma coleção de produtos | |
description: Retorna todos os produtos com os parametros especificados | |
parameters: | |
- $ref: '#/components/parameters/name' | |
- $ref: '#/components/parameters/categoria' | |
- $ref: '#/components/parameters/promocao' | |
- $ref: '#/components/parameters/limite' | |
- $ref: '#/components/parameters/offset' | |
- $ref: '#/components/parameters/sort' | |
- $ref: '#/components/parameters/order' | |
security: | |
- main_auth: | |
- 'read:users' | |
- api_key: [] | |
responses: | |
'200': | |
description: Success | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/Produto' | |
example: | |
'/produtos/{id}': | |
get: | |
tags: | |
- Produto | |
summary: Obtém um produto específico | |
parameters: | |
- $ref: '#/components/parameters/name' | |
- $ref: '#/components/parameters/categoria' | |
- $ref: '#/components/parameters/promocao' | |
security: | |
- main_auth: | |
- 'read:users' | |
- api_key: [] | |
responses: | |
'200': | |
description: Success | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/Produto' | |
example: | |
id: dQw4w9WgXcQ | |
nome: Smart Tv Led 32 Hd Toshiba L2800 Wi-fi Conversor Digital | |
descricao: Tenha a melhor experiência em entretenimento com a Smart TV L2800 Toshiba. | |
preco: 975.99 | |
promocao: { | |
porcentagem: 10, | |
expira: 6229489484878, | |
quantidade_itens: 7 | |
} | |
'/categorias/': | |
get: | |
tags: | |
- Categoria | |
summary: Obtém uma coleção de categoras | |
parameters: | |
- name: nome | |
in: query | |
description: Nome do produto. Não precisa ser exato, irá trazer resultados aproximados em relação ao nome | |
schema: | |
type: string | |
- name: limite | |
in: query | |
description: Quantidade de produtos que serão retornados pela API. | |
schema: | |
type: integer | |
minimum: 1 | |
maximum: 100 | |
default: 50 | |
- name: offset | |
in: query | |
description: Quantidade de produtos retornados por página. | |
schema: | |
type: integer | |
minimum: 1 | |
maximum: 100 | |
default: 20 | |
security: | |
- main_auth: | |
- 'read:users' | |
- api_key: [] | |
responses: | |
'200': | |
description: Success | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/Produto' | |
example: | |
id: dQw4w9WgXcQ | |
nome: Smart Tv Led 32 Hd Toshiba L2800 Wi-fi Conversor Digital | |
descricao: Tenha a melhor experiência em entretenimento com a Smart TV L2800 Toshiba. | |
preco: 975.99 | |
promocao: { | |
porcentagem: 10, | |
expira: 6229489484878, | |
quantidade_itens: 7 | |
} | |
'/categorias/{slug}': | |
get: | |
tags: | |
- Categoria | |
summary: Obtém uma categoria especifica a partir da slug | |
parameters: | |
- $ref: '#/components/parameters/limite' | |
- $ref: '#/components/parameters/offset' | |
- $ref: '#/components/parameters/sort' | |
- $ref: '#/components/parameters/order' | |
security: | |
- main_auth: | |
- 'read:users' | |
- api_key: [] | |
responses: | |
'200': | |
description: Success | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/Categoria' | |
example: | |
{ | |
id: dQw4w9WgXcQ, | |
nome: Brinquedos, | |
slug: brinquedos | |
} | |
'/categorias/{slug}/produtos': | |
get: | |
tags: | |
- Categoria | |
summary: Obtém todos os produtos de uma categoria especifica | |
description: | | |
Some description of the operation. | |
You can use `markdown` here | |
parameters: | |
- $ref: '#/components/parameters/limite' | |
- $ref: '#/components/parameters/offset' | |
- $ref: '#/components/parameters/sort' | |
- $ref: '#/components/parameters/order' | |
security: | |
- main_auth: | |
- 'read:users' | |
- api_key: [] | |
responses: | |
'200': | |
description: Success | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/Produto' | |
example: | |
televisores: [ | |
{ | |
id: dQw4w9WgXcQ, | |
nome: Smart Tv Led 32 Hd Toshiba L2800 Wi-fi Conversor Digital, | |
descricao: Tenha a melhor experiência em entretenimento com a Smart TV L2800 Toshiba., | |
preco: 975.99, | |
promocao: { | |
porcentagem: 10, | |
expira: 6229489484878, | |
quantidade_itens: 7 | |
} | |
}, | |
{ | |
id: dQw4w9WgXcQ, | |
nome: Smart Tv Led 64 Sony, | |
descricao: Ideal para seu PS4, | |
preco: 1497.51 | |
}, | |
] | |
'/fornecedores/': | |
get: | |
tags: | |
- Fornecedor | |
summary: Obtém uma coleção com todos os fornecedores | |
parameters: | |
- $ref: '#/components/parameters/limite' | |
- $ref: '#/components/parameters/offset' | |
- $ref: '#/components/parameters/sortByName' | |
- $ref: '#/components/parameters/order' | |
security: | |
- main_auth: | |
- 'read:users' | |
- api_key: [] | |
responses: | |
'200': | |
description: Success | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/Fornecedores' | |
example: | |
[ | |
{ | |
id: dQw4w9WgXcQ, | |
nome: Alcatel, | |
localizacao: Itatiba, SP, | |
tipo: juridica, | |
slug: alcatel | |
}, | |
{ | |
id: dQw4w9WgXcQ, | |
nome: Roberto Teixeira da Silva, | |
localizacao: Campinas, SP, | |
tipo: fisica, | |
slug: roberto-teixeira-da-silva | |
} | |
] | |
'/forncedores/{slug}': | |
get: | |
tags: | |
- Fornecedor | |
summary: Obtém uma coleção de produtos | |
description: | | |
Some description of the operation. | |
You can use `markdown` here. | |
security: | |
- main_auth: | |
- 'read:users' | |
- api_key: [] | |
responses: | |
'200': | |
description: Success | |
content: | |
application/json: | |
schema: | |
$ref: '#/components/schemas/Fornecedores' | |
example: | |
{ | |
id: dQw4w9WgXcQ, | |
nome: Alcatel, | |
localizacao: Itatiba, SP, | |
tipo: juridica, | |
slug: alcatel | |
} | |
'500': | |
description: ERro interno | |
components: | |
schemas: | |
Produto: | |
type: object | |
properties: | |
id: | |
description: O ID do produto | |
type: string | |
example: dQw4w9WgXcQ | |
nome: | |
description: Nome do produto | |
type: string | |
example: Televisão | |
descricao: | |
description: Detalhes do produto | |
type: string | |
example: Televisão 32 polegadas com HDMI | |
preco: | |
description: Preço do produto em reais | |
type: number | |
example: 957.85 | |
categoria: | |
description: Categoria relacionada ao produto | |
type: string | |
example: Televisores | |
quantidade: | |
description: Quantidade de produtos no estoque | |
type: integer | |
example: 12 | |
fornecedor: | |
description: Empresa que está oferecendo o produto | |
type: string | |
example: Sony | |
Categoria: | |
properties: | |
id: | |
description: O ID da categoria | |
type: string | |
example: dQw4w9WgXcQ | |
nome: | |
description: Nome do produto | |
type: string | |
example: Televisores de alta definição | |
slug: | |
description: Título do produto em formato para uso em urls, sem caracteres especiais ou espaços | |
type: string | |
example: televisores-de-alta-definicao | |
Fornecedores: | |
properties: | |
id: | |
description: O ID do fornecedor | |
type: string | |
example: dQw4w9WgXcQ | |
nome: | |
description: Nome do fornecedor | |
type: string | |
example: Televisores de alta definição | |
localizacao: | |
description: Cidade e estado onde o vendedor se localiza | |
type: string | |
example: Campinas, São Paulo | |
tipo: | |
description: Informa se é uma pessoa física ou jurídica | |
type: string | |
example: Televisores de alta definição | |
slug: | |
description: Título do produto em formato para uso em urls, sem caracteres especiais ou espaços | |
type: string | |
example: televisores-de-alta-definicao | |
Presente: | |
type: object | |
required: | |
- name | |
properties: | |
id: | |
type: string | |
nome: | |
type: string | |
example: Lista do Joel | |
status: | |
type: boolean | |
description: Indica se a a lista ainda está válida | |
enum: | |
- true | |
- false | |
produtos: | |
type: object | |
description: Array com IDs de produtos da lista | |
headers: | |
ExpiresAfter: | |
description: date in UTC when token expires | |
schema: | |
type: string | |
format: date-time | |
securitySchemes: | |
main_auth: | |
type: oauth2 | |
flows: | |
implicit: | |
authorizationUrl: 'http://example.com/api/oauth/dialog' | |
scopes: | |
'read:users': read users info | |
'write:users': modify or remove users | |
api_key: | |
type: apiKey | |
in: header | |
name: api_key | |
basic_auth: | |
type: http | |
scheme: basic | |
parameters: | |
token: | |
name: token | |
in: query | |
description: Informe o token para validar a requisição | |
required: true | |
schema: | |
type: string | |
name: | |
name: nome | |
in: query | |
description: Nome do produto. <br> Não precisa ser exato, a API irá trazer resultados aproximados em relação ao nome | |
required: true | |
schema: | |
type: string | |
categoria: | |
name: categoria | |
in: query | |
description: Informe o nome de uma cateogria específica <br> Slug do nome da categoria | |
schema: | |
type: string | |
promocao: | |
name: promocao | |
in: query | |
description: Passe o parametro como true para retornar somente os produtos em promoção <br> none = somente produtos que não estão na promoção mixed = Produtos que estão em promoção e não estão only = somente produtos que estão na promoção | |
schema: | |
type: string | |
default: mixed | |
enum: | |
- none | |
- both | |
- only | |
limite: | |
name: limite | |
in: query | |
description: Quantidade de produtos que serão retornados pela API. | |
schema: | |
type: integer | |
minimum: 1 | |
maximum: 100 | |
default: 50 | |
offset: | |
name: offset | |
in: query | |
description: Quantidade de produtos retornados por página. | |
schema: | |
type: integer | |
minimum: 1 | |
maximum: 100 | |
default: 20 | |
sort: | |
name: sort | |
in: query | |
description: Critério de filtros de produtos. <br> Diversas opções para priorizar quais produtos irão | |
aparecer primeiro na resposta | |
schema: | |
type: string | |
default: mais-populares | |
enum: | |
- mais-populares | |
- novidades | |
- menor-preco | |
- maior-preco | |
sortByName: | |
name: sortByName | |
in: query | |
description: Filtra os produtos por nome | |
schema: | |
type: boolean | |
default: false | |
enum: | |
- true | |
- false | |
order: | |
name: order | |
in: query | |
description: Critério de ordenação de produtos <br> asc = ascendente <br> desc = descendente | |
schema: | |
type: string | |
default: asc | |
enum: | |
- asc | |
- desc |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment