openapi: 3.0.0 info: title: API Resources - Open Insurance Brasil description: | API que trata da consulta do status de recursos para o Open Insurance Brasil - Fase 2 e 3. Não possui segregação entre pessoa natural e pessoa jurídica. # Orientações importantes - A API resources lista os recursos vinculados ao consentimento específico, identificado por `consentId` e vinculado ao token enviado no header `Authorization`. - Os `STATUS` dos recursos listados DEVEM considerar não apenas o consentimento vinculado mas também a disponibilidade do recurso na instituição transmissora dos dados. - A `permission` específica desta API - `RESOURCES_READ` - DEVE ser solicitada pela instituição receptora na ocasião do pedido de criação do consentimento. - A consulta à API Resources não é obrigatória por parte das instituições receptoras - esta API foi criada para dar visibilidade da existência de ocorrências que possam impedir o compartilhamento de determinados recursos por parte da instituição transmissora dos dados. - O identificador do recurso devolvido na API Resources - `resourceId` - quando apresentado corresponde ao mesmo identificador designado para o recurso em sua API específica. ## Status previstos para os recursos listados na API Resources - AVAILABLE: indica que o recurso encontra-se disponível e o(s) consentimento(s) associado(s) possui(em) status `AUTHORISED`. - UNAVAILABLE: indica que o recurso não está mais disponível. - TEMPORARILY_UNAVAILABLE: indica que o recurso encontra-se temporariamente indisponível, embora o(s) consentimento(s) associado(s) possua(m) status `AUTHORISED`. - PENDING_AUTHORISATION: indica a existência de pendências para o compartilhamento do recurso, por exemplo, em caso de alçada dupla, quando é necessário o consentimento de mais de um titular. ## Permissions necessárias para a API Resources ### `/resources` - permissions: - GET: **RESOURCES_READ** version: 2.4.0 license: name: Apache 2.0 url: 'https://www.apache.org/licenses/LICENSE-2.0' contact: name: Governança do Open Insurance Brasil – Especificações url: 'https://www.gov.br/susep/' servers: - url: 'https://api.seguradora.com.br/open-insurance/resources/v2' description: Servidor de Produção - url: 'https://apih.seguradora.com.br/open-insurance/resources/v2' description: Servidor de Homologação tags: - name: Resources paths: /resources: get: tags: - Resources summary: Obtém a lista de recursos consentidos pelo cliente. operationId: resourcesGetResources description: Método para obter a lista de recursos mantidos pelo cliente na instituição transmissora e para as quais ele tenha fornecido consentimento. parameters: - $ref: '#/components/parameters/Authorization' - $ref: '#/components/parameters/xFapiAuthDate' - $ref: '#/components/parameters/xFapiCustomerIpAddress' - $ref: '#/components/parameters/xFapiInteractionId' - $ref: '#/components/parameters/xCustomerUserAgent' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/pageSize' responses: '200': $ref: '#/components/responses/OKResponseResourceList' '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' default: $ref: '#/components/responses/Default' security: - OpenId: - openid OAuth2Security: - 'consent:consentId' - resources components: schemas: ResponseResourceList: type: object required: - data - links - meta properties: data: type: array items: type: object required: - resourceId - type - status properties: resourceId: type: string description: | Identifica o recurso reportado pelo participante do Open Insurance, no caso de: Produtos de Titulos de Capitalização: policyNumber ou certificateNumber Produtos de Previdência: certificateNumber Produtos de Danos e Pessoas (independente do ramo e torná-lo como obrigatório): policyNumber ou certificateNumber minLength: 1 maxLength: 100 pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' example: 25cac914-d8ae-6789-b215-650a6215820d type: type: string enum: - CUSTOMERS_PERSONAL_IDENTIFICATIONS - CUSTOMERS_PERSONAL_QUALIFICATION - CUSTOMERS_PERSONAL_ADDITIONALINFO - CUSTOMERS_BUSINESS_IDENTIFICATIONS - CUSTOMERS_BUSINESS_QUALIFICATION - CUSTOMERS_BUSINESS_ADDITIONALINFO - CAPITALIZATION_TITLES - PENSION_PLAN - LIFE_PENSION - FINANCIAL_ASSISTANCE - DAMAGES_AND_PEOPLE_PATRIMONIAL - DAMAGES_AND_PEOPLE_RESPONSIBILITY - DAMAGES_AND_PEOPLE_TRANSPORT - DAMAGES_AND_PEOPLE_FINANCIAL_RISKS - DAMAGES_AND_PEOPLE_RURAL - DAMAGES_AND_PEOPLE_AUTO - DAMAGES_AND_PEOPLE_HOUSING - DAMAGES_AND_PEOPLE_PERSON - DAMAGES_AND_PEOPLE_ACCEPTANCE_AND_BRANCHES_ABROAD - CLAIM_NOTIFICATION - ENDORSEMENT - QUOTE_PATRIMONIAL - QUOTE_ACCEPTANCE_AND_BRANCHES_ABROAD - QUOTE_AUTO - QUOTE_FINANCIAL_RISK - QUOTE_HOUSING - QUOTE_RESPONSIBILITY - QUOTE_RURAL - QUOTE_TRANSPORT - QUOTE_PERSON - QUOTE_CAPITALIZATION_TITLE - CONTRACT_LIFE_PENSION - CONTRACT_PENSION_PLAN - PENSION_WITHDRAWAL - CAPITALIZATION_TITLE_WITHDRAWAL description: | Tipo de recurso (vide Enum): - CUSTOMERS_PERSONAL_IDENTIFICATIONS: Informações de identificação PF - CUSTOMERS_PERSONAL_QUALIFICATION: Informações de qualificação PF - CUSTOMERS_PERSONAL_ADDITIONALINFO: Informações complementares PF - CUSTOMERS_BUSINESS_IDENTIFICATIONS: Informações de identificação PJ - CUSTOMERS_BUSINESS_QUALIFICATION: Informações de qualificação PJ - CUSTOMERS_BUSINESS_ADDITIONALINFO: Informações complementares PJ - CAPITALIZATION_TITLES: Produtos de Titulos de Capitalização - PENSION_PLAN: Produtos de Previdência Risco - LIFE_PENSION: Produtos de Previdência Sobrevivência - FINANCIAL_ASSISTANCE: Produtos de Assistência Financeira - DAMAGES_AND_PEOPLE_PATRIMONIAL: Produtos de Patrimonial - DAMAGES_AND_PEOPLE_RESPONSIBILITY: Produtos de Responsabilidade - DAMAGES_AND_PEOPLE_TRANSPORT: Produtos de Transportes - DAMAGES_AND_PEOPLE_FINANCIAL_RISKS: Produtos de Riscos Financeiros - DAMAGES_AND_PEOPLE_RURAL: Produtos de Rural - DAMAGES_AND_PEOPLE_AUTO: Produtos de Automóveis - DAMAGES_AND_PEOPLE_HOUSING: Produtos de Habitacional - DAMAGES_AND_PEOPLE_PERSON: Produtos de Pessoas (Repartição simples) - DAMAGES_AND_PEOPLE_ACCEPTANCE_AND_BRANCHES_ABROAD: Aceitação e Sucursal no exterior - CLAIM_NOTIFICATION: Solicitação de Aviso de Sinistro - ENDORSEMENT: Solicitação de Endosso - QUOTE_PATRIMONIAL: Cotação do Seguro Patrimonial - QUOTE_ACCEPTANCE_AND_BRANCHES_ABROAD: Cotação do Seguro Aceitação e Sucursal no exterior - QUOTE_AUTO: Cotação do Seguro Automóvel - QUOTE_FINANCIAL_RISK: Cotação do Seguro Riscos Financeiros - QUOTE_HOUSING: Cotação do Seguro Habitacional - QUOTE_RESPONSIBILITY: Cotação do Seguro Responsabilidade - QUOTE_RURAL: Cotação do Seguro Rural - QUOTE_TRANSPORT: Cotação do Seguro Transportes - QUOTE_PERSON: Cotação do Seguro Pessoas - QUOTE_CAPITALIZATION_TITLE: Cotação de Títulos de Capitalização - CONTRACT_LIFE_PENSION: Contratação/Portabilidade de Previdência Sobrevivência - CONTRACT_PENSION_PLAN: Contratação/Portabilidade de Previdência Risco - PENSION_WITHDRAWAL: Resgate de Previdência - CAPITALIZATION_TITLE_WITHDRAWAL: Resgate de Títulos de Capitalização example: CAPITALIZATION_TITLES status: type: string enum: - AVAILABLE - UNAVAILABLE - TEMPORARILY_UNAVAILABLE - PENDING_AUTHORISATION description: | - Tipo de status de recurso (vide Enum): - Available: Disponível - Unavailable: Indisponível - Temporarily Unavailable: Temporariamente Indisponível - Pending Authorisation: Pendente de Autorização example: AVAILABLE additionalProperties: false minItems: 0 description: Lista de recursos e seus respectivos status. links: $ref: '#/components/schemas/Links' meta: $ref: '#/components/schemas/Meta' additionalProperties: false Links: type: object description: Referências para outros recusos da API requisitada. required: - self properties: self: type: string format: uri maxLength: 2000 description: URI completo que gerou a resposta atual. pattern: ^(https:\/\/)(.*?)(\/open-insurance\/resources\/v\d+)(\/resources.*)?$ example: 'https://api.organizacao.com.br/open-insurance/resources/v2/resources' first: type: string format: uri maxLength: 2000 description: URI da primeira página que originou essa lista de resultados. Restrição - Obrigatório quando não for a primeira página da resposta pattern: ^(https:\/\/)(.*?)(\/open-insurance\/resources\/v\d+)(\/resources.*)?$ example: 'https://api.organizacao.com.br/open-insurance/resources/v2/resources' prev: type: string format: uri maxLength: 2000 description: "URI da página anterior dessa lista de resultados. Restrição - \tObrigatório quando não for a primeira página da resposta" pattern: ^(https:\/\/)(.*?)(\/open-insurance\/resources\/v\d+)(\/resources.*)?$ example: 'https://api.organizacao.com.br/open-insurance/resources/v2/resources' next: type: string format: uri maxLength: 2000 description: URI da próxima página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta pattern: ^(https:\/\/)(.*?)(\/open-insurance\/resources\/v\d+)(\/resources.*)?$ example: 'https://api.organizacao.com.br/open-insurance/resources/v2/resources' last: type: string format: uri maxLength: 2000 description: URI da última página dessa lista de resultados. Restrição - Obrigatório quando não for a última página da resposta pattern: ^(https:\/\/)(.*?)(\/open-insurance\/resources\/v\d+)(\/resources.*)?$ example: 'https://api.organizacao.com.br/open-insurance/resources/v2/resources' additionalProperties: false Meta: type: object description: Meta informações referente à API requisitada. required: - totalRecords - totalPages properties: totalRecords: type: integer format: int32 description: Número total de registros no resultado example: 1 totalPages: type: integer format: int32 description: Número total de páginas no resultado example: 1 additionalProperties: false 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 pattern: '[\w\W\s]*' maxLength: 255 detail: description: Descrição legível por humanos deste erro específico type: string pattern: '[\w\W\s]*' maxLength: 2048 requestDateTime: description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' type: string maxLength: 20 format: date-time example: '2021-05-21T08:30:00Z' additionalProperties: false meta: $ref: '#/components/schemas/Meta' additionalProperties: false XFapiInteractionId: type: string pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' maxLength: 100 description: 'Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação. Se fornecido, o transmissor deve "reproduzir" esse valor no cabeçalho de resposta.' parameters: Authorization: name: Authorization in: header description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado required: true schema: type: string pattern: '[\w\W\s]*' maxLength: 2048 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 format: int32 pageSize: name: page-size in: query description: Quantidade total de registros por páginas. schema: type: integer default: 25 minimum: 1 format: int32 maximum: 1000 xCustomerUserAgent: name: x-customer-user-agent in: header description: Indica o user-agent que o usuário utiliza. required: false schema: type: string pattern: '[\w\W\s]*' minLength: 1 maxLength: 100 xFapiAuthDate: name: x-fapi-auth-date in: header description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a [RFC7231](https://tools.ietf.org/html/rfc7231).Exemplo: Sun, 10 Sep 2017 19:43:31 UTC' required: false schema: type: string pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' minLength: 29 maxLength: 29 xFapiCustomerIpAddress: name: x-fapi-customer-ip-address in: header description: O endereço IP do usuário se estiver atualmente logado com o receptor. required: false schema: type: string pattern: '[\w\W\s]*' minLength: 1 maxLength: 100 xFapiInteractionId: name: x-fapi-interaction-id in: header description: 'Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação. Se fornecido, o transmissor deve "reproduzir" esse valor no cabeçalho de resposta.' required: false schema: type: string pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' minLength: 1 maxLength: 100 securitySchemes: OpenId: type: openIdConnect openIdConnectUrl: 'https://auth.mockinsurance.poc.raidiam.io/.well-known/openid-configuration' OAuth2Security: type: oauth2 description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados. flows: authorizationCode: authorizationUrl: 'https://authserver.example/authorization' tokenUrl: 'https://authserver.example/token' scopes: resources: Escopo necessário para acesso à API Resources. O controle dos endpoints específicos é feito via permissions. responses: OKResponseResourceList: description: Dados de status dos recursos obtidos com sucesso. headers: x-fapi-interaction-id: schema: $ref: '#/components/schemas/XFapiInteractionId' content: application/json: schema: $ref: '#/components/schemas/ResponseResourceList' 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' Default: description: Erro inesperado. 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'