| @ -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": [] | |||||
| } | |||||