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:
| Fluxo | Mutation | Header | Quando utilizar |
|---|---|---|---|
| PBM | createToken | Authorization | Endpoints PBM |
| PSP / Health Passport | createTokenPsp | Authorization | Endpoints 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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| login | String | Sim | Login do usuário |
| password | String | Sim | Senha 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_apiessential_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âmetro | Tipo | Obrigatório | Descrição | Valor |
|---|---|---|---|---|
| input | Object | Sim | Credenciais e escopos para geração do token PSP | Campos do Input |
Campos do Input
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| client_id | String | Sim | Identificador da aplicação cliente |
| client_secret | String | Sim | Segredo da aplicação cliente |
| grant_type | String | Sim | Tipo de autenticação OAuth2 |
| scope | String | Sim | Escopos 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
| Header | Obrigatório | Descrição |
|---|---|---|
Authorization | Sim | Token Gateway gerado pela mutation createToken |
Content-Type | Sim | Deve ser enviado como application/json |
3.2 PSP/Health Passport
| Header | Obrigatório | Descrição |
|---|---|---|
Authorization | Sim, para endpoints PSP/Health Passport | Token PSP gerado pela mutation createTokenPsp |
Content-Type | Sim | Deve 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
| Token | Validade aproximada | Como renovar |
|---|---|---|
| PBM | 1 hora | Gerar novamente via createToken |
| PSP | 24 horas | Gerar 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
- Chame
createToken, utilizando as credenciais da aplicação PBM - Envie o token PBM no header
Authorization - Quando expirar, gere um novo token
Fluxo PSP / Health Passport
- Chame
createTokenPsp, utilizando as credenciais da aplicação PSP - Envie o token PSP no header
Authorization - Quando expirar, gere um novo token