From 7c17869b0685554a8a49744ff957b87fee70989e Mon Sep 17 00:00:00 2001 From: tkinaba Date: Wed, 3 Dec 2025 08:39:17 -0300 Subject: [PATCH] =?UTF-8?q?batman:=20documenta=C3=A7=C3=A3o=20inicial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- swagger.json | 331 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 331 insertions(+) create mode 100644 swagger.json diff --git a/swagger.json b/swagger.json new file mode 100644 index 0000000..7cff430 --- /dev/null +++ b/swagger.json @@ -0,0 +1,331 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Integração - RecicleBem x Socin", + "description": "Coleção de endpoints para integração RecicleBem x Socin.", + "version": "1.0.0" + }, + "components": { + "securitySchemes": { + "ApiKeyAuth": { + "type": "apiKey", + "in": "header", + "name": "X-WS-TOKEN-AUTH", + "description": "Chave de API para integração" + } + }, + "schemas": { + "PaymentStatus": { + "type": "object", + "required": [ + "total", + "transaction_id", + "status" + ], + "properties": { + "total": { + "type": "number", + "description": "O valor monetário total.", + "example": 25.4 + }, + "transaction_id": { + "type": "string", + "description": "UUID único da autorização" + }, + "status": { + "type": "string", + "description": "O status da autorização", + "enum": [ + "authorized", + "insufficient-funds", + "rejected", + "pending", + "cancelled" + ] + } + } + }, + "CreateAuthorizationPayload": { + "type": "object", + "description": "Representa uma solicitação de pagamento via RecicleBem.", + "required": [ + "id", + "payment_total", + "items_quantity", + "cupom_fiscal", + "empresa", + "pdv" + ], + "properties": { + "id": { + "type": "string", + "description": "Identificador da venda gerado pelo PDV. Caso haja múltiplos pagamentos via RecicleBem na venda, utilize o mesmo ID." + }, + "payment_total": { + "type": "number", + "format": "float", + "description": "Valor total do pagamento com o saldo do RecicleBem", + "example": 50.25 + }, + "items_quantity": { + "type": "integer", + "description": "Quantidade de itens na compra", + "example": 3 + }, + "cupom_fiscal": { + "type": "string", + "description": "Número do cupom fiscal", + "example": "000123" + }, + "empresa": { + "type": "integer", + "description": "Local de compra - ID da tabela de empresa da C5", + "example": 224 + }, + "pdv": { + "type": "integer", + "description": "ID do PDV", + "example": 5 + } + } + }, + "CreateAuthorizationResponse": { + "type": "object", + "description": "Um objeto com o ID da solicitação registrada.", + "required": [ + "transaction_id", + "qr_code" + ], + "properties": { + "transaction_id": { + "type": "string", + "description": "UUID da transação registrada." + }, + "qr_code": { + "type": "string", + "description": "Representação em QRCode do UUID da transação." + } + } + }, + "FinishPaymentRequest": { + "type": "object", + "description": "Representa uma solicitação de finalização de pagamento via RecicleBem.", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "Identificador da venda gerado pelo PDV. Caso haja múltiplos pagamentos via RecicleBem na venda, utilize o mesmo ID." + } + } + }, + "PaymentReversalRequest": { + "type": "object", + "description": "Representa uma solicitação de estorno de pagamento via RecicleBem.", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "Identificador da venda gerado pelo PDV. Caso haja múltiplos pagamentos via RecicleBem na venda, todos serão estornados." + } + } + }, + "PaymentReversal": { + "type": "object", + "description": "Representa um pagamento estornado", + "required": [ + "req_uuid", + "uuid_estorno", + "valor" + ], + "properties": { + "req_uuid": { + "type": "string", + "description": "ID da transação" + }, + "uuid_estorno": { + "type": "string", + "description": "ID do movimento de estorno" + }, + "valor": { + "type": "number", + "description": "Valor do estorno" + } + } + } + } + }, + "servers": [ + { + "url": "http://vitruvioteste.barceloscia.com.br:9090", + "description": "Ambiente de testes" + }, + { + "url": "http://davinti.barceloscia.com.br:9090/", + "description": "Ambiente de produção" + } + ], + "security": [ + { + "ApiKeyAuth": [] + } + ], + "paths": { + "/rest/api/integration/tokenauth/rb_socin_autorizacao": { + "get": { + "summary": "Consulta o status das autorizações para determinado pagamento.\n", + "description": "Aceita o ID do pagamento e retorna as autorizações.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "name": "id", + "in": "query", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "Pagamento encontrado", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentStatus" + } + } + }, + "400": { + "description": "ID não encontrado nos query parameters" + }, + "404": { + "description": "Pagamento não encontrado" + }, + "500": { + "description": "Erro interno" + } + } + }, + "post": { + "summary": "Registra uma nova autorização no pagamento especificado.", + "description": "Aceita os dados do pagamento e retorna o ID da transação.\n", + "produces": [ + "application/json" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateAuthorizationPayload" + } + } + } + }, + "responses": { + "201": { + "description": "Solicitação criada e registrada", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CreateAuthorizationResponse" + } + } + }, + "400": { + "description": "Corpo da requisição inválido" + }, + "500": { + "description": "Erro interno" + } + } + } + }, + "/rest/api/integration/tokenauth/rb_socin_estorno": { + "post": { + "summary": "Estorna o pagamento especificado.", + "description": "Cancela todos os movimentos atrelados à este pagamento.\n", + "produces": [ + "application/json" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaymentReversalRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Pagamento estornado com sucesso", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentReversal" + } + } + }, + "400": { + "description": "Corpo da requisição inválido" + }, + "500": { + "description": "Erro interno" + } + } + } + }, + "/rest/api/integration/tokenauth/rb_socin_finalizar": { + "post": { + "summary": "Finaliza o pagamento especificado.", + "description": "Efetiva as baixas de saldo autorizadas e cancela as pendentes, retornando todas as autorizações registradas neste pagamento.\n", + "produces": [ + "application/json" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FinishPaymentRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Pagamento finalizado com sucesso", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentStatus" + } + } + }, + "400": { + "description": "Corpo da requisição inválido" + }, + "409": { + "description": "Tentativa de finalização não sucedida.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentStatus" + } + } + }, + "500": { + "description": "Erro interno" + } + } + } + } + }, + "tags": [] +} \ No newline at end of file