saveinmed/backend/docs/swagger.yaml
Tiago Yamamoto 42f72f5f43 docs: adiciona documentação completa do projeto SaveInMed
- Cria README.md na raiz com visão global e diagrama de arquitetura
- Adiciona/atualiza README.md em todos os componentes:
  - backend (API Go)
  - backoffice (NestJS)
  - marketplace (React/Vite)
  - saveinmed-bff (Python/FastAPI)
  - saveinmed-frontend (Next.js)
  - website (Fresh/Deno)
- Atualiza .gitignore em todos os componentes com regras abrangentes
- Cria .gitignore na raiz do projeto
- Renomeia pastas para melhor organização:
  - backend-go → backend
  - backend-nest → backoffice
  - marketplace-front → marketplace
- Documenta arquitetura, tecnologias, setup e fluxo de desenvolvimento
2025-12-17 17:07:30 -03:00

315 lines
6.7 KiB
YAML

basePath: /
definitions:
domain.Company:
properties:
cnpj:
type: string
corporate_name:
type: string
created_at:
type: string
id:
type: string
role:
description: pharmacy, distributor, admin
type: string
sanitary_license:
type: string
updated_at:
type: string
type: object
domain.Order:
properties:
buyer_id:
type: string
created_at:
type: string
id:
type: string
items:
items:
$ref: '#/definitions/domain.OrderItem'
type: array
seller_id:
type: string
status:
$ref: '#/definitions/domain.OrderStatus'
total_cents:
type: integer
updated_at:
type: string
type: object
domain.OrderItem:
properties:
batch:
type: string
expires_at:
type: string
id:
type: string
order_id:
type: string
product_id:
type: string
quantity:
type: integer
unit_cents:
type: integer
type: object
domain.OrderStatus:
enum:
- Pendente
- Pago
- Faturado
- Entregue
type: string
x-enum-varnames:
- OrderStatusPending
- OrderStatusPaid
- OrderStatusInvoiced
- OrderStatusDelivered
domain.PaymentPreference:
properties:
commission_pct:
type: number
gateway:
type: string
marketplace_fee:
type: integer
order_id:
type: string
payment_url:
type: string
seller_receivable:
type: integer
type: object
domain.Product:
properties:
batch:
type: string
created_at:
type: string
description:
type: string
expires_at:
type: string
id:
type: string
name:
type: string
price_cents:
type: integer
seller_id:
type: string
stock:
type: integer
updated_at:
type: string
type: object
handler.createOrderRequest:
properties:
buyer_id:
type: string
items:
items:
$ref: '#/definitions/domain.OrderItem'
type: array
seller_id:
type: string
type: object
handler.registerCompanyRequest:
properties:
cnpj:
type: string
corporate_name:
type: string
role:
type: string
sanitary_license:
type: string
type: object
handler.registerProductRequest:
properties:
batch:
type: string
description:
type: string
expires_at:
type: string
name:
type: string
price_cents:
type: integer
seller_id:
type: string
stock:
type: integer
type: object
handler.updateStatusRequest:
properties:
status:
type: string
type: object
info:
contact:
email: devops@saveinmed.com
name: Engenharia SaveInMed
description: API REST B2B para marketplace farmacêutico com split de pagamento e
rastreabilidade.
title: SaveInMed Performance Core API
version: "1.0"
paths:
/api/companies:
get:
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.Company'
type: array
summary: Lista empresas
tags:
- Empresas
post:
consumes:
- application/json
description: Cadastra farmácia, distribuidora ou administrador com CNPJ e licença
sanitária.
parameters:
- description: Dados da empresa
in: body
name: company
required: true
schema:
$ref: '#/definitions/handler.registerCompanyRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/domain.Company'
summary: Registro de empresas
tags:
- Empresas
/api/orders:
post:
consumes:
- application/json
parameters:
- description: Pedido
in: body
name: order
required: true
schema:
$ref: '#/definitions/handler.createOrderRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/domain.Order'
summary: Criação de pedido com split
tags:
- Pedidos
/api/orders/{id}:
get:
parameters:
- description: Order ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Order'
summary: Consulta pedido
tags:
- Pedidos
/api/orders/{id}/payment:
post:
parameters:
- description: Order ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/domain.PaymentPreference'
summary: Cria preferência de pagamento Mercado Pago com split nativo
tags:
- Pagamentos
/api/orders/{id}/status:
patch:
consumes:
- application/json
parameters:
- description: Order ID
in: path
name: id
required: true
type: string
- description: Novo status
in: body
name: status
required: true
schema:
$ref: '#/definitions/handler.updateStatusRequest'
produces:
- application/json
responses:
"204":
description: ""
summary: Atualiza status do pedido
tags:
- Pedidos
/api/products:
get:
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.Product'
type: array
summary: Lista catálogo com lote e validade
tags:
- Produtos
post:
consumes:
- application/json
parameters:
- description: Produto
in: body
name: product
required: true
schema:
$ref: '#/definitions/handler.registerProductRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/domain.Product'
summary: Cadastro de produto com rastreabilidade de lote
tags:
- Produtos
schemes:
- http
swagger: "2.0"