openapi: 3.0.0 info: title: API Enrollments for Payment Initiation - Open Finance Brasil description: | Família de API para permitir o pagamento sem redirecionamento via Open Finance Brasil. Permite tanto o gerenciamento dos dispositivos vinculados as contas quanto a autorização de consentimentos criados via fluxo sem redirecionamento. version: 2.0.0-rc.1 license: name: Apache 2.0 url: 'https://www.apache.org/licenses/LICENSE-2.0' contact: name: Governança do Open Finance Brasil – Especificações email: squad-jornada@openfinancebrasil.org.br url: 'https://openfinancebrasil.atlassian.net/wiki/spaces/OF' servers: - url: 'https://mtls-api.banco.com.br/open-banking/enrollments/v2' description: Servidor de Produção - url: 'https://mtls-api.hml.banco.com.br/open-banking/enrollments/v2' description: Servidor de Homologação tags: - name: Vínculo de dispositivo description: Gerenciamento dos dispositivos vinculados as contas - name: Consentimento description: Autorização de consentimentos criados via fluxo sem redirecionamento. paths: /enrollments: post: tags: - Vínculo de dispositivo summary: Criar vínculo de conta. operationId: postEnrollments description: | Método para criar um novo vínculo de conta. Retorna um enrollment em status AWAITING_RISK_SIGNALS. parameters: - $ref: '#/components/parameters/Authorization' - $ref: '#/components/parameters/xFapiAuthDate' - $ref: '#/components/parameters/xFapiCustomerIpAddress' - $ref: '#/components/parameters/xFapiInteractionId' - $ref: '#/components/parameters/xCustomerUserAgent' - $ref: '#/components/parameters/XIdempotencyKey' requestBody: required: true description: Payload para criação de vínculo de conta. content: application/jwt: schema: $ref: '#/components/schemas/CreateEnrollment' responses: '201': $ref: '#/components/responses/201EnrollmentsCreated' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/ForbiddenEnrollments' '404': $ref: '#/components/responses/NotFound' '405': $ref: '#/components/responses/MethodNotAllowed' '406': $ref: '#/components/responses/NotAcceptable' '415': $ref: '#/components/responses/UnsupportedMediaType' '422': $ref: '#/components/responses/UnprocessableEntityEnrollment' '500': $ref: '#/components/responses/InternalServerError' '529': $ref: '#/components/responses/SiteIsOverloaded' default: description: Erro inesperado. content: application/json: schema: $ref: '#/components/schemas/ResponseError' security: - OAuth2ClientCredentials: - payments '/enrollments/{enrollmentId}': get: tags: - Vínculo de dispositivo summary: Consultar vínculo de conta. operationId: getEnrollment description: Método para consultar um vínculo de conta para iniciação de pagamento sem redirecionamento. parameters: - $ref: '#/components/parameters/enrollmentId' - $ref: '#/components/parameters/Authorization' - $ref: '#/components/parameters/xFapiAuthDate' - $ref: '#/components/parameters/xFapiCustomerIpAddress' - $ref: '#/components/parameters/xFapiInteractionId' - $ref: '#/components/parameters/xCustomerUserAgent' responses: '200': $ref: '#/components/responses/200EnrollmentsEnrollmentIdRead' '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' '500': $ref: '#/components/responses/InternalServerError' '529': $ref: '#/components/responses/SiteIsOverloaded' default: description: Erro inesperado. content: application/json: schema: $ref: '#/components/schemas/ResponseError' security: - OAuth2ClientCredentials: - payments patch: tags: - Vínculo de dispositivo summary: Revogar ou rejeitar vínculo de conta. operationId: deleteEnrollment description: | Método para revogar ou rejeitar um vínculo de conta. Após a execução com sucesso deste método irreversível, o vínculo de conta não poderá mais ser utilizado para autenticação nem autorização de iniciação de pagamentos. Os conceitos de revogação e rejeição estão associados à máquina de estados do vínculo de conta\: • Revogação: Cancelamento de um vínculo de conta no status "AUTHORISED"; • Rejeição: Cancelamento do vínculo de conta nos status "AWATING_RISK_SIGNALS", "AWATING_ENROLLMENT" e "AWAITING_ACCOUNT_HOLDER_VALIDATION" Cabe ao cliente desta API distinguir entre os dois cenários para determinar o motivo adequado. parameters: - $ref: '#/components/parameters/enrollmentId' - $ref: '#/components/parameters/Authorization' - $ref: '#/components/parameters/xFapiAuthDate' - $ref: '#/components/parameters/xFapiCustomerIpAddress' - $ref: '#/components/parameters/xFapiInteractionId' - $ref: '#/components/parameters/xCustomerUserAgent' - $ref: '#/components/parameters/XIdempotencyKey' requestBody: required: true description: Dados para regovação do vínculo de conta. content: application/jwt: schema: type: object required: - data properties: data: type: object required: - cancellation description: | Objeto que agrupa as informações de qual foi o usuário logado que solicitou o cancelamento do vínculo de conta. properties: cancellation: type: object required: - reason properties: cancelledBy: type: object description: | Informação relacionada ao usuário pagador que solicitou o cancelamento do vínculo de conta. Pode estar ausente em cenários de processos automatizados realizarem o cancelamento do vínculo, por exemplo, por data de expiração. required: - document properties: document: type: object description: Objeto que consolida os dados do documento do usuário que solicitou o cancelamento. required: - identification - rel properties: identification: type: string maxLength: 11 description: Número do documento do usuário responsável pelo cancelamento do vínculo de conta. example: '11111111111' pattern: '^\d{11}$' rel: type: string maxLength: 3 description: Tipo do documento do usuário responsável pelo cancelamento do vínculo de conta. example: CPF pattern: '^[A-Z]{3}$' reason: oneOf: - type: object required: - rejectionReason description: Motivo da rejeição do vínculo de conta. properties: rejectionReason: $ref: '#/components/schemas/EnrollmentRejectionReason' - type: object required: - revocationReason description: Motivo da revogação do vínculo de conta. properties: revocationReason: $ref: '#/components/schemas/EnrollmentRevocationReason' additionalInformation: type: string pattern: '[\w\W\s]*' example: Contrato entre iniciadora e detentora interrompido maxLength: 2048 responses: '204': $ref: '#/components/responses/204EnrollmentsEnrollmentIdDelete' '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/UnprocessableEntityEnrollmentCancel' '500': $ref: '#/components/responses/InternalServerError' '529': $ref: '#/components/responses/SiteIsOverloaded' default: description: Erro inesperado. content: application/json: schema: $ref: '#/components/schemas/ResponseError' security: - OAuth2ClientCredentials: - payments '/enrollments/{enrollmentId}/fido-registration-options': post: tags: - Vínculo de dispositivo summary: Obter parâmetros para criação de credenciais FIDO2. operationId: enrollmentCreateFidoRegistrationOptions description: | Método para obter os parâmetros para criação de uma nova credencial FIDO2. Um novo challenge deve ser criado a cada chamada. Os parâmetros da resposta devem ser compatíveis com a definição [W3C](https://www.w3.org/TR/webauthn-2/#dictionary-makecredentialoptions) parameters: - $ref: '#/components/parameters/enrollmentId' - $ref: '#/components/parameters/Authorization' - $ref: '#/components/parameters/xFapiAuthDate' - $ref: '#/components/parameters/xFapiCustomerIpAddress' - $ref: '#/components/parameters/xFapiInteractionId' - $ref: '#/components/parameters/xCustomerUserAgent' - $ref: '#/components/parameters/XIdempotencyKey' requestBody: required: true description: Payload para criação de parâmetros de registro de nova credencial FIDO2. content: application/jwt: schema: $ref: '#/components/schemas/EnrollmentFidoOptionsInput' responses: '201': $ref: '#/components/responses/201EnrollmentFidoRegistrationOptions' '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' '415': $ref: '#/components/responses/UnsupportedMediaType' '422': $ref: '#/components/responses/UnprocessableEntityEnrollmentFidoRegistrationOptions' '500': $ref: '#/components/responses/InternalServerError' '529': $ref: '#/components/responses/SiteIsOverloaded' default: description: Erro inesperado. content: application/json: schema: $ref: '#/components/schemas/ResponseError' security: - OAuth2AuthorizationCode: - openid - 'enrollment:enrollmentId' - payments '/enrollments/{enrollmentId}/fido-registration': post: tags: - Vínculo de dispositivo summary: Associação da credencial FIDO2 ao vínculo de conta. operationId: enrollmentRegisterFidoCredential description: | O vínculo de conta deve estar no status "AWAITING_ENROLLMENT". Após o registro com sucesso, o vínculo de conta deve transitar ao status "AUTHORISED". A falha de verificação da credencial FIDO2 deve causar a rejeição do vínculo de conta por parte da detentora, uma vez que não é possível reusar um mesmo "challenge" para mais de um registro. parameters: - $ref: '#/components/parameters/enrollmentId' - $ref: '#/components/parameters/Authorization' - $ref: '#/components/parameters/xFapiAuthDate' - $ref: '#/components/parameters/xFapiCustomerIpAddress' - $ref: '#/components/parameters/xFapiInteractionId' - $ref: '#/components/parameters/xCustomerUserAgent' - $ref: '#/components/parameters/XIdempotencyKey' requestBody: required: true description: Payload para criação de parâmetros de registro de nova credencial FIDO2. content: application/jwt: schema: $ref: '#/components/schemas/EnrollmentFidoRegistration' responses: '204': $ref: '#/components/responses/204EnrollmentsFidoRegistration' '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' '415': $ref: '#/components/responses/UnsupportedMediaType' '422': $ref: '#/components/responses/UnprocessableEntityEnrollmentFidoRegistration' '500': $ref: '#/components/responses/InternalServerError' '529': $ref: '#/components/responses/SiteIsOverloaded' default: description: Erro inesperado. content: application/json: schema: $ref: '#/components/schemas/ResponseError' security: - OAuth2AuthorizationCode: - openid - 'enrollment:enrollmentId' - payments /enrollments/{enrollmentId}/fido-sign-options: post: tags: - Vínculo de dispositivo summary: Obter parâmetros para autenticação FIDO2. operationId: enrollmentCreateFidoSigningOptions description: | Método para obter os parâmetros para autenticação a partir de uma credencial FIDO2 previamente registrada. Um novo challenge deve ser criado a cada chamada. Os parâmetros da resposta devem ser compatíveis com a [definição W3C](https://www.w3.org/TR/webauthn-2/#dictionary-assertion-options) parameters: - $ref: '#/components/parameters/enrollmentId' - $ref: '#/components/parameters/Authorization' - $ref: '#/components/parameters/xFapiAuthDate' - $ref: '#/components/parameters/xFapiCustomerIpAddress' - $ref: '#/components/parameters/xFapiInteractionId' - $ref: '#/components/parameters/xCustomerUserAgent' - $ref: '#/components/parameters/XIdempotencyKey' requestBody: required: true description: Payload para autenticação a partir de uma credencial FIDO2 previamente registrada. content: application/jwt: schema: type: object required: - data properties: data: type: object description: | Objeto que contém as informações sobre a Relying Party e a plataforma sobre a qual o usuário está utilizando o serviço da iniciadora para utilização de FIDO2. required: - rp - platform - consentId properties: rp: type: string description: Identificador único da Relying Party, que corresponde ao valor do CN do certificado de transporte da iniciadora. platform: type: string description: | Indica a plataforma em que o usuário criará a nova credencial FIDO2. Este campo permite que o servidor FIDO inclua extensões de acordo com a plataforma utilizada. enum: - ANDROID - BROWSER - CROSS_PLATFORM - IOS consentId: $ref: '#/components/schemas/consentId' responses: '201': $ref: '#/components/responses/201EnrollmentFidoSignOptions' '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' '415': $ref: '#/components/responses/UnsupportedMediaType' '422': $ref: '#/components/responses/UnprocessableEntityEnrollmentFidoSignOptions' '500': $ref: '#/components/responses/InternalServerError' '529': $ref: '#/components/responses/SiteIsOverloaded' default: description: Erro inesperado. content: application/json: schema: $ref: '#/components/schemas/ResponseError' security: - OAuth2ClientCredentials: - payments /enrollments/{enrollmentId}/risk-signals: post: tags: - Vínculo de dispositivo summary: Envio de sinais de risco para iniciação do vínculo de dispositivo operationId: riskSignals description: | Envio de sinais de risco para iniciação do vínculo de dispositivo, o status do enrollment deve estar em `AWAITING_RISK_SIGNALS`. Após recebimento com sucesso dos sinais, o status do enrollment deve transitar para `AWAITING_ACCOUNT_HOLDER_VALIDATION`. parameters: - $ref: '#/components/parameters/enrollmentId' - $ref: '#/components/parameters/Authorization' - $ref: '#/components/parameters/xFapiAuthDate' - $ref: '#/components/parameters/xFapiCustomerIpAddress' - $ref: '#/components/parameters/xFapiInteractionId' - $ref: '#/components/parameters/xCustomerUserAgent' - $ref: '#/components/parameters/XIdempotencyKey' requestBody: required: true description: Payload para criação de vínculo de conta. content: application/jwt: schema: $ref: '#/components/schemas/RiskSignals' responses: '204': $ref: '#/components/responses/204EnrollmentsRiskSignals' '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' '415': $ref: '#/components/responses/UnsupportedMediaType' '422': $ref: '#/components/responses/UnprocessableEntityEnrollmentRiskSignals' '500': $ref: '#/components/responses/InternalServerError' '529': $ref: '#/components/responses/SiteIsOverloaded' default: description: Erro inesperado. content: application/json: schema: $ref: '#/components/schemas/ResponseError' security: - OAuth2ClientCredentials: - payments /consents/{consentId}/authorise: post: tags: - Consentimento summary: Autorização de um consentimento de pagamentos na jornada sem redirecionamento operationId: authorizeConsent description: | Autorização de um consentimento de pagamentos em status `AWAITING_AUTHORISATION` a partir do access_token emitido pela jornada sem redirecionamento e envio de sinais de risco. Para pagamentos de alçadas únicas, o consentimento de pagamento deve transitar ao status `AUTHORISED` na execução com sucesso desse método. Para pagamentos com múltiplas alçadas aprovadoras, o consentimento de pagamento ficará em `PARTIALLY_ACCEPTED` até que todos tenham autorizado. Em caso de falha de negócio (HTTP Status Code 422), o consentimento de pagamento precisa transitar para o status `REJECTED` e seguir os motivos de rejeição presentes na API de pagamentos. Caso a detentora identifique que a conta de débito informada pelo iniciador na criação do consentimento diverge da conta de débito vinculada ao dispositivo, o detentor deve retornar o erro HTTP 422 com código `CONTA_DEBITO_DIVERGENTE_CONSENTIMENTO_VINCULO` e rejeitar o consentimento com o motivo `CONTA_NAO_PERMITE_PAGAMENTO`. Se o iniciador, durante a criação do consentimento, omitir a conta de débito, o detentor deve considerar a conta de débito associada ao vínculo para o preenchimento do objeto `/data/debtorAccount`, presente no consentimento, após a sua autorização. parameters: - $ref: '#/components/parameters/consentId' - $ref: '#/components/parameters/Authorization' - $ref: '#/components/parameters/xFapiAuthDate' - $ref: '#/components/parameters/xFapiCustomerIpAddress' - $ref: '#/components/parameters/xFapiInteractionId' - $ref: '#/components/parameters/xCustomerUserAgent' - $ref: '#/components/parameters/XIdempotencyKey' requestBody: required: true description: Payload para criação de vínculo de conta. content: application/jwt: schema: $ref: '#/components/schemas/ConsentAuthorization' responses: '204': $ref: '#/components/responses/204PaymentsConsentsAuthorized' '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' '415': $ref: '#/components/responses/UnsupportedMediaType' '422': $ref: '#/components/responses/UnprocessableEntityConsentsAuthorization' '500': $ref: '#/components/responses/InternalServerError' '529': $ref: '#/components/responses/SiteIsOverloaded' default: description: Erro inesperado. content: application/json: schema: $ref: '#/components/schemas/ResponseError' security: - OAuth2AuthorizationCode: - openid - 'enrollment:enrollmentId' - payments - nrp-consents components: headers: xFapiInteractionId: description: | Um UUID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela iniciadora (client) e o seu valor deve ser “espelhado” pela detentora (server) no cabeçalho de resposta. schema: $ref: '#/components/schemas/XFapiInteractionId' xFapiInteractionIdBadRequest: description: | Um UUID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela iniciadora (client) e o seu valor deve ser "espelhado" pela detentora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a detentora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP status code 400. A iniciadora deve acatar o valor recebido da detentora. schema: $ref: '#/components/schemas/XFapiInteractionId' schemas: 422ResponseErrorCreateEnrollment: type: object required: - errors - meta properties: errors: type: array minItems: 1 items: type: object required: - code - title - detail properties: code: type: string enum: - PERMISSOES_INVALIDAS - CONTA_INVALIDA - PARAMETRO_NAO_INFORMADO - PARAMETRO_INVALIDO - ERRO_IDEMPOTENCIA example: PERMISSOES_INVALIDAS description: | Códigos de erros previstos na criação do vínculo de conta: - PERMISSOES_INVALIDAS: As permissões associadas ao vínculo de conta não contêm "PAYMENTS_INITIATE". - CONTA_INVALIDA: A conta informada inexiste ou não é compatível com o fluxo de não-redirecionamento. - PARAMETRO_NAO_INFORMADO: Parâmetro não informado. - PARAMETRO_INVALIDO: Parâmetro inválido. - ERRO_IDEMPOTENCIA: Erro idempotência. title: type: string maxLength: 255 pattern: '[\w\W\s]*' example: Permissões inválidas description: | Título específico do erro reportado, de acordo com o código enviado: - PERMISSOES_INVALIDAS: Permissões inválidas. - CONTA_INVALIDA: Conta inválida. - PARAMETRO_NAO_INFORMADO: Parâmetro não informado. - PARAMETRO_INVALIDO: Parâmetro inválido. - ERRO_IDEMPOTENCIA: Erro idempotência. detail: type: string maxLength: 2048 pattern: '[\w\W\s]*' example: 'Permissões inválidas' description: | Descrição específica do erro de acordo com o código reportado: - PERMISSOES_INVALIDAS: As permissões associadas ao vínculo de conta não contêm "PAYMENTS_INITIATE" ou contêm valores não suportados para esta operação. - CONTA_INVALIDA: A conta informada inexiste ou não é compatível com o fluxo de não-redirecionamento. - PARAMETRO_NAO_INFORMADO: Parâmetro [nome_campo] obrigatório não informado. - PARAMETRO_INVALIDO: Parâmetro [nome_campo] não obedece as regras de formatação esperadas. - ERRO_IDEMPOTENCIA: Conteúdo da mensagem (claim data) diverge do conteúdo associado a esta chave de idempotência (x-idempotency-key). meta: $ref: '#/components/schemas/Meta' 422ResponseErrorCancelEnrollment: type: object required: - errors - meta properties: errors: type: array minItems: 1 items: type: object required: - code - title - detail properties: code: type: string enum: - STATUS_INVALIDO - MOTIVO_REJEICAO - REJEITADO_OUTRO_SEM_DETALHES - MOTIVO_REVOGACAO - REVOGADO_OUTRO_SEM_DETALHES - PARAMETRO_NAO_INFORMADO - PARAMETRO_INVALIDO - ERRO_IDEMPOTENCIA example: STATUS_INVALIDO description: | Códigos de erros previstos no cancelamento do vínculo de conta: - STATUS_INVALIDO: O status do vínculo de conta não permite cancelamento. - MOTIVO_REJEICAO: A rejeição do vínculo de conta exige um motivo associado. - REJEITADO_OUTRO_SEM_DETALHES: O uso do motivo REJEITADO_OUTRO, deve estar acompanhado de descrição (additionalInformation). - MOTIVO_REVOGACAO: A revogação do vínculo de conta exige um motivo associado. - REVOGADO_OUTRO_SEM_DETALHES: O uso do motivo REVOGADO_OUTRO deve estar acompanhado de descrição (additionalInformation) - PARAMETRO_NAO_INFORMADO: Parâmetro não informado. - PARAMETRO_INVALIDO: Parâmetro inválido. - ERRO_IDEMPOTENCIA: Erro idempotência. title: type: string maxLength: 255 pattern: '[\w\W\s]*' example: Permissões inválidas description: | Título específico do erro reportado, de acordo com o código enviado: - STATUS_INVALIDO: Status inválido. - MOTIVO_REJEICAO: Motivo de rejeição não especificado. - REJEITADO_OUTRO_SEM_DETALHES: O campo additionalInformation é obrigatório. - MOTIVO_REVOGACAO: Motivo de revogação não especificado. - REVOGADO_OUTRO_SEM_DETALHES: O campo additionalInformation é obrigatório. - PARAMETRO_NAO_INFORMADO: Parâmetro não informado. - PARAMETRO_INVALIDO: Parâmetro inválido. - ERRO_IDEMPOTENCIA: Erro idempotência. detail: type: string maxLength: 2048 pattern: '[\w\W\s]*' example: 'Permissões inválidas' description: | Descrição específica do erro de acordo com o código reportado: - STATUS_INVALIDO: O status do vínculo de conta não permite cancelamento. - MOTIVO_REJEICAO: A rejeição do vínculo de conta deve estar associada a um motivo de rejeição. - REJEITADO_OUTRO_SEM_DETALHES: O uso do motivo REJEITADO_OUTRO, deve estar acompanhado de descrição (additionalInformation). - MOTIVO_REVOGACAO: A revogação do vínculo de conta deve estar associada a um motivo de revogação. - REVOGADO_OUTRO_SEM_DETALHES: O uso do motivo REVOGADO_OUTRO deve estar acompanhado de descrição (additionalInformation) - PARAMETRO_NAO_INFORMADO: Parâmetro [nome_campo] obrigatório não informado. - PARAMETRO_INVALIDO: Parâmetro [nome_campo] não obedece as regras de formatação esperadas. - ERRO_IDEMPOTENCIA: Conteúdo da mensagem (claim data) diverge do conteúdo associado a esta chave de idempotência (x-idempotency-key). meta: $ref: '#/components/schemas/Meta' 422ResponseErrorFidoRegistrationOptions: type: object required: - errors - meta properties: errors: type: array minItems: 1 items: type: object required: - code - title - detail properties: code: type: string enum: - RP_INVALIDA - STATUS_VINCULO_INVALIDO - PARAMETRO_NAO_INFORMADO - PARAMETRO_INVALIDO - ERRO_IDEMPOTENCIA example: STATUS_VINCULO_INVALIDO description: | Códigos de erros previstos: - RP_INVALIDA: O identificador da Relying Party informado não pode ser verificado. - STATUS_VINCULO_INVALIDO: O status do vínculo de conta é tal que não permite o registro de nova credencial. - PARAMETRO_NAO_INFORMADO: Parâmetro não informado. - PARAMETRO_INVALIDO: Parâmetro inválido. - ERRO_IDEMPOTENCIA: Erro idempotência. title: type: string maxLength: 255 pattern: '[\w\W\s]*' example: Permissões inválidas description: | Título específico do erro reportado, de acordo com o código enviado: - RP_INVALIDA: Relying party inválida. - STATUS_VINCULO_INVALIDO: Status do vínculo de conta inválido. - PARAMETRO_NAO_INFORMADO: Parâmetro não informado. - PARAMETRO_INVALIDO: Parâmetro inválido. - ERRO_IDEMPOTENCIA: Erro idempotência. detail: type: string maxLength: 2048 pattern: '[\w\W\s]*' example: 'Permissões inválidas' description: | Descrição específica do erro de acordo com o código reportado: - RP_INVALIDA: O identificador da Relying Party informado não pode ser verificado. - STATUS_VINCULO_INVALIDO: O status do vínculo de conta é tal que não permite o registro de nova credencial. - PARAMETRO_NAO_INFORMADO: Parâmetro [nome_campo] obrigatório não informado. - PARAMETRO_INVALIDO: Parâmetro [nome_campo] não obedece as regras de formatação esperadas. - ERRO_IDEMPOTENCIA: Conteúdo da mensagem (claim data) diverge do conteúdo associado a esta chave de idempotência (x-idempotency-key). meta: $ref: '#/components/schemas/Meta' 422ResponseErrorRiskSignals: type: object required: - errors - meta properties: errors: type: array minItems: 1 items: type: object required: - code - title - detail properties: code: type: string enum: - STATUS_VINCULO_INVALIDO - FALTAM_SINAIS_OBRIGATORIOS_DA_PLATAFORMA - PARAMETRO_NAO_INFORMADO - PARAMETRO_INVALIDO - ERRO_IDEMPOTENCIA example: STATUS_VINCULO_INVALIDO description: | Códigos de erros previstos: - STATUS_VINCULO_INVALIDO: O status do vínculo de conta é incompatível com a operação. - FALTAM_SINAIS_OBRIGATORIOS_DA_PLATAFORMA: Os sinais obrigatórios para a plataforma do usuário não foram enviados em sua totalidade. - PARAMETRO_NAO_INFORMADO: Parâmetro não informado. - PARAMETRO_INVALIDO: Parâmetro inválido. - ERRO_IDEMPOTENCIA: Erro idempotência. title: type: string maxLength: 255 pattern: '[\w\W\s]*' example: Permissões inválidas description: | Título específico do erro reportado, de acordo com o código enviado: - STATUS_VINCULO_INVALIDO: Status do vínculo de conta inválido. - FALTAM_SINAIS_OBRIGATORIOS_DA_PLATAFORMA: Os sinais obrigatórios para a plataforma do usuário não foram enviados em sua totalidade. - PARAMETRO_NAO_INFORMADO: Parâmetro não informado. - PARAMETRO_INVALIDO: Parâmetro inválido. - ERRO_IDEMPOTENCIA: Erro idempotência. detail: type: string maxLength: 2048 pattern: '[\w\W\s]*' example: 'Permissões inválidas' description: | Descrição específica do erro de acordo com o código reportado: - STATUS_VINCULO_INVALIDO: O status do vínculo de conta é incompatível com a operação. - FALTAM_SINAIS_OBRIGATORIOS_DA_PLATAFORMA: Os sinais obrigatórios para a plataforma do usuário não foram enviados em sua totalidade. - PARAMETRO_NAO_INFORMADO: Parâmetro [nome_campo] obrigatório não informado. - PARAMETRO_INVALIDO: Parâmetro [nome_campo] não obedece as regras de formatação esperadas. - ERRO_IDEMPOTENCIA: Conteúdo da mensagem (claim data) diverge do conteúdo associado a esta chave de idempotência (x-idempotency-key). meta: $ref: '#/components/schemas/Meta' 422ResponseErrorFidoSignOptions: type: object required: - errors - meta properties: errors: type: array minItems: 1 items: type: object required: - code - title - detail properties: code: type: string enum: - RP_INVALIDA - STATUS_VINCULO_INVALIDO - STATUS_CONSENTIMENTO_INVALIDO - PARAMETRO_NAO_INFORMADO - PARAMETRO_INVALIDO - ERRO_IDEMPOTENCIA example: STATUS_VINCULO_INVALIDO description: | Códigos de erros previstos: - RP_INVALIDA: O identificador da Relying Party informado não pode ser verificado. - STATUS_VINCULO_INVALIDO: O status do vínculo de conta é tal que não permite assinatura. - STATUS_CONSENTIMENTO_INVALIDO: O status do consentimento não permite autorização. - PARAMETRO_NAO_INFORMADO: Parâmetro não informado. - PARAMETRO_INVALIDO: Parâmetro inválido. - ERRO_IDEMPOTENCIA: Erro idempotência. title: type: string maxLength: 255 pattern: '[\w\W\s]*' example: Permissões inválidas description: | Título específico do erro reportado, de acordo com o código enviado: - RP_INVALIDA: Relying party inválida. - STATUS_VINCULO_INVALIDO: Status do vínculo de conta inválido. - STATUS_CONSENTIMENTO_INVALIDO: Status do consentimento de pagamento inválido. - PARAMETRO_NAO_INFORMADO: Parâmetro não informado. - PARAMETRO_INVALIDO: Parâmetro inválido. - ERRO_IDEMPOTENCIA: Erro idempotência. detail: type: string maxLength: 2048 pattern: '[\w\W\s]*' example: 'Permissões inválidas' description: | Descrição específica do erro de acordo com o código reportado: - RP_INVALIDA: O identificador da Relying Party informado não pode ser verificado. - STATUS_VINCULO_INVALIDO: O status do vínculo de conta é tal que não permite assinatura. - STATUS_CONSENTIMENTO_INVALIDO: O status do consentimento não permite autorização. - PARAMETRO_NAO_INFORMADO: Parâmetro [nome_campo] obrigatório não informado. - PARAMETRO_INVALIDO: Parâmetro [nome_campo] não obedece as regras de formatação esperadas. - ERRO_IDEMPOTENCIA: Conteúdo da mensagem (claim data) diverge do conteúdo associado a esta chave de idempotência (x-idempotency-key). meta: $ref: '#/components/schemas/Meta' 422ResponseErrorFidoRegistration: type: object required: - errors - meta properties: errors: type: array minItems: 1 items: type: object required: - code - title - detail properties: code: type: string enum: - STATUS_VINCULO_INVALIDO - ORIGEM_FIDO_INVALIDA - RP_ID_HASH_INVALIDO - CHALLENGE_INVALIDO - PUBLIC_KEY_INVALIDA - EXTENSION_INVALIDA - PARAMETRO_NAO_INFORMADO - PARAMETRO_INVALIDO - ERRO_IDEMPOTENCIA example: STATUS_VINCULO_INVALIDO description: | Códigos de erros previstos: - STATUS_VINCULO_INVALIDO: O status do vínculo de conta é tal que não permite o registro de nova credencial. - ORIGEM_FIDO_INVALIDA: O valor contido no campo [response.clientDataJSON.origin](https://www.w3.org/TR/webauthn-2/#dom-authenticatorresponse-clientdatajson) não pode ser verificado. - RP_INVALIDA: O valor contido no campo [data.response.attestationObject.authData.rpIdHash](https://www.w3.org/TR/webauthn-2/#sctn-authenticator-data) não pode ser verificado. - CHALLENGE_INVALIDO: O campo [response.clientDataJSON.challenge](https://www.w3.org/TR/webauthn-2/#dom-authenticatorresponse-clientdatajson) possui valor codificado diferente do valor gerado pelo servidor. - PUBLIC_KEY_INVALIDA: A chave pública enviada é incompatível com as definições do servidor FIDO2. - EXTENSION_INVALIDA: As extensões extraídas são incompatíveis com as diretrizes de segurança do servidor FIDO2. - PARAMETRO_NAO_INFORMADO: Parâmetro não informado. - PARAMETRO_INVALIDO: Parâmetro inválido. - ERRO_IDEMPOTENCIA: Erro idempotência. title: type: string maxLength: 255 pattern: '[\w\W\s]*' example: Permissões inválidas description: | Título específico do erro reportado, de acordo com o código enviado: - STATUS_VINCULO_INVALIDO: Status inválido do vínculo de conta. - ORIGEM_FIDO_INVALIDA: "Origin" não pode ser verificada. - RP_INVALIDA: "RpIdHash" não pode ser verificado. - CHALLENGE_INVALIDO: Challenge inválido. - PUBLIC_KEY_INVALIDA: Chave pública inválida. - EXTENSION_INVALIDA: Extensões inválidas. - PARAMETRO_NAO_INFORMADO: Parâmetro não informado. - PARAMETRO_INVALIDO: Parâmetro inválido. - ERRO_IDEMPOTENCIA: Erro idempotência. detail: type: string maxLength: 2048 pattern: '[\w\W\s]*' example: 'Permissões inválidas' description: | Descrição específica do erro de acordo com o código reportado: - STATUS_VINCULO_INVALIDO: O status do vínculo de conta é tal que não permite o registro de nova credencial. - ORIGEM_FIDO_INVALIDA: O valor contido no campo [response.clientDataJSON.origin](https://www.w3.org/TR/webauthn-2/#dom-authenticatorresponse-clientdatajson) não pode ser verificado. - RP_INVALIDA: O valor contido no campo [response.attestationObject.authData.rpIdHash](https://www.w3.org/TR/webauthn-2/#sctn-authenticator-data) não pode ser verificado. - CHALLENGE_INVALIDO: O campo [response.clientDataJSON.challenge](https://www.w3.org/TR/webauthn-2/#dom-authenticatorresponse-clientdatajson) possui valor codificado diferente do valor gerado pelo servidor. - PUBLIC_KEY_INVALIDA: A chave pública enviada é incompatível com as definições do servidor FIDO2. - EXTENSION_INVALIDA: As extensões extraídas são incompatíveis com as diretrizes de segurança do servidor FIDO2. - PARAMETRO_NAO_INFORMADO: Parâmetro [nome_campo] obrigatório não informado. - PARAMETRO_INVALIDO: Parâmetro [nome_campo] não obedece as regras de formatação esperadas. - ERRO_IDEMPOTENCIA: Conteúdo da mensagem (claim data) diverge do conteúdo associado a esta chave de idempotência (x-idempotency-key). meta: $ref: '#/components/schemas/Meta' 422ResponseConsentsAuthorization: type: object required: - errors - meta properties: errors: type: array minItems: 1 items: type: object required: - code - title - detail properties: code: type: string enum: - STATUS_VINCULO_INVALIDO - STATUS_CONSENTIMENTO_INVALIDO - RISCO - FALTAM_SINAIS_OBRIGATORIOS_DA_PLATAFORMA - CONTA_DEBITO_DIVERGENTE_CONSENTIMENTO_VINCULO - PARAMETRO_NAO_INFORMADO - PARAMETRO_INVALIDO - ERRO_IDEMPOTENCIA example: STATUS_VINCULO_INVALIDO description: | Códigos de erros previstos: - STATUS_VINCULO_INVALIDO: O vínculo de conta não possui status AUTHORISED. - STATUS_CONSENTIMENTO_INVALIDO: O consentimento de pagamentos não possui status AWAITING_AUTHORISATION. - RISCO: Validação síncrona dos sinais de risco impediram a ativação do consentimento. - FALTAM_SINAIS_OBRIGATORIOS_DA_PLATAFORMA: Os sinais obrigatórios para a plataforma do usuário não foram enviados em sua totalidade. - CONTA_DEBITO_DIVERGENTE_CONSENTIMENTO_VINCULO: A conta de débito informada pelo iniciador não condiz com a conta de débito vinculada ao dispositivo. - PARAMETRO_NAO_INFORMADO: Parâmetro não informado. - PARAMETRO_INVALIDO: Parâmetro inválido. - ERRO_IDEMPOTENCIA: Erro idempotência. title: type: string maxLength: 255 pattern: '[\w\W\s]*' example: Permissões inválidas description: | Título específico do erro reportado, de acordo com o código enviado: - STATUS_VINCULO_INVALIDO: Status do vínculo de conta inválido. - STATUS_CONSENTIMENTO_INVALIDO: Status do consentimento inválido. - RISCO: Validação síncrona dos sinais de risco impediram a ativação do consentimento. - FALTAM_SINAIS_OBRIGATORIOS_DA_PLATAFORMA: Falta de sinais obrigatórios para a plataforma do usuário. - CONTA_DEBITO_DIVERGENTE_CONSENTIMENTO_VINCULO: A conta de débito informada pelo iniciador não condiz com a conta de débito vinculada ao dispositivo. - PARAMETRO_NAO_INFORMADO: Parâmetro não informado. - PARAMETRO_INVALIDO: Parâmetro inválido. - ERRO_IDEMPOTENCIA: Erro idempotência. detail: type: string maxLength: 2048 pattern: '[\w\W\s]*' example: 'Permissões inválidas' description: | Descrição específica do erro de acordo com o código reportado: - STATUS_VINCULO_INVALIDO: O vínculo de conta não possui status AUTHORISED. - STATUS_CONSENTIMENTO_INVALIDO: O consentimento de pagamentos não possui status AWAITING_AUTHORISATION. - RISCO: Validação síncrona dos sinais de risco impediram a ativação do consentimento. - FALTAM_SINAIS_OBRIGATORIOS_DA_PLATAFORMA: Os sinais obrigatórios para a plataforma do usuário não foram enviados em sua totalidade. - CONTA_DEBITO_DIVERGENTE_CONSENTIMENTO_VINCULO: A conta de débito informada pelo iniciador não condiz com a conta de débito vinculada ao dispositivo. - PARAMETRO_NAO_INFORMADO: Parâmetro [nome_campo] obrigatório não informado. - PARAMETRO_INVALIDO: Parâmetro [nome_campo] não obedece as regras de formatação esperadas. - ERRO_IDEMPOTENCIA: Conteúdo da mensagem (claim data) diverge do conteúdo associado a esta chave de idempotência (x-idempotency-key). meta: $ref: '#/components/schemas/Meta' BusinessEntity: type: object description: 'Usuário (pessoa jurídica) que encontra-se logado na iniciadora. [Restrição] Preenchimento obrigatório se usuário logado na iniciadora for um CNPJ (pessoa jurídica).' required: - document properties: document: type: object required: - identification - rel properties: identification: type: string maxLength: 14 description: Número do documento de identificação oficial do titular pessoa jurídica. example: '11111111111111' pattern: '^\d{14}$' rel: type: string maxLength: 4 description: Tipo do documento de identificação oficial do titular pessoa jurídica. example: CNPJ pattern: '^[A-Z]{4}$' CreateEnrollment: type: object required: - data properties: data: type: object description: Objeto contendo as informações para criação de vínculo de conta. required: - loggedUser - permissions properties: loggedUser: $ref: '#/components/schemas/LoggedUser' permissions: type: array minItems: 1 items: $ref: '#/components/schemas/EnumEnrollmentPermission' businessEntity: $ref: '#/components/schemas/BusinessEntity' debtorAccount: $ref: '#/components/schemas/DebtorAccount' enrollmentName: description: | [Restrição] Deve ser preenchido sempre que o usuário pagador inserir alguma informação no nome do vínculo/dispositivo tanto no iniciador como no detentor de conta type: string pattern: '[\w\W\s]*' maxLength: 140 example: Nome Dispositivo RiskSignals: type: object required: - data properties: data: type: object description: Informa a integridade do dispositivo e app required: - deviceId - osVersion - userTimeZoneOffset - language - screenDimensions - accountTenure properties: deviceId: type: string description: | ID único do dispositivo gerado pela plataforma. Utiliza-se a propriedade do sistema que identifica a combinação de usuário logado, chave de assinatura do aplicativo e dispositivo. [Android] Informação obtida através do [link](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID). [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor/). example: 00aa11bb22cc33dd isRootedDevice: type: boolean description: | Indica se o dispositivo atualmente está com permissão de “root”. [Restrição] Campos de envio obrigatório quando o sistema operacional utilizado pelo usuário durante a vinculação de conta ou realização do pagamento for Android ou iOS. example: false screenBrightness: type: number format: double description: | Indica o nível de brilho da tela do dispositivo. [Android] O valor é inteiro, tipicamente entre 0 a 255, podendo a faixa de valores variar de acordo com o fabricante do celular. Referência no [link](https://developer.android.com/reference/android/provider/Settings.System#SCREEN_BRIGHTNESS). [iOS] O valor é ponto flutuante entre “0.0” e “1.0”. Referência no [link](https://developer.apple.com/documentation/uikit/uiscreen/). [Restrição] Campos de envio obrigatório quando o sistema operacional utilizado pelo usuário durante a vinculação de conta ou realização do pagamento for Android ou iOS. example: 255 elapsedTimeSinceBoot: type: integer format: int64 description: | Indica por quanto tempo (em milissegundos) o dispositivo está ligado. [Android] Informação obtida através do [link](https://developer.android.com/reference/android/os/SystemClock#elapsedRealtime%28%29). [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/kernel/kern/). [Restrição] Campos de envio obrigatório quando o sistema operacional utilizado pelo usuário durante a vinculação de conta ou realização do pagamento for Android ou iOS. example: 6356027 osVersion: type: string description: | Versão do sistema operacional. [Android] Informação obtida através do [link](https://developer.android.com/reference/android/os/Build.VERSION#RELEASE). [iOS] - Informação obtida através do [link](https://developer.apple.com/documentation/uikit/uidevice/1620043-systemversion/). example: "14" userTimeZoneOffset: type: string description: | Indica a configuração de fuso horário do dispositivo do usuário, com o formato UTC offset: ±hh[:mm]. O formato especificado permite a omissão da parte correspondente aos minutos, caso esta última tenha valor zero. Assim, ambos os valores '-03:00' e '-03' são válidos e representam o mesmo fuso horário. [Android] Informação obtida através do [link](https://developer.android.com/reference/java/time/ZonedDateTime#getOffset()) ou, para versões anteriores à 8.0, [link](https://developer.android.com/reference/java/util/TimeZone#getOffset(long)). [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/foundation/timezone/). example: '-03' language: type: string description: | Indica o idioma do dispositivo no formato ISO 639-1. [Android] Informação obtida através do [link](https://developer.android.com/reference/java/util/Locale#getLanguage()). [iOS] - Informação obtida através do [link](https://developer.apple.com/documentation/foundation/locale/languagecode/). example: 'pt' screenDimensions: type: object description: | Dimensões que o aplicativo ocupa na tela do dispositivo. [Android] Informação obtida através do [link](https://developer.android.com/reference/android/view/WindowMetrics#getBounds()), ou, para versões anteriores à 11, [link](https://developer.android.com/reference/android/util/DisplayMetrics). [iOS] - Informação obtida através do [link](https://developer.apple.com/documentation/metal/mtlrasterizationratemap/3088873-screensize/). required: - height - width properties: height: type: integer description: Altura da tela, em pixels. example: 2340 width: type: integer description: Largura da tela, em pixels. example: 1080 accountTenure: type: string format: date pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' description: Data de cadastro do cliente na iniciadora. example: "2023-08-20" geolocation: type: object description: | Localização do usuário, obtida com seu consentimento. [Android] Informação obtida através do [link](https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderClient#public-abstract-tasklocation-getlastlocation) considerando as permissões necessárias. [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/corelocation/). [Restrição] A ITP deve solicitar ao usuário a permissão para compartilhamento de sua localização. Este campo poderá ser omitido caso o GPS esteja indisponível, isto é, sem sinal, ou em dispositivos sem o hardware necessário; ou caso o usuário negue o consentimento. properties: latitude: type: number example: -15.738602 longitude: type: number example: -47.926498 type: type: string enum: - COARSE - FINE - INFERRED example: FINE isCallingProgress: type: boolean description: | Indica chamada ativa no momento do vínculo. [Android] Informação obtida através do [link](https://developer.android.com/reference/android/media/AudioManager#getMode()). [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/callkit/). [Restrição] Caso o sinal de risco esteja disponível (cliente permitiu que fosse coletado), o mesmo deverá ser enviado example: false isDevModeEnabled: type: boolean description: Indica se o dispositivo está em modo de desenvolvedor. example: false isMockGPS: type: boolean description: | Indica se o dispositivo está usando um GPS falso. Deve ser enviado sempre que exista o campo geolocation com tipo `COARSE` ou `FINE`. [Android] Informação obtida através do [link](https://developer.android.com/reference/android/location/Location.html#isMock()) ou, para versões anteriores à 12, [link](https://developer.android.com/reference/android/location/Location.html#isFromMockProvider()). [iOS] Informação obtida através dos links: sourceInformation, [link](https://developer.apple.com/documentation/corelocation/cllocation/3861803-sourceinformation). isSimulatedBySoftware, [link](https://developer.apple.com/documentation/corelocation/cllocationsourceinformation/3861807-issimulatedbysoftware). example: false isEmulated: type: boolean description: Indica se o dispositivo é emulado ou real. example: false isMonkeyRunner: type: boolean description: Indica o uso do MonkeyRunner. example: false isCharging: type: boolean description: | Indica se a bateria do dispositivo está sendo carregada. [Android] Informação obtida através do [link](https://developer.android.com/reference/android/os/BatteryManager). [iOS] Informações obtida através do [link](https://developer.apple.com/documentation/uikit/uidevice/1620045-batterymonitoringenabled/). example: false antennaInformation: type: string description: Indica em qual antena o dispositivo está conectado. example: "CellIdentityLte:{ mCi=2******60 mPci=274 mTac=5***1 mEarfcn=9510 mBands=[28] mBandwidth=2147483647 mMcc=724 mMnc=10 mAlphaLong=VIVO mAlphaShort=VIVO mAdditionalPlmns={} mCsgInfo=null}, CellIdentityLte:{ mCi=1*****01 mPci=361 mTac=3***6 mEarfcn=9410 mBands=[28] mBandwidth=2147483647 mMcc=724 mMnc=03 mAlphaLong=TIMBRASIL mAlphaShort=TIMBRASIL mAdditionalPlmns={} mCsgInfo=null}" isUsbConnected: type: boolean description: Indica se o dispositivo está conectado a outro dispositivo via USB. example: false integrity: type: object description: | Informa a integridade do dispositivo e app. [Android] Conforme documentação Play API Integrity, [link](https://developer.android.com/google/play/integrity/overview?hl=pt-br). [iOS] Conforme documentação App Attest, [link](https://developer.apple.com/documentation/devicecheck/establishing-your-app-s-integrity). properties: appRecognitionVerdict: type: string description: Informa a integridade do app example: "PLAY_RECOGNIZED" deviceRecognitionVerdict: type: string description: Informa a integridade do dispositivo example: '[\"MEETS_DEVICE_INTEGRITY\"]' ConsentAuthorization: type: object required: - data properties: data: type: object description: Objeto que contém sinais de risco e o id do vínculo de conta para avaliação da autorização de um consentimento de pagamento. required: - enrollmentId - riskSignals - fidoAssertion properties: enrollmentId: $ref: '#/components/schemas/enrollmentId' riskSignals: type: object required: - deviceId - osVersion - userTimeZoneOffset - language - screenDimensions - accountTenure description: | Conjunto de sinais extraídos do dispositivo do usuário para ativação do consentimento de pagamento. A obrigatoriedade das informações variam de acordo com a plataforma utilizada. properties: deviceId: type: string description: | ID único do dispositivo gerado pela plataforma. Utiliza-se a propriedade do sistema que identifica a combinação de usuário logado, chave de assinatura do aplicativo e dispositivo. [Android] Informação obtida através do [link](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID). [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor/). isRootedDevice: type: boolean description: | Indica se o dispositivo atualmente está com permissão de “root”. [Restrição] Campos de envio obrigatório quando o sistema operacional utilizado pelo usuário durante a vinculação de conta ou realização do pagamento for Android ou iOS. screenBrightness: type: number format: double description: | Indica o nível de brilho da tela do dispositivo. [Android] O valor é inteiro, tipicamente entre 0 a 255, podendo a faixa de valores variar de acordo com o fabricante do celular. Referência no [link](https://developer.android.com/reference/android/provider/Settings.System#SCREEN_BRIGHTNESS). [iOS] O valor é ponto flutuante entre “0.0” e “1.0”. Referência no [link](https://developer.apple.com/documentation/uikit/uiscreen/). [Restrição] Campos de envio obrigatório quando o sistema operacional utilizado pelo usuário durante a vinculação de conta ou realização do pagamento for Android ou iOS. elapsedTimeSinceBoot: type: integer format: int64 description: | Indica por quanto tempo (em milissegundos) o dispositivo está ligado. [Android] Informação obtida através do [link](https://developer.android.com/reference/android/os/SystemClock#elapsedRealtime%28%29). [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/kernel/kern/). [Restrição] Campos de envio obrigatório quando o sistema operacional utilizado pelo usuário durante a vinculação de conta ou realização do pagamento for Android ou iOS. osVersion: type: string description: | Versão do sistema operacional. [Android] Informação obtida através do [link](https://developer.android.com/reference/android/os/Build.VERSION#RELEASE). [iOS] - Informação obtida através do [link](https://developer.apple.com/documentation/uikit/uidevice/1620043-systemversion/). userTimeZoneOffset: type: string description: | Indica a configuração de fuso horário do dispositivo do usuário, com o formato UTC offset: ±hh[:mm]. O formato especificado permite a omissão da parte correspondente aos minutos, caso esta última tenha valor zero. Assim, ambos os valores '-03:00' e '-03' são válidos e representam o mesmo fuso horário. [Android] Informação obtida através do [link](https://developer.android.com/reference/java/time/ZonedDateTime#getOffset()) ou, para versões anteriores à 8.0, [link](https://developer.android.com/reference/java/util/TimeZone#getOffset(long)). [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/foundation/timezone/). example: '-03' language: type: string description: | Indica o idioma do dispositivo no formato ISO 639-1. [Android] Informação obtida através do [link](https://developer.android.com/reference/java/util/Locale#getLanguage()). [iOS] - Informação obtida através do [link](https://developer.apple.com/documentation/foundation/locale/languagecode/). example: 'pt' screenDimensions: type: object description: | Dimensões que o aplicativo ocupa na tela do dispositivo. [Android] Informação obtida através do [link](https://developer.android.com/reference/android/view/WindowMetrics#getBounds()), ou, para versões anteriores à 11, [link](https://developer.android.com/reference/android/util/DisplayMetrics). [iOS] - Informação obtida através do [link](https://developer.apple.com/documentation/metal/mtlrasterizationratemap/3088873-screensize/). required: - height - width properties: height: type: integer description: Altura da tela, em pixels. width: type: integer description: Largura da tela, em pixels. accountTenure: type: string format: date pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' description: Data de cadastro do cliente na iniciadora. example: 2023-09-01 geolocation: type: object description: | Localização do usuário, obtida com seu consentimento. [Android] Informação obtida através do [link](https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderClient#public-abstract-tasklocation-getlastlocation) considerando as permissões necessárias. [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/corelocation/). [Restrição] A ITP deve solicitar ao usuário a permissão para compartilhamento de sua localização. Este campo poderá ser omitido caso o GPS esteja indisponível, isto é, sem sinal, ou em dispositivos sem o hardware necessário; ou caso o usuário negue o consentimento. properties: latitude: type: number longitude: type: number type: type: string enum: - COARSE - FINE - INFERRED isCallingProgress: type: boolean description: | Indica chamada ativa no momento do vínculo. [Android] Informação obtida através do [link](https://developer.android.com/reference/android/media/AudioManager#getMode()). [iOS] Informação obtida através do [link](https://developer.apple.com/documentation/callkit/). [Restrição] Caso o sinal de risco esteja disponível (cliente permitiu que fosse coletado), o mesmo deverá ser enviado isDevModeEnabled: type: boolean description: Indica se o dispositivo está em modo de desenvolvedor. isMockGPS: type: boolean description: | Indica se o dispositivo está usando um GPS falso. Deve ser enviado sempre que exista o campo geolocation com tipo `COARSE` ou `FINE`. [Android] Informação obtida através do [link](https://developer.android.com/reference/android/location/Location.html#isMock()) ou, para versões anteriores à 12, [link](https://developer.android.com/reference/android/location/Location.html#isFromMockProvider()). [iOS] Informação obtida através dos links: sourceInformation, [link](https://developer.apple.com/documentation/corelocation/cllocation/3861803-sourceinformation). isSimulatedBySoftware, [link](https://developer.apple.com/documentation/corelocation/cllocationsourceinformation/3861807-issimulatedbysoftware). isEmulated: type: boolean description: Indica se o dispositivo é emulado ou real. isMonkeyRunner: type: boolean description: Indica o uso do MonkeyRunner. isCharging: type: boolean description: | Indica se a bateria do dispositivo está sendo carregada. [Android] Informação obtida através do [link](https://developer.android.com/reference/android/os/BatteryManager). [iOS] Informações obtida através do [link](https://developer.apple.com/documentation/uikit/uidevice/1620045-batterymonitoringenabled/). antennaInformation: type: string description: Indica em qual antena o dispositivo está conectado. isUsbConnected: type: boolean description: Indica se o dispositivo está conectado a outro dispositivo via USB. integrity: type: object description: | Informa a integridade do dispositivo e app. [Android] Conforme documentação Play API Integrity, [link](https://developer.android.com/google/play/integrity/overview?hl=pt-br). [iOS] Conforme documentação App Attest, [link](https://developer.apple.com/documentation/devicecheck/establishing-your-app-s-integrity). properties: appRecognitionVerdict: type: string description: Informa a integridade do app deviceRecognitionVerdict: type: string description: Informa a integridade do dispositivo fidoAssertion: type: object description: Dados da asserção required: - id - rawId - type - response properties: id: type: string description: Identificador da credencial. Deve ser o valor em formato base64url do campo rawId da chave pública utilizada no processo de autenticação. rawId: type: string description: Identificador da credencial. Para envio à detentora de conta, o valor deste atributo deve ser idêntico ao valor do atributo id. type: type: string description: Tipo da credencial. response: type: object description: Traz as informações da resposta a asserção. required: - clientDataJSON - authenticatorData - signature - userHandle properties: clientDataJSON: type: string format: bytes description: Agrega as informações do aplicativo que gerou a credencial. Deve ser enviado no formato base64url para a detentora de conta. authenticatorData: type: string format: bytes description: Representa a estrutura de dados do autenticador. Deve ser enviado no formato base64url para a detentora de conta. signature: type: string format: bytes description: Sequência de bytes contendo a assinatura. Deve ser enviado no formato base64url para a detentora de conta. userHandle: type: string format: bytes description: Nome de usuário que foi enviado durante a criação da credencial. Deve ser enviado no formato base64url para a detentora de conta. clientExtensionResults: type: object description: Estrutura para extensão de resultados additionalProperties: true DebtorAccount: type: object description: | Objeto que contém a identificação da conta de origem do pagador. As informações quanto à conta de origem do pagador poderão ser trazidas no vínculo para a detentora, caso a iniciadora tenha coletado essas informações do cliente. Do contrário, será coletada na detentora e trazida para a iniciadora como resposta à criação do vínculo. required: - ispb - number - accountType properties: ispb: type: string minLength: 8 maxLength: 8 pattern: '^[0-9]{8}$' example: '12345678' description: | Deve ser preenchido com o ISPB (Identificador do Sistema de Pagamentos Brasileiros) do participante do SPI (Sistema de pagamentos instantâneos) somente com números. issuer: type: string minLength: 1 maxLength: 4 pattern: '^[0-9]{1,4}$' example: '1774' description: | Código da Agência emissora da conta sem dígito. (Agência é a dependência destinada ao atendimento aos clientes, ao público em geral e aos associados de cooperativas de crédito, no exercício de atividades da instituição, não podendo ser móvel ou transitória). [Restrição] Preenchimento obrigatório para os seguintes tipos de conta: CACC (CONTA_DEPOSITO_A_VISTA) e SVGS (CONTA_POUPANCA). number: type: string minLength: 1 maxLength: 20 pattern: '^[0-9]{1,20}$' example: '1234567890' description: | Deve ser preenchido com o número da conta transacional do usuário pagador, com dígito verificador (se este existir), se houver valor alfanumérico, este deve ser convertido para 0. accountType: $ref: '#/components/schemas/EnumAccountPaymentsType' enrollmentId: type: string maxLength: 256 pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$' example: 'urn:bancoex:C1DD33123' description: | Identificador único do vínculo de conta criado para a iniciação de pagamento solicitada. Deverá ser um URN - Uniform Resource Name. Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN seja um identificador de recurso persistente e independente da localização. Considerando a string urn:bancoex:C1DD33123 como exemplo para enrollmentId temos: - o namespace(urn) - o identificador associado ao namespace da instituição detentora de conta (bancoex) - o identificador específico dentro do namespace (C1DD33123). Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141). consentId: type: string maxLength: 256 pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$' description: | O consentId é o identificador único do consentimento e deverá ser um URN - Uniform Resource Name. Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN seja um identificador de recurso persistente e independente da localização. Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos: - o namespace(urn) - o identificador associado ao namespace da instituição detentora de conta (bancoex) - o identificador específico dentro do namespace (C1DD33123). Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141). EnrollmentRejectionReason: type: string enum: - REJEITADO_TEMPO_EXPIRADO_RISK_SIGNALS - REJEITADO_TEMPO_EXPIRADO_ACCOUNT_HOLDER_VALIDATION - REJEITADO_TEMPO_EXPIRADO_ENROLLMENT - REJEITADO_MAXIMO_CHALLENGES_ATINGIDO - REJEITADO_MANUALMENTE - REJEITADO_DISPOSITIVO_INCOMPATIVEL - REJEITADO_FALHA_INFRAESTRUTURA - REJEITADO_FALHA_HYBRID_FLOW - REJEITADO_FALHA_FIDO - REJEITADO_SEGURANCA_INTERNA - REJEITADO_OUTRO description: | Indica o motivo do cancelamento do vínculo de conta. Valores possíveis: • REJEITADO_TEMPO_EXPIRADO_RISK_SIGNALS: Expiração automática devido a timeout no status "AWAITING_RISK_SIGNALS". O envio de sinais de risco não foi concluído. • REJEITADO_TEMPO_EXPIRADO_ACCOUNT_HOLDER_VALIDATION: Expiração automática devido a timeout no status "AWAITING_ACCOUNT_HOLDER_VALIDATION". O processo de redirecionamento não foi concluído com sucesso. • REJEITADO_TEMPO_EXPIRADO_ENROLLMENT: Expiração automática devido a timeout no status "AWAITING_ENROLLMENT". O processo de criação e envio de credenciais FIDO2 não foi concluído com sucesso. • REJEITADO_MAXIMO_CHALLENGES_ATINGIDO: Vínculo de conta rejeitado devido várias tentativas vínculo frustradas. • REJEITADO_MANUALMENTE: Cancelamento manual, explicitamente a pedido do usuário. • REJEITADO_DISPOSITIVO_INCOMPATIVEL: Dispositivo não suporta o protocolo FIDO. • REJEITADO_FALHA_INFRAESTRUTURA: Falha na infraestrutura na detentora. • REJEITADO_SEGURANCA_INTERNA: Vínculo de conta rejeitado devido à política de segurança de instituição detentora ou iniciadora considerando a análise dos sinais de risco. • REJEITADO_FALHA_HYBRID_FLOW: Vínculo de conta rejeitado por falha técnica no processo de redirecionamento (por exemplo: troca de authorization code por access token no FAPI Hybrid flow) • REJEITADO_FALHA_FIDO: Vínculo de conta rejeitado por falha técnica no processo de validação ou associação da credencial pública FIDO. • REJEITADO_OUTRO: Outros motivos não descritos pelas demais. Indicar, neste caso, o motivo em "additionalInformation". EnrollmentRevocationReason: type: string enum: - REVOGADO_MANUALMENTE - REVOGADO_VALIDADE_EXPIRADA - REVOGADO_FALHA_INFRAESTRUTURA - REVOGADO_SEGURANCA_INTERNA - REVOGADO_OUTRO description: | Indica o motivo do cancelamento do vínculo de conta. Valores possíveis: • REVOGADO_MANUALMENTE: Cancelamento manual, explicitamente a mando do usuário. • REVOGADO_VALIDADE_EXPIRADA: Expiração automática ao atingir o prazo limite do vínculo de conta. • REVOGADO_FALHA_INFRAESTRUTURA: Falha na infraestrutura na detentora. • REVOGADO_SEGURANCA_INTERNA: Vínculo de conta rejeitado devido à políticas de segurança tanto da iniciadora quanto da detentora. • REVOGADO_OUTRO: Outros motivos não descritos pelas demais. Indicar, neste caso, o motivo em "additionalInformation". EnrollmentFidoRegistration: type: object description: Objeto que contém a resposta da criação de uma nova credencial FIDO2. required: - data properties: data: type: object required: - id - rawId - response properties: id: type: string description: Identificador da credencial. Deve ser o valor em formato base64url do campo rawId da chave pública criada no processo de registro do dispositivo. rawId: type: string description: Identificador da credencial. Para envio ao detentor, o valor deste atributo deve ser idêntico ao valor do atributo id. response: type: object required: - clientDataJSON - attestationObject properties: clientDataJSON: type: string format: bytes description: Agrega as informações do aplicativo que gerou a credencial. Deve ser enviado em formato base64url para o detentor. example: eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiTVRBeU16azRhMkZxYUhOclpHcG9ZV3R6Iiwib3JpZ2luIjoiaHR0cHM6Ly93d3cudzMub3JnIiwiY3Jvc3NPcmlnaW4iOmZhbHNlfQ== attestationObject: type: string format: bytes description: Agrega as informações da chave pública da credencial. Deve ser enviado em formato base64url para o detentor. example: o2NmbXRoZmlkby11MmZnYXR0U3RtdKJjc2lnWEcwRQIgZyUMtm43lCCqzoIbSDeoCUpJzh/VSchwQNxFR2UM/DsCIQDWpp4+/nklI7G2HPVZCIqw08R9omcn9kJrKPsuIO5k22N4NWOBWQFIMIIBRDCB6qADAgECAgkBcwb/////QwMwCgYIKoZIzj0EAwIwGzEZMBcGA1UEAxMQR251YmJ5IEhTTSBDQSAwMDAiGA8yMDEyMDYwMTAwMDAwMFoYDzIwNjIwNTMxMjM1OTU5WjAwMRkwFwYDVQQDExBHb29nbGUgR251YmJ5IHYwMRMwEQYDVQQtAwoAAXMG/////0MDMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAELuWVatmVMfAOr53T6fh7X/iIgqKz5SCnKTBUnFo3FtbbslUGi8Qetr1nbyr6BVqGHqcJiXyvF6rVbj5fZqbiBTAKBggqhkjOPQQDAgNJADBGAiEA5GaaFxllkOr24b5s6Qu/4ch3ZgU+3GIAv/D8kj4EGMgCIQDXYfaVAMe7Jzht3ra4TaCKKpaUxp+nRkIO/SKiQZPjgmhhdXRoRGF0YVjEIYvQ2gJvAWdQFFLPcpStJJWLnFoQO0f5vT1T51P/rm5BAAAAAAAAAAAAAAAAAAAAAAAAAAAAQCJ8iR8CqPctr4tz/YAICs6bDwVqhDzdt3oohVVWRQruy+E1AFeEWgPMWsIS4UU0n+sRGW3m2K90z1d9ujtFPxylAQIDJiABIVggaUaH0XDx9F2UOrT0ao02wL+xjGR/BxnCB4WOU2w0H8YiWCATuK2PUWGPophwPsfNIC3CZw4TGlCMEq1R15cw1w5KDg== authenticatorAttachment: type: string description: Indica a forma de comunicação com o autenticador. example: platform, cross-platform type: type: string description: Tipo da credencial example: public-key clientExtensionResults: type: object description: Extensões da credencial, específicas por plataforma additionalProperties: true EnrollmentFidoOptionsInput: type: object required: - data properties: data: type: object description: | Objeto que contém as informações sobre a Relying Party e a plataforma sobre a qual o usuário está utilizando o serviço da iniciadora para utilização de FIDO2. required: - rp - platform properties: rp: type: string description: Identificador único da Relying Party, que corresponde ao valor do CN do certificado de transporte da iniciadora. platform: type: string description: | Indica a plataforma em que o usuário está utilizando a credencial FIDO2. Este campo permite que o servidor FIDO inclua extensões de acordo com a plataforma utilizada. enum: - ANDROID - BROWSER - CROSS_PLATFORM - IOS EnrollmentFidoRegistrationOptions: type: object required: - data - meta properties: data: type: object description: Objeto que contém as informações necessárias para registro de uma nova credencial FIDO2. required: - enrollmentId - rp - user - challenge - pubKeyCredParams properties: enrollmentId: $ref: '#/components/schemas/enrollmentId' rp: $ref: '#/components/schemas/FidoRelyingParty' user: $ref: '#/components/schemas/FidoUser' challenge: type: string format: byte description: Sequência de bytes aleatórios gerados pelo servidor FIDO2. Deve ser o valor em formato base64url sem padding. pubKeyCredParams: type: array items: $ref: '#/components/schemas/FidoPublicKeyCredentialCreationOptions' timeout: type: integer description: Timeout, em milissegundos, para registro da credencial FIDO2. excludeCredentials: type: array items: $ref: '#/components/schemas/FidoPublicKeyCredentialDescriptor' authenticatorSelection: $ref: '#/components/schemas/FidoAuthenticatorSelectionCriteria' attestation: type: string description: Indica o tipo de attestation que o autenticador pode utilizar. example: none, indirect, direct, enterprise attestationFormats: type: array description: Indica as preferências de formato sobre o campo attestation. items: type: string example: packed, tpm, android-key, android-safetynet, fido-u2f, apple, none extensions: type: object description: Campo de extensão com opções que variam por plataforma. additionalProperties: true meta: $ref: '#/components/schemas/Meta' EnrollmentFidoSignOptions: type: object required: - data - meta properties: data: type: object description: Objeto que contém as informações necessárias para assinatura com uma credencial FIDO2 previamente registrada. required: - challenge properties: challenge: type: string format: byte description: Sequência de bytes aleatórios gerados pelo servidor FIDO2. Deve ser o valor em formato base64url sem padding. timeout: type: integer format: int32 description: Expiração, em milissegundos, do challenge. rpId: type: string description: Identificador da Relying Party. allowCredentials: type: array items: $ref: '#/components/schemas/FidoPublicKeyCredentialDescriptor' userVerification: type: string example: required, preferred, discouraged extensions: type: object description: Campo de extensão com opções que variam por plataforma. additionalProperties: true meta: $ref: '#/components/schemas/Meta' EnumAccountPaymentsType: type: string enum: - CACC - SVGS - TRAN example: CACC description: | Tipos de contas usadas para pagamento via Pix. Modalidades tradicionais previstas pela Resolução 4.753, não contemplando contas vinculadas, conta de domiciliados no exterior, contas em moedas estrangeiras e conta correspondente moeda eletrônica. Segue descrição de cada valor do ENUM para o escopo do Pix. CACC - Current - Conta Corrente. SVGS - Savings - Conta de Poupança. TRAN - TransactingAccount - Conta de Pagamento pré-paga. EnumEnrollmentPermission: type: string enum: - PAYMENTS_INITIATE example: PAYMENTS_INITIATE description: | Permissões atribuídas ao vínculo de conta: • PAYMENTS_INITIATE: Iniciação de pagamentos sem redirecionamento à detentora. EnumEnrollmentCancelledFrom: type: string enum: - INICIADORA - DETENTORA description: | Campo utilizado para informar o meio pelo qual foi realizado o cancelamento do vínculo de conta. Valores possíveis: INICIADORA - Vínculo de conta nos canais da iniciadora. DETENTORA - Vínculo de conta nos canais da detentora. EnumEnrollmentStatus: type: string enum: - AWAITING_RISK_SIGNALS - AWAITING_ACCOUNT_HOLDER_VALIDATION - AWAITING_ENROLLMENT - AUTHORISED - REVOKED - REJECTED description: | Status do vínculo de conta: • AWAITING_RISK_SIGNALS: Vínculo de conta criado e aguardando envio dos sinais de risco para a dentora. • AWAITING_ACCOUNT_HOLDER_VALIDATION: Vínculo de conta aguardando autorização no ambiente da detentora. • AWAITING_ENROLLMENT: Vínculo de conta autorizado no ambiente da detentora e aguardando o vínculo de credenciais (FIDO2). • AUTHORISED: Vínculo de conta pronto para uso. • REVOKED: Vínculo de conta revogado. • REJECTED: Vínculo de conta rejeitado. FidoAuthenticatorSelectionCriteria: type: object description: Restrições adicionais sobre os tipos de autenticadores permitidos para o registro. properties: authenticatorAttachment: type: string description: 'Indica os tipos de autenticadores suportados (ex: Sistema Operacional ou Cross-Platform como uma chave USB)' example: platform, cross-platform userVerification: type: string description: Indica o tipo de "discoverability" da credencial. example: discouraged, preferred, required requireResidentKey: type: boolean description: Indica o requisito de verificação do usuário. residentKey: type: string description: Indica o requisito de verificação do usuário. FidoRelyingParty: type: object required: - id - name properties: id: type: string description: Identificador único da Relying Party. Esse campo deve ser preenchido com o valor que é enviado na requisição no campo /data/rp. name: type: string description: Nome amigável da Relying Party para exibição aos usuários. Pode ser obtido através do Software Statement Assertion, atributo software_client_name. FidoUser: type: object required: - id - name - displayName properties: id: type: string description: | Identificador único do usuário sob registro em formato base64. A conversão deste valor para o formato original (BufferSource ou ArrayBuffer) não deve ultrapassar 64 bytes. O identificador único deve ser opaco, ou seja, não deve carregar dados pessoais sobre o usuário, por exemplo (não exaustivo) um UUID RFC4122 cumpre com os requisitos desse campo name: type: string description: Identificador do usuário human-readable. displayName: type: string description: Identificador do usuário para fins de apresentação. FidoPublicKeyCredentialCreationOptions: type: object required: - alg - type properties: alg: type: integer description: Identificador do algoritmo (COSE) example: -7 type: type: string description: Identificador do tipo de credencial. example: public-key FidoPublicKeyCredentialDescriptor: type: object required: - id - type properties: id: type: string description: Identificador único da credencial. type: type: string description: Identificador do tipo de credencial. example: public-key LoggedUser: type: object description: Usuário (pessoa natural) que encontra-se logado na iniciadora. required: - document properties: document: type: object required: - identification - rel properties: identification: type: string maxLength: 11 description: Número do documento de identificação oficial do usuário. example: '11111111111' pattern: '^\d{11}$' rel: type: string maxLength: 3 description: Tipo do documento de identificação oficial do usuário. example: CPF pattern: '^[A-Z]{3}$' Meta: type: object description: Meta informação referente a API requisitada. required: - requestDateTime properties: requestDateTime: description: 'Data e hora da consulta, conforme especificação RFC-3339, timezone UTC(UTC time format).' type: string maxLength: 20 format: date-time example: '2023-07-12T08:30:00Z' LinkSingle: type: object description: Referências para outros recusos da API requisitada. required: - self properties: self: type: string format: url maxLength: 2000 description: URI completo que gerou a resposta atual. example: 'https://api.banco.com.br/open-banking/api/v2/resource' ResponseError: type: object required: - errors properties: errors: type: array minItems: 1 maxItems: 13 items: type: object required: - code - title - detail 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 meta: type: object description: Meta informações referente à API requisitada. required: - requestDateTime properties: requestDateTime: description: 'Data e hora da consulta, conforme especificação RFC-3339, timezone UTC(UTC time format).' type: string maxLength: 20 format: date-time example: '2023-07-12T08:30:00Z' ResponseCreateEnrollment: type: object required: - data - links - meta properties: data: type: object description: Objeto contendo as informações de resposta da criação de vínculo de conta. required: - enrollmentId - creationDateTime - status - statusUpdateDateTime - permissions - loggedUser properties: enrollmentId: $ref: '#/components/schemas/enrollmentId' creationDateTime: type: string format: date-time example: '2023-07-12T08:30:00Z' pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' maxLength: 20 description: O instante em que o vínculo de conta foi criado no ambiente da detentora. status: $ref: '#/components/schemas/EnumEnrollmentStatus' statusUpdateDateTime: type: string format: date-time example: '2023-07-12T08:30:00Z' pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' maxLength: 20 description: O instante em que ocorreu a última alteração de status do vínculo de conta. permissions: type: array minItems: 1 items: $ref: '#/components/schemas/EnumEnrollmentPermission' expirationDateTime: type: string format: date-time example: '2023-07-12T08:30:00Z' pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' maxLength: 20 description: | Data e hora definida pelo usuário em que o vínculo do dispositivo deve expirar, perdendo sua validade. [Restrição] Campo obrigatório que deverá ser retornado quando o vínculo de dispositivo estiver ou passar pelo estado AUTHORISED; loggedUser: $ref: '#/components/schemas/LoggedUser' businessEntity: $ref: '#/components/schemas/BusinessEntity' debtorAccount: $ref: '#/components/schemas/DebtorAccount' enrollmentName: description: | [Restrição] Deve ser preenchido sempre que o usuário pagador inserir alguma informação no nome do vínculo/dispositivo tanto no iniciador como no detentor de conta type: string pattern: '[\w\W\s]*' maxLength: 140 example: Nome Dispositivo links: $ref: '#/components/schemas/LinkSingle' meta: $ref: '#/components/schemas/Meta' ResponseEnrollment: type: object required: - data - links - meta properties: data: type: object description: Objeto que agrupa as informações de qual foi o usuário logado que solicitou o cancelamento do vínculo de conta. required: - enrollmentId - creationDateTime - status - statusUpdateDateTime - permissions - loggedUser properties: enrollmentId: $ref: '#/components/schemas/enrollmentId' creationDateTime: type: string format: date-time example: '2023-07-12T08:30:00Z' pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' maxLength: 20 description: O instante em que o vínculo de conta foi criado no ambiente da detentora. status: $ref: '#/components/schemas/EnumEnrollmentStatus' statusUpdateDateTime: type: string format: date-time example: '2023-07-12T08:30:00Z' pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' maxLength: 20 description: O instante em que ocorreu a última alteração de status do vínculo de conta. permissions: type: array minItems: 1 items: $ref: '#/components/schemas/EnumEnrollmentPermission' expirationDateTime: type: string format: date-time example: '2023-07-12T08:30:00Z' pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' maxLength: 20 description: | Data e hora definida pelo usuário em que o vínculo do dispositivo deve expirar, perdendo sua validade. [Restrição] Campo obrigatório que deverá ser retornado quando o vínculo de dispositivo estiver ou passar pelo estado AUTHORISED; loggedUser: $ref: '#/components/schemas/LoggedUser' businessEntity: $ref: '#/components/schemas/BusinessEntity' debtorAccount: allOf: - $ref: '#/components/schemas/DebtorAccount' - type: object description: | Objeto que contém a identificação da conta de origem do pagador. As informações quanto à conta de origem do pagador poderão ser trazidas no vínculo para a detentora, caso a iniciadora tenha coletado essas informações do cliente. Do contrário, será coletada na detentora e trazida para a iniciadora como resposta à criação do vínculo. [ Restrição ] Deve obrigatoriamente ser preenchido nos status AWAITING_ENROLLMENT, AUTHORISED e REVOKED e não deve ser alterado. cancellation: type: object required: - cancelledFrom - reason properties: cancelledBy: type: object description: | Informação relacionada ao usuário pagador que solicitou o cancelamento do vínculo de conta. Pode estar ausente em cenários de processos automatizados realizarem o cancelamento do vínculo, por exemplo, por data de expiração. required: - document properties: document: type: object description: Objeto que consolida os dados do documento do usuário que solicitou o cancelamento. required: - identification - rel properties: identification: type: string maxLength: 11 description: Número do documento do usuário responsável pelo cancelamento do vínculo de conta. example: '11111111111' pattern: '^\d{11}$' rel: type: string maxLength: 3 description: Tipo do documento do usuário responsável pelo cancelamento do vínculo de conta. example: CPF pattern: '^[A-Z]{3}$' reason: oneOf: - type: object required: - rejectionReason description: Motivo da rejeição do vínculo de conta. properties: rejectionReason: $ref: '#/components/schemas/EnrollmentRejectionReason' - type: object required: - revocationReason description: Motivo da revogação do vínculo de conta. properties: revocationReason: $ref: '#/components/schemas/EnrollmentRevocationReason' additionalInformation: type: string pattern: '[\w\W\s]*' example: Contrato entre iniciadora e detentora interrompido maxLength: 2048 cancelledFrom: $ref: '#/components/schemas/EnumEnrollmentCancelledFrom' rejectedAt: type: string format: date-time example: '2023-07-12T08:30:00Z' pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' maxLength: 20 description: Instante de rejeição do vínculo de conta no ambiente da detentora. transactionLimit: type: string minLength: 4 maxLength: 19 pattern: '^((\d{1,16}\.\d{2}))$' example: '100000.12' description: | Valor máximo, por transação, admitido para este vínculo de conta. Este limite não garante a autorização de iniciações de pagamento; servindo como referência para a iniciadora evitar a criação de consentimentos de valores tais que, garantidamente, não serão autorizados. [Restrição] Campo de preenchimento obrigatório pelos participantes quando o campo `status` for preenchido com os valores `AUTHORISED` ou `AWAITING_ENROLLMENT`. dailyLimit: type: string minLength: 4 maxLength: 19 pattern: '^((\d{1,16}\.\d{2}))$' example: '100000.12' description: | Limite diário cumulativo para este vínculo de conta. Este limite não garante a autorização de iniciações de pagamento; servindo como referência para a iniciadora evitar a criação de consentimentos para valores tais que, garantidamente, não serão autorizados. [Restrição] Campo de preenchimento obrigatório pelos participantes quando o campo `status` for preenchido com os valores `AUTHORISED` ou `AWAITING_ENROLLMENT`. enrollmentName: description: | [Restrição] Deve ser preenchido sempre que o usuário pagador inserir alguma informação no nome do vínculo/dispositivo tanto no iniciador como no detentor de conta type: string pattern: '[\w\W\s]*' maxLength: 140 example: Nome Dispositivo links: $ref: '#/components/schemas/LinkSingle' meta: $ref: '#/components/schemas/Meta' XFapiInteractionId: type: string format: uuid minLength: 1 maxLength: 36 pattern: '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$' example: d78fc4e5-37ca-4da3-adf2-9b082bf92280 parameters: consentId: name: consentId in: path description: | O consentId é o identificador único do consentimento e deverá ser um URN - Uniform Resource Name. Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN seja um identificador de recurso persistente e independente da localização. Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos: - o namespace(urn) - o identificador associado ao namespace da instituição detentora de conta (bancoex) - o identificador específico dentro do namespace (C1DD33123). Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141). required: true schema: type: string pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$' maxLength: 256 enrollmentId: name: enrollmentId in: path required: true description: | Identificador único do vínculo de conta criado para a iniciação de pagamento solicitada. Deverá ser um URN - Uniform Resource Name. Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN seja um identificador de recurso persistente e independente da localização. Considerando a string urn:bancoex:C1DD33123 como exemplo para enrollmentId temos: - o namespace(urn) - o identificador associado ao namespace da instituição detentora de conta (bancoex) - o identificador específico dentro do namespace (C1DD33123). Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141). schema: $ref: '#/components/schemas/enrollmentId' 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 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 a iniciadora. 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 a iniciadora. required: false schema: type: string pattern: '[\w\W\s]*' minLength: 1 maxLength: 100 xFapiInteractionId: name: x-fapi-interaction-id in: header description: Um UUID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela iniciadora (client) e o seu valor deve ser "espelhado" pela detentora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a detentora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP status code 400. A iniciadora deve acatar o valor recebido da detentora. required: true schema: type: string format: uuid minLength: 1 maxLength: 36 pattern: '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$' example: d78fc4e5-37ca-4da3-adf2-9b082bf92280 XIdempotencyKey: name: x-idempotency-key in: header description: Cabeçalho HTTP personalizado. Identificador de solicitação exclusivo para suportar a idempotência. required: true schema: type: string maxLength: 40 pattern: ^(?!\s)(.*)(\S)$ securitySchemes: OpenId: type: openIdConnect openIdConnectUrl: 'https://auth.mockbank.poc.raidiam.io/.well-known/openid-configuration' OAuth2ClientCredentials: type: oauth2 description: | Fluxo OAuth necessário para que a iniciadora possa iniciar pagamentos. Requer o processo de redirecionamento e autenticação do usuário. Apenas pagamentos iniciados pela mesma iniciadora podem ser consultados ou cancelados através de modelo client credentials. flows: clientCredentials: tokenUrl: 'https://authserver.example/token' scopes: payments: Escopo necessário para acesso à API Payment Initiation. OAuth2AuthorizationCode: type: oauth2 description: Fluxo OAuth necessário para que a iniciadora possa iniciar pagamentos. Requer o processo de redirecionamento e autenticação do usuário. flows: authorizationCode: authorizationUrl: 'https://authserver.example/token' tokenUrl: 'https://authserver.example/token' scopes: payments: Escopo necessário para acesso à API Payment Initiation. openid: Indica que a autorização está sendo realizada utilizando o protocolo definido pela openid. 'enrollment:enrollmentId': Permite realizar atualização de um registro com a permissão do cliente. nrp-consents: Consentimento para pagamentos sem redirecionamento. responses: 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' headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionIdBadRequest' 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' headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' ForbiddenEnrollments: description: | O token tem escopo incorreto ou uma política de segurança foi violada. Esta política de segurança também envolve os casos em que a iniciadora de pagamento não possui contrato bilateral ativo com a detentora de conta. content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/ResponseError' headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' 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' headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' 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' headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' NotFound: description: O recurso solicitado não existe ou não foi implementado content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/ResponseError' headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' SiteIsOverloaded: description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/ResponseError' UnprocessableEntityConsentsAuthorization: description: 'A solicitação foi bem-formada, mas não pôde ser processada devido à lógica de negócios específica da solicitação.' content: application/jwt: schema: $ref: '#/components/schemas/422ResponseConsentsAuthorization' headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' UnprocessableEntityEnrollment: description: 'A solicitação foi bem-formada, mas não pôde ser processada devido à lógica de negócios específica da solicitação.' content: application/jwt: schema: $ref: '#/components/schemas/422ResponseErrorCreateEnrollment' examples: Permissões inválidas: summary: Permissões inválidas value: errors: - code: PERMISSOES_INVALIDAS title: Permissões inválidas detail: 'As permissões associadas ao vínculo de conta não contêm "PAYMENTS_INITIATE" ou contém valores não suportados para esta operação.' meta: requestDateTime: '2023-07-12T08:30:00Z' headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' UnprocessableEntityEnrollmentCancel: description: 'A solicitação foi bem-formada, mas não pôde ser processada devido à lógica de negócios específica da solicitação.' content: application/jwt: schema: $ref: '#/components/schemas/422ResponseErrorCancelEnrollment' headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' UnprocessableEntityEnrollmentFidoRegistrationOptions: description: 'A solicitação foi bem-formada, mas não pôde ser processada devido à lógica de negócios específica da solicitação.' content: application/jwt: schema: $ref: '#/components/schemas/422ResponseErrorFidoRegistrationOptions' headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' UnprocessableEntityEnrollmentRiskSignals: description: 'A solicitação foi bem-formada, mas não pôde ser processada devido à lógica de negócios específica da solicitação.' content: application/jwt: schema: $ref: '#/components/schemas/422ResponseErrorRiskSignals' headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' UnprocessableEntityEnrollmentFidoSignOptions: description: 'A solicitação foi bem-formada, mas não pôde ser processada devido à lógica de negócios específica da solicitação.' content: application/jwt: schema: $ref: '#/components/schemas/422ResponseErrorFidoSignOptions' headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' UnprocessableEntityEnrollmentFidoRegistration: description: | A solicitação foi bem-formada, mas não pôde ser processada devido à lógica de negócios específica da solicitação. A falha de verificação da credencial FIDO2 deve causar a rejeição do vínculo de conta por parte da detentora, uma vez que não é possível reusar um mesmo "challenge" para mais de um registro. headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' content: application/jwt: schema: $ref: '#/components/schemas/422ResponseErrorFidoRegistration' 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' headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' UnsupportedMediaType: description: O formato do payload não é um formato suportado. content: application/json; charset=utf-8: schema: $ref: '#/components/schemas/ResponseError' headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' 201EnrollmentsCreated: description: Vínculo de conta criado com sucesso. headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' content: application/jwt: schema: $ref: '#/components/schemas/ResponseCreateEnrollment' 200EnrollmentsEnrollmentIdRead: description: Dados do vínculo de conta obtidos com sucesso. headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' content: application/jwt: schema: $ref: '#/components/schemas/ResponseEnrollment' 204EnrollmentsEnrollmentIdDelete: description: Vínculo de conta revogado com sucesso. headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' 204EnrollmentsFidoRegistration: description: Credenciais FIDO2 validadas e associadas ao vínculo de conta. headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' 204PaymentsConsentsAuthorized: description: Sinais de risco recebidos com êxito. headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' 204EnrollmentsRiskSignals: description: Sinais de risco recebidos com êxito. headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' 201EnrollmentFidoRegistrationOptions: description: Dados para criação de uma nova credencial FIDO2. headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' content: application/jwt: schema: $ref: '#/components/schemas/EnrollmentFidoRegistrationOptions' 201EnrollmentFidoSignOptions: description: Dados para autenticação a partir de uma credencial FIDO2. headers: x-fapi-interaction-id: $ref: '#/components/headers/xFapiInteractionId' content: application/jwt: schema: $ref: '#/components/schemas/EnrollmentFidoSignOptions'