Pular para o conteúdo principal

Autenticação

Para consumir os serviços PBM e PSP através do Gateway GraphQL, é necessário gerar um token de autenticação e enviá-lo no header Authorization.

Cada fluxo possui sua própria mutation para geração de token:

FluxoMutationHeaderQuando utilizar
PBMcreateTokenAuthorizationEndpoints PBM
PSP / Health PassportcreateTokenPspAuthorizationEndpoints PSP/Health Passport

1. Token PBM

Para gerar o token principal de acesso ao Gateway, utilize a mutation createToken, informando as credenciais fornecidas pela Funcional.

Dica

O mesmo token pode ser utilizado em várias requisições até sua expiração.

🔒 O token PBM tem validade aproximada de 1 hora.

Parâmetros

ParâmetroTipoObrigatórioDescrição
loginStringSimLogin do usuário
passwordStringSimSenha do usuário

Exemplo de requisição

mutation {
createToken(
login: "usuario_exemplo"
password: "senha_exemplo"
) {
token
}
}

Exemplo de resposta

{
"data": {
"createToken": {
"token": "eyJhbGciOiJSUzI1NiIs..."
}
}
}

2. Token PSP / Health Passport

Para endpoints que integram com o PSP / Health Passport, é necessário gerar um token utilizando a mutation createTokenPsp.

Este token deve ser enviado no header Authorization.

Para acessar funcionalidades PSP, é necessário informar os escopos autorizados no momento da geração do token.

Utilize os escopos:

  • patient_care_api
  • essential_health_api
Dica

O token PSP (Health Passport) pode ser reutilizado até sua expiração.

🔒 O token PSP (Health Passport) tem validade aproximada de 24 horas.

Parâmetros

ParâmetroTipoObrigatórioDescriçãoValor
inputObjectSimCredenciais e escopos para geração do token PSPCampos do Input

Campos do Input

CampoTipoObrigatórioDescrição
client_idStringSimIdentificador da aplicação cliente
client_secretStringSimSegredo da aplicação cliente
grant_typeStringSimTipo de autenticação OAuth2
scopeStringSimEscopos solicitados na autenticação

Exemplo de requisição

mutation {
createTokenPsp(
input: {
client_id: "client_id_exemplo"
client_secret: "client_secret_exemplo"
grant_type: "client_credentials"
scope: "patient_care_api essential_health_api"
}
) {
token_type
expires_in
access_token
}
}

Exemplo de resposta

{
"data": {
"createTokenPsp": {
"token_type": "Bearer",
"expires_in": 86400,
"access_token": "eyJhbGciOiJSUzI1NiIs..."
}
}
}

3. Headers

3.1 PBM

HeaderObrigatórioDescrição
AuthorizationSimToken Gateway gerado pela mutation createToken
Content-TypeSimDeve ser enviado como application/json

3.2 PSP/Health Passport

HeaderObrigatórioDescrição
AuthorizationSim, para endpoints PSP/Health PassportToken PSP gerado pela mutation createTokenPsp
Content-TypeSimDeve ser enviado como application/json

4. Utilizando os tokens

Requisições PBM

Para endpoints PBM:

POST /graphql
Content-Type: application/json
Authorization: Bearer {token_pbm}

Requisições PSP / Health Passport

Para endpoints PSP/Health Passport, envie somente o token PSP gerado pela mutation createTokenPsp:

POST /graphql
Content-Type: application/json
Authorization: Bearer {access_token_psp}

5. Expiração dos tokens

TokenValidade aproximadaComo renovar
PBM1 horaGerar novamente via createToken
PSP24 horasGerar novamente via createTokenPsp

Caso um token expire, a API retornará erro de autenticação.

Exemplo de erro

{
"errors": [
{
"message": "Unauthorized",
"path": [
"WsAcesso_insertOptinExternal"
],
"extensions": {
"code": "UNAUTHENTICATED",
"originalError": {
"message": "Unauthorized",
"statusCode": 401
}
}
}
],
"data": null
}

6. Fluxo resumido

Fluxo PBM

  1. Chame createToken, utilizando as credenciais da aplicação PBM
  2. Envie o token PBM no header Authorization
  3. Quando expirar, gere um novo token

Fluxo PSP / Health Passport

  1. Chame createTokenPsp, utilizando as credenciais da aplicação PSP
  2. Envie o token PSP no header Authorization
  3. Quando expirar, gere um novo token