openapi: 3.0.0 info: title: APIs Open Data do Open Insurance Brasil description: As APIs descritas neste documento são referentes as APIs da fase Open Data do Open Insurance Brasil. version: 1.2.0 contact: email: "apiteam@swagger.io" servers: - url: 'http://api.seguradora.com.br/open-insurance/discovery/v1' tags: - name: "Discovery" paths: /status: get: tags: - Discovery summary: A descrição referente ao código de status retornado pelas APIs description: " Descrição referente ao código de status retornado pelas APIs" operationId: "getStatus" parameters: - $ref: "#/components/parameters/page" - $ref: "#/components/parameters/pageSize" responses: '200': description: Código de status retornado pelas APIs content: application/json: schema: $ref: '#/components/schemas/ResponseDiscoveryStatusList' '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' /outages: get: tags: - Discovery summary: a descrição referente a listagem de indisponibilidades agendadas para os serviços description: "a descrição referente a listagem de indisponibilidades agendadas para os serviços" operationId: "getOutage" parameters: - $ref: "#/components/parameters/page" - $ref: "#/components/parameters/pageSize" responses: '200': description: listagem de indisponibilidades agendadas para os serviços content: application/json: schema: $ref: '#/components/schemas/ResponseDiscoveryOutageList' '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: ResponseDiscoveryStatusList: type: object required: - data - links - meta properties: data: type: object required: - status properties: status: type: array items: $ref: '#/components/schemas/Status' links: $ref: '#/components/schemas/Links' meta: $ref: '#/components/schemas/Meta' ResponseDiscoveryOutageList: type: object required: - data - links - meta properties: data: type: array items: required: - outageTime - duration - isPartial - explanation - unavailableEndpoints properties: outageTime: type: string description: Data e hora planejada do início da indisponibilidade example: '2020-07-21T08:30:00Z' duration: type: string description: Duração prevista da indisponibilidade pattern: ^P(?!$)(\d+(?:\.\d+)?Y)?(\d+(?:\.\d+)?M)?(\d+(?:\.\d+)?W)?(\d+(?:\.\d+)?D)?(T(?=\d)(\d+(?:\.\d+)?H)?(\d+(?:\.\d+)?M)?(\d+(?:\.\d+)?S)?)?$ example: PT2H30M isPartial: type: boolean description: Flag que indica se a indisponibilidade é parcial (atingindo apenas alguns end points) ou total (atingindo todos os end points) example: false explanation: type: string description: Explicação sobre os motivos da indisponibilidade. example: Atualização do API Gateway unavailableEndpoints: type: array description: Endpoints com indisponibilidade. example: - electronic-channels links: $ref: '#/components/schemas/Links' meta: $ref: '#/components/schemas/Meta' Links: type: object properties: self: type: string description: URL da página atualmente requisitada pattern: ^(https:\/\/)(.*?)(\/open-insurance\/discovery\/v\d+)(\/(status|outages).*)?$ example: 'https://api.organizacao.com.br/open-insurance/discovery/v1/status' first: type: string description: URL da primeira página de registros pattern: ^(https:\/\/)(.*?)(\/open-insurance\/discovery\/v\d+)(\/(status|outages).*)?$ example: 'https://api.organizacao.com.br/open-insurance/discovery/v1/status' prev: type: string description: URL da página anterior de registros pattern: ^(https:\/\/)(.*?)(\/open-insurance\/discovery\/v\d+)(\/(status|outages).*)?$ example: 'https://api.organizacao.com.br/open-insurance/discovery/v1/status' next: type: string description: URL da próxima página de registros pattern: ^(https:\/\/)(.*?)(\/open-insurance\/discovery\/v\d+)(\/(status|outages).*)?$ example: 'https://api.organizacao.com.br/open-insurance/discovery/v1/status' last: type: string description: URL da última página de registros pattern: ^(https:\/\/)(.*?)(\/open-insurance\/discovery\/v\d+)(\/(status|outages).*)?$ example: 'https://api.organizacao.com.br/open-insurance/discovery/v1/status' Meta: type: object properties: totalRecords: type: integer description: Total de registros encontrados example: 9 totalPages: type: integer description: Total de páginas para os registros encontrados example: 3 required: - totalRecords - totalPages Status: type: object required: - code - explanation properties: code: type: string enum: - OK - PARTIAL_FAILURE - UNAVAILABLE - SCHEDULED_OUTAGE description: > Condição atual da API: * `OK` - A implementação é totalmente funcional * `PARTIAL_FAILURE` - Um ou mais endpoints estão indisponíveis * `UNAVAILABLE` - A implementação completa está indisponível * `SCHEDULED_OUTAGE` - Uma interrupção anunciada está em vigor example: OK explanation: type: string description: Fornece uma explicação da interrupção atual que pode ser exibida para um cliente final. Será obrigatoriamente preenchido se code tiver algum valor que não seja OK example: Retorno com Sucesso detectionTime: type: string description: A data e hora em que a interrupção atual foi detectada. Será obrigatoriamente preenchido se a propriedade code for PARTIAL_FAILURE ou UNAVAILABLE example: '2021-07-21T08:30:00Z' expectedResolutionTime: type: string description: A data e hora em que o serviço completo deve continuar (se conhecido). Será obrigatoriamente preenchido se code tiver algum valor que não seja OK example: '2021-07-21T08:30:00Z' updateTime: type: string description: A data e hora em que esse status foi atualizado pela última vez pelo titular dos dados. example: '2021-01-02T01:00:00Z' unavailableEndpoints: type: array description: Endpoints com indisponibilidade items: type: string example: - 'https://api.seguradora.com.br/open-insurance/channels/v1/electronic-channels' 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, sendo a 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 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'