You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

348 lines
9.7 KiB

{
"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",
"total"
],
"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": 10
},
"total": {
"type": "number",
"format": "float",
"description": "Valor total da venda",
"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": []
}