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