Skip to content

Instantly share code, notes, and snippets.

@joaomantovani
Last active August 17, 2019 15:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joaomantovani/bd144495b10d12f7a928dc74af91512e to your computer and use it in GitHub Desktop.
Save joaomantovani/bd144495b10d12f7a928dc74af91512e to your computer and use it in GitHub Desktop.
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