Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: MadeiraMadeira Marketplace Mensageria API
version: v1
summary: Seller-facing marketplace API for products, categories, stock, price, shipping tables, orders, financial entries and seller-buyer messaging.
description: 'Introdução
Bem-vindo ao Marketplace MadeiraMadeira!
Estamos entusiasmados em tê-lo como parte do nosso ecossistema. Nosso objetivo é construir uma parceria sólida e impulsionar o crescimento mútuo. Juntos, alcançaremos novos patamares e proporcionaremos o melhor valor para nossos clientes.
Agora que sua integração inicial foi concluída, você está habilitado a utilizar nossa API pública para enviar e atualizar informações essenciais, como:
Produtos: Cadastro, edição e detalhamento de seu catálogo.
Frete: Consulta para tabela de fretes e integração.
Estoque: Controle de disponibilidade e reposição em tempo real.
Status de Pedidos: Atualização contínua do ciclo de vida dos pedidos.
Estamos à disposição para ajudá-lo com quaisquer dúvidas ou suporte técnico necessário. Vamos construir juntos uma experiência de sucesso!
Use nossa documentação de referência de API para criar soluções personalizadas adequadas ao seu negócio.
Autenticação
Todas as requisições para recursos da API devem conter o token de autorização presente no header da request.
Devem ser enviados da seguinte forma:
Content-Type: application/json
TOKENMM: {{TOKEN}}
O token de autenticação é vinculado ao cadastro do Seller no Marketplace MadeiraMadeira. Para obter o token de acesso é necessário que o cadastro na plataforma esteja realizado e os Termos e Condições estejam assinados.
O token estará disponível no Portal Marketplace, menu Administração > Integração.
Códigos de erros
400 Erro no JSON enviado (Verificar estrutura e enviar novamente)
401 Ausência de um dos Tokens no header ou token não existe
403 Token revogado ou inválido
404 Desculpe não atendemos sua região. (Quando o Seller não atende a região cotada para frete).
405 Método de requisição, inválido. (Quando um endpoint não aceita o método em questão)
422 Produto com este EAN ou SKU já cadastrado para ser processado
500 Erro interno de servidor, solicitar suporte para a equipe da Madeira Madeira
Integração de frete
Com o Marketplace MadeiraMadeira o Seller terá 2 opções de calculo de frete.
Integração de frete (Cálculo de frete através da plataforma do Seller)
Tabelas de frete na plataforma da MadeiraMadeira
A MadeiraMadeira poderá fazer o cálculo de frete para o Seller, utilizando as tabelas que você incluir em nossa plataforma.
O Seller poderá trabalhar apenas com uma ou várias tabelas de frete.
O Seller poderá cadastrar várias tabelas de frete informado no produto qual tabela que deseja utilizar no cálculo de frete.
Você poderá cadastrar e atualizar as tabelas de frete em qualquer momento através de nossa API.
É obrigatório ter uma tabela de "Contingência" para a loja do Seller ser liberada.
Integração de Frete
O Seller poderá utilizar sua plataforma para fazer o calculo de frete. A MadeiraMadeira exige um nível de disponibilidade de 85%, isso poderá ser consultado no Dashboard do Seller. O tempo máximo de resposta para o frete será de 1500 ms.
Ambientes
Produção: https://marketplace.madeiramadeira.com.br
Sandbox: https://marketplace-sandbox.madeiramadeira.com.br
Substituir {{WMENV}} pelo Ambiente desejado
Limites de Requisições
Para garantir a estabilidade e o desempenho de nossa API pública, implementamos mecanismos de validação que monitoram o consumo de nossos endpoints, essas medidas são projetadas para evitar o uso indevido e excessivo, promovendo uma experiência equilibrada para todos os usuários.
Em casos extremos, quando padrões de uso abusivo são detectados, podemos bloquear temporariamente as requisições por um curto período, essa ação é necessária para proteger a integridade da API e preservar o acesso de outros usuários
Existem limites de registros a serem retornados e/ou enviados por requisições GET/PUT/POST/DELETE'
contact:
name: MadeiraMadeira Marketplace
url: https://www.madeiramadeira.com.br/marketplace
x-derived-from: Public Postman collection "Marketplace MadeiraMadeira" published by MadeiraMadeira (documenter.getpostman.com/view/3341659/RztmqU19)
servers:
- url: https://marketplace.madeiramadeira.com.br
description: Producao (production)
- url: https://marketplace-sandbox.madeiramadeira.com.br
description: Sandbox
security:
- TOKENMM: []
tags:
- name: Mensageria
paths:
/v1/mensageria/auth/generate-token:
post:
operationId: gerarToken
summary: Gerar token
tags:
- Mensageria
x-postman-folder: Mensageria / Autenticação
description: 'Gera um token JWT através do Keycloak usando o MMTOKEN (token do portal marketplace).
Autenticação: MMTOKEN (Header)
Fluxo:
Envia o MMTOKEN no header
Sistema chama Millennium Falcon para gerar JWT via Keycloak
Retorna o token JWT que será utilizado nas próximas requisições
Response:
access_token: Token JWT a ser usado nas requisições subsequentes
token_type: Tipo do token (geralmente "Bearer")
expires_in: Tempo de expiração do token em segundos
Variáveis de Ambiente:
{{base_url}}: URL base da API (ex: https://marketplace.madeiramadeira.com.br)
{{mm_token}}: Token do portal marketplace (MMTOKEN)'
responses:
'200':
description: Generate Token - Success
content:
application/json:
example:
data:
access_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
token_type: Bearer
expires_in: 3600
'401':
description: Generate Token - Unauthorized
content:
application/json:
example:
error: Token não encontrado no contexto
'400':
description: Erro no JSON enviado (verificar estrutura e enviar novamente)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Token revogado ou invalido
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Erro interno de servidor
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- TOKENMM: []
/v1/mensageria/auth/revoke-token:
post:
operationId: revogarToken
summary: Revogar token
tags:
- Mensageria
x-postman-folder: Mensageria / Autenticação
description: 'Revoga um token JWT.
Autenticação: MMTOKEN (Header)
Payload:
token (string, obrigatório): O token JWT a ser revogado
Response:
Retorna status 200 se a revogação foi bem-sucedida
Exemplo de Uso:
Quando o usuário faz logout
Para invalidar tokens antigos ou de segurança
Após operações sensíveis que requerem re-autenticação'
requestBody:
required: true
content:
application/json:
schema:
type: object
example:
token: '{{token_mensageria}}'
responses:
'200':
description: Revoke Token - Success
content:
application/json:
example:
message: Token revogado com sucesso
'400':
description: Erro no JSON enviado (verificar estrutura e enviar novamente)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Ausencia de um dos tokens no header ou token nao existe
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Token revogado ou invalido
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Erro interno de servidor
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- TOKENMM: []
/v1/mensageria/session:
post:
operationId: criarSessao
summary: Criar sessão
tags:
- Mensageria
x-postman-folder: Mensageria / Sessões
description: "Cria uma nova sessão de atendimento.\n\nAutenticação: Bearer Token\n\nPayload:\n\norder_id (string, obrigatório): ID único do pedido\n\nreason_id (integer, obrigatório): ID externo do motivo da sessão\n\nsubreason_id (integer, obrigatório quando o reason_id possui subreason)\n\ndescription (string, opcional): Descrição detalhada do problema\n\nRegras de Negócio:\n\nNão é permitido ter mais de uma sessão aberta por pedido\n\nSe já existe uma sessão aberta para este pedido, ela será retornada\n\nA sessão será criada com status \"1 - Aguardando sua resposta\"\n\nA sessão só pode ser aberta usando um dos seguintes reason_id e subreason_id\n\n206 - Insucesso de entrega\n\n410 - Aguardando retirada\n\n411 - Endereço errado\n\n412 - Cliente ausente\n\n208 - Confirmar dados entrega\n\nExemplo de response:\n\n{\n \"data\": {\n \"session_id\": 905,\n \"order_seller\": \"9346321\",\n \"order\": \"72021270\",\n \"order_hash\": \"69668d66ff2789b9ea1a3792\",\n \"child_order_hash\": \"69668d66ff2789b9ea1a3791\",\n \"order_date\": \"2026-01-13 12:22:38\",\n \"customer_name\": \"Vinicius Da Rocha Gomes\",\n \"status\": {\n \"id\": 1,\n \"description\": \"Aguardando Resposta\",\n \"slug\": \"awaiting_answer_seller\"\n },\n \"created_at\": \"2026-01-14 14:08:13\",\n \"expired_date\": \"\",\n \"reason\": {\n \"id\": 410,\n \"external_id\": 22,\n \"description\": \"Cancelamento de pedido/produto antes da entrega\",\n \"type\": \"Produto\",\n \"category\": \"Cancelar ou tirar dúvidas sobre cancelamento\",\n \"is_central_atendimento\": true,\n \"descricao_central_atendimento\": \"Cancelar produto que não foi entregue\",\n \"has_sub_reasons\": false\n },\n \"subreason_id\": 186,\n \"version\": 2,\n \"csat_id\": \"\"\n },\n \"new_session\": false\n}\n\ndata: Objeto da sessão criada\n\nsession_id: ID da sessão gerada\n\norder: Número do pedido\n\nstatus: Status inicial da sessão\n\nreason: Motivo da sessão\n\ncreated_at: Data de criação\n\nnew_session: Boolean indicando se é uma nova sessão ou se já existia\n\nStatus HTTP:\n\n201: Sessão criada ou já existia\n\n400: Erro de validação\n\n401: Token inválido\n\n500: Erro interno do servidor"
requestBody:
required: true
content:
application/json:
schema:
type: object
example:
order_id: '202412001'
reason_id: 101
description: Descrição detalhada do problema
responses:
'200':
description: Success
'400':
description: Erro no JSON enviado (verificar estrutura e enviar novamente)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Ausencia de um dos tokens no header ou token nao existe
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Token revogado ou invalido
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Erro interno de servidor
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- BearerJWT: []
/v1/mensageria/seller/historic:
get:
operationId: historicoDeSessoes
summary: Histórico de sessões
tags:
- Mensageria
x-postman-folder: Mensageria / Sessões
description: "Retorna o histórico de sessões de um vendedor específico.\n\nAutenticação: Bearer Token\n\nQuery Parameters:\n\npage (integer, opcional): Página para paginação\n\nlimit (integer, opcional): Limite de registros\n\nstatus (integer, opcional): Filtrar por status:\n\n1 - Aguardando sua resposta\n\n2 - Aguardando o cliente\n\n3 - Finalizado\n\n4 - Mediado\n\n5 - Mediação finalizada\n\n6 - Atendimento com pendência\n\nResponse:\n\nArray de sessões com mesmo formato de \"Get Historic Sessions\"\n\nPaginação incluída\n\nExemplo de response:\n\n{\n \"data\": [\n {\n \"session_id\": 1122,\n \"order_seller\": \"9346817\",\n \"order\": \"72022580\",\n \"order_hash\": \"698dea60ef4d942b87396d08\",\n \"child_order_hash\": \"698dea60ef4d942b87396d07\",\n \"order_date\": \"2026-02-12 08:57:59\",\n \"customer_name\": \"TESTE QA AZION\",\n \"status\": {\n \"id\": 1,\n \"description\": \"Aguardando Resposta\",\n \"slug\": \"awaiting_answer_seller\"\n },\n \"created_at\": \"2026-02-12 16:38:21\",\n \"expired_date\": \"2026-02-19 16:38:30\",\n \"reason\": {\n \"id\": 590,\n \"external_id\": 211,\n \"description\": \"Tirar dúvidas sobre cancelamento\",\n \"type\": \"Produto\",\n \"category\": \"Cancelar ou tirar dúvidas sobre cancelamento\",\n \"is_central_atendimento\": true,\n \"descricao_central_atendimento\": \"Tirar dúvidas sobre cancelamento\",\n \"has_sub_reasons\": false\n },\n \"version\": 2,\n \"csat_id\": \"\"\n }\n ],\n \"pagination\": {\n \"total_count\": 519,\n \"count\": 1,\n \"page\": 1,\n \"lines\": 1\n }\n}\n\nDiferença do endpoint de Orders:\n\nEste é filtrado pelo vendedor autenticado\n\nRetorna apenas sessões do seu portfólio\n\nMais eficiente para dashboards do seller\n\nStatus HTTP:\n\n200: Histórico obtido com sucesso\n\n401: Token inválido"
parameters:
- name: page
in: query
required: false
schema:
type: string
example: '1'
- name: limit
in: query
required: false
schema:
type: string
example: '20'
- name: status
in: query
required: false
schema:
type: string
example: '2'
responses:
'200':
description: Success
'400':
description: Erro no JSON enviado (verificar estrutura e enviar novamente)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Ausencia de um dos tokens no header ou token nao existe
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Token revogado ou invalido
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Erro interno de servidor
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- BearerJWT: []
/v1/mensageria/session/123456:
get:
operationId: sessaoPorId
summary: Sessão por ID
tags:
- Mensageria
x-postman-folder: Mensageria / Sessões
description: "GET /session/{session_id}\n\nRetorna os detalhes de uma sessão específica pelo ID.\n\nAutenticação\n\nBearer Token\n\nAuthorization: Bearer {token}\n\nParâmetros de Rota\n\nParâmetro\nTipo\nObrigatório\nDescrição\n\nsession_id\ninteger\nSim\nID único da sessão\n\nExemplo:\n\nGET /session/123456\n\nEstrutura da Resposta\n\nCampo\nTipo\nDescrição\n\nid\ninteger\nID único da sessão\n\nsource\nstring\nOrigem da sessão\n\norder_id\nstring\nNúmero do pedido no marketplace\n\norder_hash\nstring\nHash do pedido\n\nchild_order_hash\nstring\nHash do subpedido\n\nreason_id\ninteger\nID do motivo da sessão\n\norder_seller\nstring\nNúmero do pedido do seller\n\nstatus_id\ninteger\nID do status da sessão\n\nseller_id\ninteger\nID interno do seller\n\nbuyer_id\ninteger\nID interno do comprador\n\nlast_contact\ninteger\nTimestamp do último contato (Unix em milissegundos)\n\nlast_contact_role\nstring\nPapel do último contato (buyer, seller, attendant)\n\norder_date\nstring (ISO 8601)\nData do pedido\n\ncsat_id\nstring\nID do CSAT associado\n\nexpired_date\nstring\nData de expiração da sessão\n\nversion\ninteger\nVersão da sessão\n\ncreated_at\nstring (ISO 8601)\nData de criação\n\nupdated_at\nstring (ISO 8601)\nData da última atualização\n\nObjetos Aninhados\n\nStatus\n\nInformações do status atual da sessão.\n\nCampo\nTipo\nDescrição\n\nid\ninteger\nID do status\n\ndescription\nstring\nDescrição do status\n\nslug\nstring\nIdentificador do status\n\ncreated_at\nstring\nData de criação\n\nupdated_at\nstring\nData de atualização\n\nSeller\n\nInformações do vendedor.\n\nCampo\nTipo\nDescrição\n\nid\ninteger\nID interno\n\nexternal_id\nstring\nID externo do seller\n\nname\nstring\nNome do seller\n\nemail\nstring\nEmail do seller\n\nrole\nstring\nRole do usuário\n\ndocument\nstring\nDocumento do seller\n\nphone\nstring\nnull\n\napi_version\ninteger\nVersão da API\n\ncreated_at\nstring\nData de criação\n\nupdated_at\nstring\nData de atualização\n\nBuyer\n\nInformações do comprador.\n\nCampo\nTipo\nDescrição\n\nid\ninteger\nID interno\n\nexternal_id\nstring\nID externo\n\nname\nstring\nNome\n\nemail\nstring\nEmail\n\nrole\nstring\nRole do usuário\n\nphone\nstring\nnull\n\ncreated_at\nstring\nData de criação\n\nupdated_at\nstring\nData de atualização\n\nAttendant\n\nInformações do atendente da sessão.\n\nCampo\nTipo\nDescrição\n\nid\ninteger\nID interno\n\nexternal_id\nstring\nID externo\n\nname\nstring\nNome\n\nemail\nstring\nEmail\n\nrole\nstring\nRole\n\nphone\nstring\nnull\n\ncreated_at\nstring\nData de criação\n\nupdated_at\nstring\nData de atualização\n\nReason\n\nMotivo da abertura da sessão.\n\nCampo\nTipo\nDescrição\n\nid\ninteger\nID interno do motivo\n\nexternal_id\ninteger\nID externo do motivo\n\ndescription\nstring\nDescrição\n\nis_firstcall\nboolean\nIndica se é first call\n\nis_central_atendimento\nboolean\nIndica se é central de atendimento\n\nvisible_seller\nboolean\nVisível para seller\n\nvisible_customer\nboolean\nVisível para cliente\n\ncreated_at\nstring\nData de criação\n\nupdated_at\nstring\nData de atualização\n\nExemplo de Resposta\n\n{\n \"id\": 123456,\n \"source\": \"app\",\n \"order_id\": \"56827504\",\n \"order_hash\": \"67ae0fb0b73bc1d31f0f8eec\",\n \"child_order_hash\": \"67ae0fb0b73bc1d31f0f8eeb\",\n \"reason_id\": 567,\n \"order_seller\": \"8328522\",\n \"status_id\": 3,\n \"seller_id\": 8,\n \"buyer_id\": 23362,\n \"last_contact\": 1769716344961,\n \"last_contact_role\": \"seller\",\n \"order_date\": \"2025-02-13T09:28:58-03:00\",\n \"csat_id\": \"327808\",\n \"expired_date\": \"\",\n \"version\": 2,\n \"created_at\": \"2026-01-29T16:52:24-03:00\",\n \"updated_at\": \"2026-02-02T13:55:27-03:00\",\n \"Status\": {},\n \"Seller\": {},\n \"Buyer\": {},\n \"Attendant\": {},\n \"Reason\": {}\n}"
responses:
'200':
description: Get Session - Success
content:
application/json:
example:
data:
session_id: 123456
order: '202412001'
order_seller: MM123456
order_date: '2024-01-15T10:30:00Z'
customer_name: João Silva
status:
id: 2
description: Awaiting Answer - Seller
reason:
id: 1
external_id: 101
description: Dúvidas sobre Entrega
expired_date: '2024-01-20T10:30:00Z'
created_at: '2024-01-15T10:30:00Z'
'400':
description: Erro no JSON enviado (verificar estrutura e enviar novamente)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Ausencia de um dos tokens no header ou token nao existe
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Token revogado ou invalido
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Erro interno de servidor
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- BearerJWT: []
/v1/mensageria/session/awaiting_answer_seller/count:
get:
operationId: msgAguardandoResposta
summary: Msg aguardando resposta
tags:
- Mensageria
x-postman-folder: Mensageria / Sessões
description: "Retorna a quantidade de mensagens aguardando resposta do vendedor.\n\nAutenticação: Bearer Token\n\nQuery Parameters: Nenhum\n\nResponse:\n\ncount: Número inteiro de sessões com status \"Awaiting Answer - Seller\"\n\nExemplo de Resposta:\n\n{\n \"count\": 42\n}\n\nUso Comum:\n\nExibir badge de notificação no painel\n\nAlertar sobre sessões pendentes de resposta\n\nMonitorar workload do vendedor\n\nStatus HTTP:\n\n200: Contagem obtida com sucesso\n\n401: Token inválido"
responses:
'200':
description: Success
'400':
description: Erro no JSON enviado (verificar estrutura e enviar novamente)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Ausencia de um dos tokens no header ou token nao existe
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Token revogado ou invalido
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Erro interno de servidor
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- BearerJWT: []
/v1/mensageria/message:
post:
operationId: enviarMensagem
summary: Enviar mensagem
tags:
- Mensageria
x-postman-folder: Mensageria / Mensagens
description: "Envia uma mensagem em uma sessão existente.\n\nAutenticação: Bearer Token\n\nHeaders:\nMMTOKEN: Token MM fornecido no portal marketplace\n\nPayload:\n\nsession_id (integer, obrigatório): ID da sessão\n\ntext (string, obrigatório): Conteúdo da mensagem (máximo 5000 caracteres)\n\ntype (string, obrigatório): Tipo da mensagem\n\ntext: Mensagem de texto\n\nimage: Imagem (JPEG, PNG até 5mb)\n\nreceived_at (ISO 8601 datetime, opcional): Data/hora da mensagem\n\nRegras de Negócio:\n\nA sessão deve existir e estar aberta\n\nNão é permitido enviar mensagens em sessões finalizadas ou em mediação\n\nMensagens são armazenadas no banco de dados\n\nMáximo 5000 caracteres por mensagem\n\nResponse:\n\nmessage: Indicação de que a mensagem foi enviada com sucesso.\n\nExemplo de Payload:\n\n{\n \"session_id\": 789012,\n \"text\": \"Olá! Qual é o status do meu pedido?\",\n \"type\": \"text\",\n \"received_at\": \"2024-01-15T10:35:00Z\"\n}\n\nExemplo de Response\n\n{\n \"message\": \"Mensagem encaminhada com sucesso\"\n}\n\nStatus HTTP:\n\n200: Mensagem enviada com sucesso\n\n400: Validação falhou\n\n404: Sessão não encontrada\n\n409: Sessão não permite mais mensagens\n\n401: Token inválido\n\n500: Erro ao enviar para Lambda"
requestBody:
required: true
content:
application/json:
schema:
type: object
example:
session_id: 123456
text: Sua mensagem aqui
type: text
received_at: 1787706288
responses:
'200':
description: Success
'400':
description: Erro no JSON enviado (verificar estrutura e enviar novamente)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Ausencia de um dos tokens no header ou token nao existe
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Token revogado ou invalido
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Erro interno de servidor
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- BearerJWT: []
/v1/mensageria/orders/historic:
get:
operationId: mensagensPorOrderId
summary: Mensagens por order_id
tags:
- Mensageria
x-postman-folder: Mensageria / Mensagens
description: "GET /orders/historic\n\nRetorna o histórico de sessões (conversas) associadas a um ou mais pedidos.\n\nAs sessões são agrupadas por pedido e data de criação.\n\nAutenticação\n\nBearer Token\n\nAuthorization: Bearer {token}\n\nHeader adicional obrigatório:\n\nMMTOKEN: {marketplace-token}\n\nEndpoint\n\nGET /api/v1/orders/historic\n\nExemplo:\n\nGET /api/v1/orders/historic?orders=56827504\n\nQuery Parameters\n\nParâmetro\nTipo\nObrigatório\nDescrição\n\norders\nstring\nSim\nLista de IDs de pedidos separados por vírgula\n\nExemplo:\n\norders=56827504,56827505\n\nEstrutura da Resposta\n\nA resposta é um objeto onde cada chave representa um order_id.\n\nCada pedido contém:\n\norder_id\n └ sessions\n └ data\n └ array de sessões\n\nCampos da Sessão\n\nCampo\nTipo\nDescrição\n\nsession_id\ninteger\nID da sessão\n\norder_seller\nstring\nNúmero do pedido do seller\n\norder\nstring\nNúmero do pedido no marketplace\n\norder_hash\nstring\nHash do pedido\n\nchild_order_hash\nstring\nHash do subpedido\n\norder_date\nstring\nData do pedido\n\ncreated_at\nstring\nData de criação da sessão\n\nexpired_date\nstring\nData de expiração da sessão\n\nversion\ninteger\nVersão da sessão\n\ncsat_id\nstring\nID do CSAT associado\n\nObjeto Status\n\nCampo\nTipo\nDescrição\n\nid\ninteger\nID do status\n\ndescription\nstring\nDescrição do status\n\nslug\nstring\nIdentificador do status\n\nObjeto Reason\n\nCampo\nTipo\nDescrição\n\nid\ninteger\nID interno do motivo\n\nexternal_id\ninteger\nID externo\n\ndescription\nstring\nDescrição do motivo\n\ntype\nstring\nTipo do motivo\n\ncategory\nstring\nCategoria do motivo\n\nis_central_atendimento\nboolean\nIndica se é da central de atendimento\n\ndescricao_central_atendimento\nstring\nDescrição da central\n\nhas_sub_reasons\nboolean\nIndica se possui submotivos\n\nObjeto Message\n\nLista de mensagens da sessão.\n\nCampo\nTipo\nDescrição\n\nfrom\nstring\nNome do remetente\n\norigin\nstring\nOrigem da mensagem\n\nreceived_at\ninteger\nTimestamp em milissegundos\n\ntext\nstring\nConteúdo da mensagem\n\ntype\nstring\nTipo da mensagem\n\nrole\nstring\nPapel do usuário (buyer, seller, attendant)\n\ncreated_at\nstring\nData de criação da mensagem\n\nExemplo de Resposta\n\n{\n \"56827504\": {\n \"sessions\": {\n \"2026-02-04\": [\n {\n \"session_id\": 1052,\n \"order_seller\": \"9346538\",\n \"order\": \"72021868\",\n \"order_hash\": \"69836e0005c985b0105cd804\",\n \"child_order_hash\": \"69836e0005c985b0105cd802\",\n \"order_date\": \"2026-02-04 10:04:30\",\n \"status\": {\n \"id\": 1,\n \"description\": \"Aguardando Resposta\",\n \"slug\": \"awaiting_answer_seller\"\n },\n \"created_at\": \"2026-02-04 15:52:49\",\n \"expired_date\": \"2026-02-06 17:28:48\",\n \"reason\": {\n \"id\": 587,\n \"external_id\": 205,\n \"description\": \"Informar Novo Prazo de Entrega\",\n \"type\": \"\",\n \"category\": \"Falar sobre entrega\",\n \"is_central_atendimento\": false,\n \"descricao_central_atendimento\": \"\",\n \"has_sub_reasons\": false\n },\n \"version\": 2,\n \"csat_id\": \"\",\n \"messages\": [\n {\n \"from\": \"Vinicius Da Rocha Gomes\",\n \"origin\": \"infobip\",\n \"received_at\": 1770236918586,\n \"text\": \"Mensagem de teste\",\n \"type\": \"text\",\n \"role\": \"buyer\",\n \"created_at\": \"2026-02-04 17:28:48\"\n }\n ]\n }\n ]\n }\n }\n}\n\nStatus HTTP\n\nCódigo\nDescrição\n\n200\nHistórico obtido com sucesso\n\n401\nToken inválido ou ausente\n\n400\nParâmetro orders inválido"
parameters:
- name: orders
in: query
required: false
schema:
type: string
example: '56827504'
responses:
'200':
description: Success
'400':
description: Erro no JSON enviado (verificar estrutura e enviar novamente)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Ausencia de um dos tokens no header ou token nao existe
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Token revogado ou invalido
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Erro interno de servidor
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- BearerJWT: []
/v1/mensageria/uploads:
post:
operationId: uploadDeArquivo
summary: Upload de arquivo
tags:
- Mensageria
x-postman-folder: Mensageria / Anexos
description: "Descrição\n\nRealiza o upload completo de um arquivo em uma única requisição. O fluxo interno executa: presign (solicitação de URL assinada), upload no S3 e confirmação. Ideal para envio direto de arquivos sem etapas manuais.\n\nParâmetros obrigatórios\n\nfile (form-data): arquivo binário a ser enviado.\n\nAuthorization (header): Bearer token JWT.\n\nParâmetros opcionais (form-data)\n\norder_id: identificador do pedido. Se omitido, usa \"unknown\".\n\nroot_path: caminho raiz no bucket S3. Se omitido, usa \"mensageria-public-api\".\n\nExemplo de payload (form-data)\n\nKey\nType\nValue\n\nfile\nfile\n(seu arquivo .jpg/.png)\n\norder_id\ntext\n72021270\n\nroot_path\ntext\nmensageria-public-api\n\nExemplo de response (201 Created)\n\n{\n \"data\": {\n \"file_url\": \"https://bucket.s3.region.amazonaws.com/path/to/file?X-Amz-...\",\n \"s3_key\": \"mensageria-public-api/2026/02/72021270/arquivo.jpg\",\n \"file_name\": \"arquivo.jpg\",\n \"file_size\": 102400,\n \"upload_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"created_at\": \"2026-03-09T12:00:00Z\"\n },\n \"message\": \"arquivo enviado com sucesso\"\n}\n\nExemplo de response de erro (400 Bad Request)\n\n{\n \"error\": \"arquivo não fornecido\",\n \"details\": \"http: no such file\"\n}"
responses:
'200':
description: Success
'400':
description: Erro no JSON enviado (verificar estrutura e enviar novamente)
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Ausencia de um dos tokens no header ou token nao existe
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Token revogado ou invalido
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Erro interno de servidor
content:
application/json:
schema:
$ref: '#/components/schemas/Er
# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/madeiramadeira/refs/heads/main/openapi/madeiramadeira-mensageria-api-openapi.yml