openapi: 3.0.0 info: title: APIs Open Data do Open Insurance Brasil description: As API's administrativas são recursos que podem ser consumidos apenas pelo diretório para avaliação e controle da qualidade dos serviços fornecidos pelas instituições version: 1.3.0 contact: url: 'https://www.gov.br/susep/' servers: - url: 'http://api.organizacao.com.br/open-insurance/admin/v1' tags: - name: "Metrics" paths: /metrics: get: tags: - Metrics summary: Obtém as métricas de disponibilidade das APIs description: "Obtém as métricas de disponibilidade das APIs" operationId: "getMetrics" parameters: - $ref: "#/components/parameters/cache-Control" - $ref: "#/components/parameters/content-Security-Policy" - $ref: "#/components/parameters/content-Type" - $ref: "#/components/parameters/strict-Transport-Security" - $ref: "#/components/parameters/x-Content-Type-Options" - $ref: "#/components/parameters/x-Frame-Options" - $ref: "#/components/parameters/page" - $ref: "#/components/parameters/pageSize" - in: query name: period schema: type: string enum: - CURRENT - ALL required: false description: | Período a ser consultado * `CURRENT` - Métricas do dia atual. * `ALL` - Métricas de todo o período disponível. responses: '200': description: Dados das métricas content: application/json: schema: $ref: '#/components/schemas/ResponseMetricsList' '204': $ref: '#/components/responses/NoContent' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '405': $ref: '#/components/responses/MethodNotAllowed' '406': $ref: '#/components/responses/NotAcceptable' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' '500': $ref: '#/components/responses/InternalServerError' components: schemas: ResponseMetricsList: type: object required: - data - links properties: data: type: object required: - requestTime - availability - invocations - averageResponse - averageTps - peakTps - errors - rejections properties: requestTime: type: string pattern: ^((?:(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2}(?:\.\d+)?))(Z|[\+-]\d{2}:\d{2})?)$ description: Data e hora que as métricas foram requisitadas. example: '2022-04-18T19:24:40.842Z' availability: $ref: '#/components/schemas/AvailabilityMetrics' invocations: $ref: '#/components/schemas/InvocationMetrics' averageResponse: $ref: '#/components/schemas/AverageMetrics' averageTps: $ref: '#/components/schemas/AverageTPSMetrics' peakTps: $ref: '#/components/schemas/PeakTPSMetrics' errors: $ref: '#/components/schemas/ErrorMetrics' rejections: $ref: '#/components/schemas/RejectionMetrics' links: $ref: '#/components/schemas/Links' meta: $ref: '#/components/schemas/Meta' AvailabilityMetrics: type: object required: - uptime - downtime properties: uptime: type: object required: - generalUptimeRate - endpoints properties: generalUptimeRate: type: string pattern: ^\d{1}\.\d{1,16}$ description: Taxa de disponibilidade (considerando todos os serviços ativos ao mesmo tempo). endpoints: $ref: '#/components/schemas/EndpointUptime' downtime: type: object required: - generalDowntime - scheduledOutage - endpoints properties: generalDowntime: type: integer description: Quantidade de segundos de downtime (considerando qualquer api em downtime). scheduledOutage: type: integer description: Quantidade de segundos de indisponibilidade agendada. endpoints: $ref: '#/components/schemas/EndpointDowntime' EndpointUptime: type: array items: type: object description: Tempos de uptime por endpoint. required: - url - uptimeRate properties: url: type: string description: URL do endpoint uptimeRate: type: string pattern: ^\d{1}\.\d{1,16}$ description: Taxa de disponibilidade do endpoint. EndpointDowntime: type: array items: type: object description: Tempos de downtime por endpoint. required: - url - partialDowntime properties: url: type: string description: URL do endpoint partialDowntime: type: integer description: Quantidade de segundos de indisponibilidade do endpoint. InvocationMetrics: type: object required: - unauthenticated - highPriority - mediumPriority - unattended properties: unauthenticated: type: object description: Número de chamadas não autenticadas. required: - currentDay - previousDays properties: currentDay: type: integer description: Número de chamadas não autenticadas no dia atual. previousDays: type: array description: Número de chamadas não autenticadas nos dias anteriores. O primeiro item do array é referente a ontem, e assim por diante. Devem ser retornados no máximo sete dias caso estejam disponíveis. items: type: integer highPriority: type: object description: Número de chamadas para o nível de alta prioridade. required: - currentDay - previousDays properties: currentDay: type: integer description: Número de chamadas no dia atual para o nível de alta prioridade. previousDays: type: array description: Número de chamadas nos dias anteriores para o nível de alta prioridade. O primeiro item do array é referente a ontem, e assim por diante. Devem ser retornados no máximo sete dias caso estejam disponíveis. items: type: integer mediumPriority: type: object description: Número de chamadas para o nível de média prioridade. required: - currentDay - previousDays properties: currentDay: type: integer description: Número de chamadas no dia atual para o nível de média prioridade. previousDays: type: array description: Número de chamadas nos dias anteriores para o nível de média prioridade. O primeiro item do array é referente a ontem, e assim por diante. Devem ser retornados no máximo sete dias caso estejam disponíveis. items: type: integer unattended: type: object description: Número de chamadas para o nível não acompanhado. required: - currentDay - previousDays properties: currentDay: description: Número de chamadas no dia atual para o nível não acompanhado. type: integer previousDays: type: array description: Número de chamadas nos dias anteriores para o nível não acompanhado. O primeiro item do array é referente a ontem, e assim por diante. Devem ser retornados no máximo sete dias caso estejam disponíveis. items: type: integer AverageMetrics: type: object required: - unauthenticated - highPriority - mediumPriority - unattended properties: unauthenticated: type: object description: Tempo médio de resposta para chamadas não autenticadas. required: - currentDay - previousDays properties: currentDay: type: integer description: Tempo médio de resposta em milissegundos para chamadas no dia atual. previousDays: type: array description: Tempo médio de resposta em milissegundos para chamadas nos dias anteriores. O primeiro item do array é referente a ontem, e assim por diante. Devem ser retornados no máximo sete dias caso estejam disponíveis. items: type: integer highPriority: type: object description: Tempo médio de resposta de chamadas para o nível de alta prioridade. required: - currentDay - previousDays properties: currentDay: type: integer description: Tempo médio de resposta em milissegundos para chamadas no dia atual. previousDays: type: array description: Tempo médio de resposta em milissegundos para chamadas nos dias anteriores. O primeiro item do array é referente a ontem, e assim por diante. Devem ser retornados no máximo sete dias caso estejam disponíveis. items: type: integer mediumPriority: type: object description: Tempo médio de resposta para chamadas para o nível de média prioridade. required: - currentDay - previousDays properties: currentDay: type: integer description: Tempo médio de resposta em milissegundos para chamadas no dia atual. previousDays: type: array description: Tempo médio de resposta em milissegundos para chamadas nos dias anteriores. O primeiro item do array é referente a ontem, e assim por diante. Devem ser retornados no máximo sete dias caso estejam disponíveis. items: type: integer unattended: type: object description: Tempo médio de resposta para chamadas para o nível não acompanhado. required: - currentDay - previousDays properties: currentDay: type: integer description: Tempo médio de resposta em milissegundos para chamadas no dia atual. previousDays: type: array description: Tempo médio de resposta em milissegundos para chamadas nos dias anteriores. O primeiro item do array é referente a ontem, e assim por diante. Devem ser retornados no máximo sete dias caso estejam disponíveis. items: type: integer AverageTPSMetrics: type: object required: - currentDay - previousDays properties: currentDay: type: integer description: Número médio de chamadas por segundo no dia. previousDays: type: array description: Número médio de chamadas por segundo nos dias anteriores. O primeiro item do array é referente a ontem, e assim por diante. Devem ser retornados no máximo sete dias caso estejam disponíveis. items: type: integer PeakTPSMetrics: type: object required: - currentDay - previousDays properties: currentDay: type: integer description: Pico de chamadas por segundo no dia. previousDays: type: array description: Pico de chamadas por segundo nos dias anteriores. O primeiro item do array é referente a ontem, e assim por diante. Devem ser retornados no máximo sete dias caso estejam disponíveis. items: type: integer ErrorMetrics: type: object required: - currentDay - previousDays properties: currentDay: type: integer description: Número de chamadas com erro no dia atual. previousDays: type: array description: Número de chamadas com erro nos dias anteriores. O primeiro item do array é referente a ontem, e assim por diante. Devem ser retornados no máximo sete dias caso estejam disponíveis. items: type: integer RejectionMetrics: type: object required: - currentDay - previousDays properties: currentDay: type: integer description: Número de chamadas rejeitadas no dia atual. previousDays: type: array description: Número de chamadas rejeitadas nos dias anteriores. O primeiro item do array é referente a ontem, e assim por diante. Devem ser retornados no máximo sete dias caso estejam disponíveis. items: type: integer Links: type: object properties: self: type: string description: URL da página atualmente requisitada pattern: ^(https:\/\/)(.*?)(\/open-insurance\/admin\/v\d+)(\/.*)?$ example: 'https://api.organizacao.com.br/open-insurance/admin/v1/metrics' first: type: string description: URL da primeira página de registros pattern: ^(https:\/\/)(.*?)(\/open-insurance\/admin\/v\d+)(\/.*)?$ example: 'https://api.organizacao.com.br/open-insurance/admin/v1/metrics' prev: type: string description: URL da página anterior de registros pattern: ^(https:\/\/)(.*?)(\/open-insurance\/admin\/v\d+)(\/.*)?$ example: 'https://api.organizacao.com.br/open-insurance/admin/v1/metrics' next: type: string description: URL da próxima página de registros pattern: ^(https:\/\/)(.*?)(\/open-insurance\/admin\/v\d+)(\/.*)?$ example: 'https://api.organizacao.com.br/open-insurance/admin/v1/metrics' last: type: string description: URL da última página de registros pattern: ^(https:\/\/)(.*?)(\/open-insurance\/admin\/v\d+)(\/.*)?$ example: 'https://api.organizacao.com.br/open-insurance/admin/v1/metrics' Meta: type: object properties: totalRecords: type: integer description: Total de registros encontrados example: 1 totalPages: type: integer description: Total de páginas para os registros encontrados example: 1 required: - totalRecords - totalPages ResponseError: type: object required: - errors properties: errors: type: array minItems: 1 maxItems: 13 items: type: object required: - code - title - detail - requestDateTime properties: code: description: Código de erro específico do endpoint type: string pattern: '[\w\W\s]*' maxLength: 255 title: description: Título legível por humanos deste erro específico type: string maxLength: 255 detail: description: Descrição legível por humanos deste erro específico type: string maxLength: 2048 requestDateTime: description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' type: string maxLength: 2048 format: date-time example: '2021-08-20T08:30:00Z' additionalProperties: false meta: $ref: '#/components/schemas/Meta' additionalProperties: false parameters: page: name: page in: query description: Número da página que está sendo requisitada (o valor da primeira página é 1). schema: type: integer default: 1 minimum: 1 pageSize: name: page-size in: query description: Quantidade total de registros por páginas. schema: type: integer default: 25 minimum: 1 cache-Control: name: cache-control in: header description: Controle de cache para evitar que informações confidenciais sejam armazenadas em cache. required: true schema: type: string pattern: '[\w\W\s]*' content-Security-Policy: name: Content-Security-Policy in: header description: Campo para proteção contra ataques clickjack do estilo - drag and drop. schema: type: string pattern: '[\w\W\s]*' content-Type: name: content-Type in: header description: Especificar o tipo de conteúdo da resposta. schema: type: string pattern: '[\w\W\s]*' strict-Transport-Security: name: Strict-Transport-Security in: header description: Campo para exigir conexões por HTTPS e proteger contra certificados falsificados. schema: type: string pattern: '[\w\W\s]*' x-Content-Type-Options: name: X-Content-Type-Options in: header description: Campo para evitar que navegadores executem a detecção de MIME e interpretem respostas como HTML de forma inadequada. schema: type: string pattern: '[\w\W\s]*' x-Frame-Options: name: X-Frame-Options in: header description: Campo indica se o navegador deve ou não renderizar um frame. schema: type: string pattern: '[\w\W\s]*' responses: UnprocessableEntity: description: 'O servidor entende o tipo de conteúdo da entidade da requisição, e a sintaxe da requisição esta correta, mas não foi possível processar as instruções presente.' content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/ResponseError' NoContent: description: 'O recurso solicitado não existe ou não foi localizado.' content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/ResponseError' BadRequest: description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/ResponseError' Forbidden: description: O token tem escopo incorreto ou uma política de segurança foi violada content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/ResponseError' InternalServerError: description: Ocorreu um erro no gateway da API ou no microsserviço content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/ResponseError' MethodNotAllowed: description: O consumidor tentou acessar o recurso com um método não suportado content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/ResponseError' NotAcceptable: description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/ResponseError' NotFound: description: O recurso solicitado não existe ou não foi implementado content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/ResponseError' TooManyRequests: description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/ResponseError' Unauthorized: description: Cabeçalho de autenticação ausente/inválido ou token inválido content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/ResponseError'