{ "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.", "parameters": [ { "name": "id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Pagamento encontrado", "content": { "application/json": { "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", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateAuthorizationPayload" } } } }, "responses": { "201": { "description": "Solicitação criada e registrada", "content": { "application/json": { "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", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentReversalRequest" } } } }, "responses": { "200": { "description": "Pagamento estornado com sucesso", "content": { "application/json": { "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", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FinishPaymentRequest" } } } }, "responses": { "200": { "description": "Pagamento finalizado com sucesso", "content": { "application/json": { "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.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PaymentStatus" } } } } }, "500": { "description": "Erro interno" } } } } }, "tags": [] }