Sign inSign up

openbankingbrasil/metrics-validator

By openbankingbrasil

•Updated over 5 years ago

Validador de payload da API de Métricas do Open Banking Brasil (API Admin)

Image
1

50K+

openbankingbrasil/metrics-validator repository overview

⁠Validador API de Métricas (API Admin) - Open Banking Brasil

⁠Descrição

A convenção do Open Banking especificou para a implementação a API Admin⁠ que traz informações sobre disponibilidade das demais APIs do ecossistema Open Banking na instituição participante. Este validador verifica se o payload enviado para esta aplicação é um payload válido com a documentação especificada para esta API, garantindo assim que as instituições participantes possam validar a resposta de suas APIs.

⁠Setup

⁠1. Baixe a imagem
$ docker pull openbankingbrasil/metrics-validator:latest
⁠2. Inicie a imagem
$ docker run -dp 3005:3005 openbankingbrasil/metrics-validator

⁠Como usar

⁠POST http://localhost:3005/validator/metrics⁠

Payload de entrada descrito em https://openbanking-brasil.github.io/areadesenvolvedor/#obtem-as-metricas-de-disponibilidade-das-apis⁠

O payload de entrada será validado, propriedade por propriedade, verificando se estão em conformidade com a documentação. Deve-se incluir a resposta da API de Métricas (API Admin) dentro do atributo "resource".

Exemplo de payload:

{
  "data": {
    "requestTime": "teste",
    "errors": {
      "currentDay": 10,
      "previousDays": [
        270,
        298,
        303,
        244,
        274,
        249,
        253
      ]
    },
    "peakTps": {
      "currentDay": 10,
      "previousDays": [
        2,
        2,
        2,
        2,
        2,
        2,
        2
      ]
    },
    "averageTps": {
      "currentDay": 10,
      "previousDays": [
        1,
        1,
        1,
        1,
        1,
        1,
        1
      ]
    },
    "rejections": {
      "currentDay": 10,
      "previousDays": [
        137,
        149,
        115,
        125,
        152,
        141,
        148
      ]
    },
    "availability": {
      "uptime": {
        "generalUptimeRate": "0.99",
        "endpoints": [
          {
            "url": "https://api.demo.obconnect.io/br/open-banking/products-services/v1",
            "uptimeRate": "0.99"
          },
          {
            "url": "https://api.demo.obconnect.io/br/open-banking/discovery/v1",
            "uptimeRate": "0.99"
          },
          {
            "url": "https://api.demo.obconnect.io/br/open-banking/channels/v1",
            "uptimeRate": "0.99"
          }
        ]
      },
      "downtime": {
        "generalDowntime": 153,
        "scheduledOutage": 0,
        "endpoints": [
          {
            "url": "https://api.demo.obconnect.io/br/open-banking/products-services/v1",
            "partialDowntime": 67
          },
          {
            "url": "https://api.demo.obconnect.io/br/open-banking/discovery/v1",
            "partialDowntime": 7
          },
          {
            "url": "https://api.demo.obconnect.io/br/open-banking/channels/v1",
            "partialDowntime": 79
          }
        ]
      }
    },
    "invocations": {
      "unauthenticated": {
        "currentDay": 384,
        "previousDays": [
          453,
          416,
          415,
          375,
          433,
          452,
          407
        ]
      },
      "unattended": {
        "currentDay": 84,
        "previousDays": [
          78,
          71,
          81,
          56,
          81,
          72,
          79
        ]
      },
      "highPriority": {
        "currentDay": 205,
        "previousDays": [
          208,
          221,
          195,
          180,
          210,
          189,
          216
        ]
      },
      "mediumPriority": {
        "currentDay": 713,
        "previousDays": [
          635,
          762,
          670,
          655,
          722,
          637,
          662
        ]
      }
    },
    "averageResponse": {
      "unauthenticated": {
        "currentDay": 1027,
        "previousDays": [
          1024,
          1004,
          970,
          1012,
          995,
          1021,
          981
        ]
      },
      "unattended": {
        "currentDay": 919,
        "previousDays": [
          972,
          1103,
          1018,
          941,
          985,
          911,
          1016
        ]
      },
      "highPriority": {
        "currentDay": 1053,
        "previousDays": [
          1012,
          963,
          981,
          1029,
          1019,
          974,
          1001
        ]
      },
      "mediumPriority": {
        "currentDay": 985,
        "previousDays": [
          983,
          1011,
          1029,
          1013,
          999,
          1004,
          994
        ]
      }
    }
  }
}

Em caso do json não apresentar problema o retorno será:

{
    "data": [],
    "status": 200
}

Em caso de problemas no json, será apresentado um array com os erros encontrados, por exemplo:

{
  "data": [
    "instance.resource.data.invocations.unattended.previousDays does not meet minimum length of 7",
    "instance.resource.data.invocations.mediumPriority.currentDay is not of a type(s) integer",
    "instance.resource.data.averageResponse.unattended.previousDays[4] is not of a type(s) integer"
  ],
  "status": 200
}

No caso instance.resource.data.invocations.unattended.previousDays does not meet minimum length of 7, pela documentação, o array de "previousDays" deve ter pelo menos 7 posições.

No caso instance.resource.data.invocations.mediumPriority.currentDay is not of a type(s) integer, a propriedade "currentDay" deve ser um inteiro.

E no terceiro exemplo instance.resource.data.averageResponse.unattended.previousDays[4] is not of a type(s) integer, a posição 4 do array de "previousDay" deve ser um inteiro.

Tag summary

Content type

Image

Digest

Size

336.9 MB

Last updated

over 5 years ago

docker pull openbankingbrasil/metrics-validator