Pular para o conteúdo
Acessar painel

Autenticação

A API Maestron usa autenticação baseada em Bearer token. Após autenticar, todas as requisições aos endpoints protegidos enviam o token no header Authorization. A empresa (tenant) ativa é resolvida automaticamente a partir do token — não há nenhum header de empresa.

Todo endpoint protegido exige o header HTTP Authorization no formato:

Authorization: Bearer SEU_TOKEN

Os endpoints de autenticação públicos (login, registro, refresh, social, 2FA e recuperação de senha) não exigem Authorization. Todos os demais endpoints da API exigem.

  • O token de acesso possui um tempo de vida (TTL) limitado e expira após o período padrão.
  • Quando a autenticação é feita com remember_me: true, o TTL do token é estendido para um período mais longo.
  • Um token expirado retorna 401. Use o endpoint de refresh para obter um novo token sem reautenticar com credenciais.
  • O campo expires_in da resposta indica, em segundos, o tempo restante até a expiração do token retornado.

O token carrega o contexto da empresa ativa do usuário. A API resolve o tenant a partir do próprio token — não existe e não deve ser enviado nenhum header de empresa.

Para operar em outra empresa à qual o usuário pertence, emita um novo token com o contexto daquela empresa via POST /auth/context. O token resultante já resolve a empresa sozinho em todas as requisições subsequentes.


Autentica com e-mail e senha e retorna um Bearer token. Quando o usuário possui 2FA habilitado, a resposta indica que a verificação do segundo fator é necessária antes da emissão do token de acesso.

POST /auth/login

Login

Autentica o usuário e emite um Bearer token.

Corpo (body)

CampoTipoObrigatórioDescrição
email string Sim E-mail do usuário.
password string Sim Senha do usuário.
remember_me boolean Quando true, estende o TTL do token emitido.
curl -X POST https://api.maestron.com.br/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "usuario@empresa.com.br",
    "password": "senha-secreta",
    "remember_me": true
  }'
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.maestron.com.br/v1/auth/login', [
    'headers' => ['Accept' => 'application/json'],
    'json' => [
        'email' => 'usuario@empresa.com.br',
        'password' => 'senha-secreta',
        'remember_me' => true,
    ],
]);
$data = json_decode($response->getBody(), true);
import requests
headers = {}
payload = {
    "email": "usuario@empresa.com.br",
    "password": "senha-secreta",
    "remember_me": True,
}
response = requests.post(
    "https://api.maestron.com.br/v1/auth/login",
    headers=headers,
    json=payload,
)
data = response.json()
const response = await fetch("https://api.maestron.com.br/v1/auth/login", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "email": "usuario@empresa.com.br",
    "password": "senha-secreta",
    "remember_me": true
  }),
});
const data = await response.json();
using var client = new HttpClient();
var payload = new StringContent(
    "{\"email\":\"usuario@empresa.com.br\",\"password\":\"senha-secreta\",\"remember_me\":true}",
    System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.maestron.com.br/v1/auth/login", payload);
var data = await response.Content.ReadAsStringAsync();
POST /auth/login HTTP/1.1
Host: api.maestron.com.br
Content-Type: application/json

{
  "email": "usuario@empresa.com.br",
  "password": "senha-secreta",
  "remember_me": true
}

Respostas

{
  "message": "Autenticado com sucesso.",
  "data": {
    "token": "mtk_01J9Z3K8ABCDEF...",
    "token_type": "Bearer",
    "expires_in": 2592000,
    "user": {
      "id": "user_01J9Z3K8",
      "name": "Maria Silva",
      "email": "usuario@empresa.com.br",
      "company_id": "comp_01J9Z3K8"
    }
  }
}
{
  "message": "Verificação de dois fatores necessária.",
  "data": {
    "two_factor_required": true,
    "two_factor_token": "2fa_01J9Z3K8..."
  }
}
{
  "message": "Credenciais inválidas."
}
{
  "message": "Os dados informados são inválidos.",
  "errors": {
    "email": [
      "O campo e-mail é obrigatório."
    ],
    "password": [
      "O campo senha é obrigatório."
    ]
  }
}
{
  "message": "Muitas tentativas de login. Tente novamente mais tarde."
}

Emite um novo Bearer token a partir de um token válido (ainda não expirado), prorrogando a sessão sem reautenticar com credenciais.

POST /auth/refresh

Renovar token

Renova o Bearer token e retorna um novo token de acesso.

curl -X POST https://api.maestron.com.br/v1/auth/refresh \
  -H "Authorization: Bearer SEU_TOKEN"
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.maestron.com.br/v1/auth/refresh', [
    'headers' => [
        'Authorization' => 'Bearer SEU_TOKEN',
        'Accept' => 'application/json',
    ],
]);
$data = json_decode($response->getBody(), true);
import requests
headers = {"Authorization": "Bearer SEU_TOKEN"}
response = requests.post(
    "https://api.maestron.com.br/v1/auth/refresh",
    headers=headers,
)
data = response.json()
const response = await fetch("https://api.maestron.com.br/v1/auth/refresh", {
  method: "POST",
  headers: {
    "Authorization": "Bearer SEU_TOKEN",
  },
});
const data = await response.json();
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
    new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "SEU_TOKEN");
var response = await client.PostAsync("https://api.maestron.com.br/v1/auth/refresh", null);
var data = await response.Content.ReadAsStringAsync();
POST /auth/refresh HTTP/1.1
Host: api.maestron.com.br
Authorization: Bearer SEU_TOKEN

Respostas

{
  "message": "Token renovado.",
  "data": {
    "token": "mtk_01J9Z3K8NEWTOKEN...",
    "token_type": "Bearer",
    "expires_in": 2592000
  }
}
{
  "message": "Token inválido ou expirado."
}

Invalida o token atual e encerra a sessão. Após o logout, o token não pode mais ser usado.

POST /auth/logout

Logout

Invalida o token atual e encerra a sessão.

curl -X POST https://api.maestron.com.br/v1/auth/logout \
  -H "Authorization: Bearer SEU_TOKEN"
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.maestron.com.br/v1/auth/logout', [
    'headers' => [
        'Authorization' => 'Bearer SEU_TOKEN',
        'Accept' => 'application/json',
    ],
]);
$data = json_decode($response->getBody(), true);
import requests
headers = {"Authorization": "Bearer SEU_TOKEN"}
response = requests.post(
    "https://api.maestron.com.br/v1/auth/logout",
    headers=headers,
)
data = response.json()
const response = await fetch("https://api.maestron.com.br/v1/auth/logout", {
  method: "POST",
  headers: {
    "Authorization": "Bearer SEU_TOKEN",
  },
});
const data = await response.json();
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
    new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "SEU_TOKEN");
var response = await client.PostAsync("https://api.maestron.com.br/v1/auth/logout", null);
var data = await response.Content.ReadAsStringAsync();
POST /auth/logout HTTP/1.1
Host: api.maestron.com.br
Authorization: Bearer SEU_TOKEN

Respostas

{
  "message": "Sessão encerrada."
}
{
  "message": "Token inválido ou expirado."
}

Cria um novo usuário e sua empresa inicial, retornando um Bearer token já com o contexto da empresa criada.

POST /auth/register

Registrar

Cria um novo usuário e empresa e emite um Bearer token.

Corpo (body)

CampoTipoObrigatórioDescrição
name string Sim Nome do usuário.
email string Sim E-mail do usuário. Deve ser único.
password string Sim Senha do usuário.
password_confirmation string Sim Confirmação da senha.
company_name string Sim Nome da empresa a ser criada.
curl -X POST https://api.maestron.com.br/v1/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Maria Silva",
    "email": "usuario@empresa.com.br",
    "password": "senha-secreta",
    "password_confirmation": "senha-secreta",
    "company_name": "Empresa Exemplo Ltda"
  }'
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.maestron.com.br/v1/auth/register', [
    'headers' => ['Accept' => 'application/json'],
    'json' => [
        'name' => 'Maria Silva',
        'email' => 'usuario@empresa.com.br',
        'password' => 'senha-secreta',
        'password_confirmation' => 'senha-secreta',
        'company_name' => 'Empresa Exemplo Ltda',
    ],
]);
$data = json_decode($response->getBody(), true);
import requests
headers = {}
payload = {
    "name": "Maria Silva",
    "email": "usuario@empresa.com.br",
    "password": "senha-secreta",
    "password_confirmation": "senha-secreta",
    "company_name": "Empresa Exemplo Ltda",
}
response = requests.post(
    "https://api.maestron.com.br/v1/auth/register",
    headers=headers,
    json=payload,
)
data = response.json()
const response = await fetch("https://api.maestron.com.br/v1/auth/register", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "name": "Maria Silva",
    "email": "usuario@empresa.com.br",
    "password": "senha-secreta",
    "password_confirmation": "senha-secreta",
    "company_name": "Empresa Exemplo Ltda"
  }),
});
const data = await response.json();
using var client = new HttpClient();
var payload = new StringContent(
    "{\"name\":\"Maria Silva\",\"email\":\"usuario@empresa.com.br\",\"password\":\"senha-secreta\",\"password_confirmation\":\"senha-secreta\",\"company_name\":\"Empresa Exemplo Ltda\"}",
    System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.maestron.com.br/v1/auth/register", payload);
var data = await response.Content.ReadAsStringAsync();
POST /auth/register HTTP/1.1
Host: api.maestron.com.br
Content-Type: application/json

{
  "name": "Maria Silva",
  "email": "usuario@empresa.com.br",
  "password": "senha-secreta",
  "password_confirmation": "senha-secreta",
  "company_name": "Empresa Exemplo Ltda"
}

Respostas

{
  "message": "Conta criada.",
  "data": {
    "token": "mtk_01J9Z3K8ABCDEF...",
    "token_type": "Bearer",
    "expires_in": 86400,
    "user": {
      "id": "user_01J9Z3K8",
      "name": "Maria Silva",
      "email": "usuario@empresa.com.br",
      "company_id": "comp_01J9Z3K8"
    }
  }
}
{
  "message": "Os dados informados são inválidos.",
  "errors": {
    "email": [
      "Este e-mail já está em uso."
    ],
    "password": [
      "A senha deve ter no mínimo 8 caracteres."
    ]
  }
}
{
  "message": "Muitas tentativas. Tente novamente mais tarde."
}

Retorna os dados do usuário associado ao token, incluindo a empresa ativa resolvida a partir dele.

GET /auth/me

Usuário autenticado

Retorna os dados do usuário autenticado e a empresa ativa.

curl -X GET https://api.maestron.com.br/v1/auth/me \
  -H "Authorization: Bearer SEU_TOKEN"
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.maestron.com.br/v1/auth/me', [
    'headers' => [
        'Authorization' => 'Bearer SEU_TOKEN',
        'Accept' => 'application/json',
    ],
]);
$data = json_decode($response->getBody(), true);
import requests
headers = {"Authorization": "Bearer SEU_TOKEN"}
response = requests.get(
    "https://api.maestron.com.br/v1/auth/me",
    headers=headers,
)
data = response.json()
const response = await fetch("https://api.maestron.com.br/v1/auth/me", {
  method: "GET",
  headers: {
    "Authorization": "Bearer SEU_TOKEN",
  },
});
const data = await response.json();
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
    new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "SEU_TOKEN");
var response = await client.GetAsync("https://api.maestron.com.br/v1/auth/me");
var data = await response.Content.ReadAsStringAsync();
GET /auth/me HTTP/1.1
Host: api.maestron.com.br
Authorization: Bearer SEU_TOKEN

Respostas

{
  "message": "Registro retornado.",
  "data": {
    "id": "user_01J9Z3K8",
    "name": "Maria Silva",
    "email": "usuario@empresa.com.br",
    "company_id": "comp_01J9Z3K8",
    "two_factor_enabled": true,
    "created_at": "2026-01-15T10:00:00Z"
  }
}
{
  "message": "Token inválido ou expirado."
}

O login social segue três etapas: obter a URL de autorização do provedor, processar o callback do provedor e trocar o código por um Bearer token. Provedores suportados são identificados pelo parâmetro de rota provider (por exemplo google).

Retorna a URL de autorização do provedor para a qual o fluxo OAuth deve ser direcionado.

GET /auth/social/{provider}/redirect

Redirect social

Retorna a URL de autorização do provedor OAuth.

Parâmetros de caminho

CampoTipoObrigatórioDescrição
provider string Sim Identificador do provedor (ex.: google).
curl -X GET https://api.maestron.com.br/v1/auth/social/{provider}/redirect
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.maestron.com.br/v1/auth/social/{provider}/redirect', [
    'headers' => ['Accept' => 'application/json'],
]);
$data = json_decode($response->getBody(), true);
import requests
headers = {}
response = requests.get(
    "https://api.maestron.com.br/v1/auth/social/{provider}/redirect",
    headers=headers,
)
data = response.json()
const response = await fetch("https://api.maestron.com.br/v1/auth/social/{provider}/redirect", {
  method: "GET",
  headers: {
  },
});
const data = await response.json();
using var client = new HttpClient();
var response = await client.GetAsync("https://api.maestron.com.br/v1/auth/social/{provider}/redirect");
var data = await response.Content.ReadAsStringAsync();
GET /auth/social/{provider}/redirect HTTP/1.1
Host: api.maestron.com.br

Respostas

{
  "message": "Registro retornado.",
  "data": {
    "redirect_url": "https://accounts.google.com/o/oauth2/auth?client_id=...&redirect_uri=...&state=..."
  }
}
{
  "message": "Provedor não suportado."
}

Endpoint para o qual o provedor OAuth redireciona após a autorização. Processa o code e o state e retorna um código de troca de uso único.

GET /auth/social/{provider}/callback

Callback social

Processa o retorno do provedor OAuth e emite um código de troca.

Parâmetros de caminho

CampoTipoObrigatórioDescrição
provider string Sim Identificador do provedor (ex.: google).

Parâmetros de query

CampoTipoObrigatórioDescrição
code string Sim Código de autorização retornado pelo provedor.
state string Sim Valor de estado para proteção contra CSRF.
curl -X GET https://api.maestron.com.br/v1/auth/social/{provider}/callback
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.maestron.com.br/v1/auth/social/{provider}/callback', [
    'headers' => ['Accept' => 'application/json'],
]);
$data = json_decode($response->getBody(), true);
import requests
headers = {}
response = requests.get(
    "https://api.maestron.com.br/v1/auth/social/{provider}/callback",
    headers=headers,
)
data = response.json()
const response = await fetch("https://api.maestron.com.br/v1/auth/social/{provider}/callback", {
  method: "GET",
  headers: {
  },
});
const data = await response.json();
using var client = new HttpClient();
var response = await client.GetAsync("https://api.maestron.com.br/v1/auth/social/{provider}/callback");
var data = await response.Content.ReadAsStringAsync();
GET /auth/social/{provider}/callback HTTP/1.1
Host: api.maestron.com.br

Respostas

{
  "message": "Registro retornado.",
  "data": {
    "exchange_code": "xch_01J9Z3K8..."
  }
}
{
  "message": "Não foi possível autenticar com o provedor."
}
{
  "message": "Os dados informados são inválidos.",
  "errors": {
    "code": [
      "O campo code é obrigatório."
    ]
  }
}

Troca o código de uso único, obtido no callback, por um Bearer token.

POST /auth/social/exchange

Trocar código social

Troca o código de uso único por um Bearer token.

Corpo (body)

CampoTipoObrigatórioDescrição
exchange_code string Sim Código de troca retornado pelo callback.
curl -X POST https://api.maestron.com.br/v1/auth/social/exchange \
  -H "Content-Type: application/json" \
  -d '{
    "exchange_code": "xch_01J9Z3K8..."
  }'
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.maestron.com.br/v1/auth/social/exchange', [
    'headers' => ['Accept' => 'application/json'],
    'json' => [
        'exchange_code' => 'xch_01J9Z3K8...',
    ],
]);
$data = json_decode($response->getBody(), true);
import requests
headers = {}
payload = {
    "exchange_code": "xch_01J9Z3K8...",
}
response = requests.post(
    "https://api.maestron.com.br/v1/auth/social/exchange",
    headers=headers,
    json=payload,
)
data = response.json()
const response = await fetch("https://api.maestron.com.br/v1/auth/social/exchange", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "exchange_code": "xch_01J9Z3K8..."
  }),
});
const data = await response.json();
using var client = new HttpClient();
var payload = new StringContent(
    "{\"exchange_code\":\"xch_01J9Z3K8...\"}",
    System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.maestron.com.br/v1/auth/social/exchange", payload);
var data = await response.Content.ReadAsStringAsync();
POST /auth/social/exchange HTTP/1.1
Host: api.maestron.com.br
Content-Type: application/json

{
  "exchange_code": "xch_01J9Z3K8..."
}

Respostas

{
  "message": "Autenticado com sucesso.",
  "data": {
    "token": "mtk_01J9Z3K8ABCDEF...",
    "token_type": "Bearer",
    "expires_in": 86400,
    "user": {
      "id": "user_01J9Z3K8",
      "name": "Maria Silva",
      "email": "usuario@empresa.com.br",
      "company_id": "comp_01J9Z3K8"
    }
  }
}
{
  "message": "Código de troca inválido ou expirado."
}
{
  "message": "Os dados informados são inválidos.",
  "errors": {
    "exchange_code": [
      "O campo exchange_code é obrigatório."
    ]
  }
}

Quando o login retorna two_factor_required, use o two_factor_token recebido para verificar o código do segundo fator. Após a verificação bem-sucedida, o Bearer token de acesso é emitido.

Valida o código de 2FA e emite o Bearer token de acesso.

POST /auth/two-factor/verify

Verificar 2FA

Valida o código de dois fatores e emite o Bearer token.

Corpo (body)

CampoTipoObrigatórioDescrição
two_factor_token string Sim Token de 2FA retornado pelo login.
code string Sim Código de verificação de seis dígitos.
curl -X POST https://api.maestron.com.br/v1/auth/two-factor/verify \
  -H "Content-Type: application/json" \
  -d '{
    "two_factor_token": "2fa_01J9Z3K8...",
    "code": "123456"
  }'
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.maestron.com.br/v1/auth/two-factor/verify', [
    'headers' => ['Accept' => 'application/json'],
    'json' => [
        'two_factor_token' => '2fa_01J9Z3K8...',
        'code' => '123456',
    ],
]);
$data = json_decode($response->getBody(), true);
import requests
headers = {}
payload = {
    "two_factor_token": "2fa_01J9Z3K8...",
    "code": "123456",
}
response = requests.post(
    "https://api.maestron.com.br/v1/auth/two-factor/verify",
    headers=headers,
    json=payload,
)
data = response.json()
const response = await fetch("https://api.maestron.com.br/v1/auth/two-factor/verify", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "two_factor_token": "2fa_01J9Z3K8...",
    "code": "123456"
  }),
});
const data = await response.json();
using var client = new HttpClient();
var payload = new StringContent(
    "{\"two_factor_token\":\"2fa_01J9Z3K8...\",\"code\":\"123456\"}",
    System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.maestron.com.br/v1/auth/two-factor/verify", payload);
var data = await response.Content.ReadAsStringAsync();
POST /auth/two-factor/verify HTTP/1.1
Host: api.maestron.com.br
Content-Type: application/json

{
  "two_factor_token": "2fa_01J9Z3K8...",
  "code": "123456"
}

Respostas

{
  "message": "Autenticado com sucesso.",
  "data": {
    "token": "mtk_01J9Z3K8ABCDEF...",
    "token_type": "Bearer",
    "expires_in": 2592000,
    "user": {
      "id": "user_01J9Z3K8",
      "name": "Maria Silva",
      "email": "usuario@empresa.com.br",
      "company_id": "comp_01J9Z3K8"
    }
  }
}
{
  "message": "Código de verificação inválido ou expirado."
}
{
  "message": "Os dados informados são inválidos.",
  "errors": {
    "code": [
      "O campo code é obrigatório."
    ]
  }
}
{
  "message": "Muitas tentativas. Tente novamente mais tarde."
}

Reenvia o código de 2FA para o canal configurado, usando o token de 2FA obtido no login.

POST /auth/two-factor/resend

Reenviar 2FA

Reenvia o código de dois fatores.

Corpo (body)

CampoTipoObrigatórioDescrição
two_factor_token string Sim Token de 2FA retornado pelo login.
curl -X POST https://api.maestron.com.br/v1/auth/two-factor/resend \
  -H "Content-Type: application/json" \
  -d '{
    "two_factor_token": "2fa_01J9Z3K8..."
  }'
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.maestron.com.br/v1/auth/two-factor/resend', [
    'headers' => ['Accept' => 'application/json'],
    'json' => [
        'two_factor_token' => '2fa_01J9Z3K8...',
    ],
]);
$data = json_decode($response->getBody(), true);
import requests
headers = {}
payload = {
    "two_factor_token": "2fa_01J9Z3K8...",
}
response = requests.post(
    "https://api.maestron.com.br/v1/auth/two-factor/resend",
    headers=headers,
    json=payload,
)
data = response.json()
const response = await fetch("https://api.maestron.com.br/v1/auth/two-factor/resend", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "two_factor_token": "2fa_01J9Z3K8..."
  }),
});
const data = await response.json();
using var client = new HttpClient();
var payload = new StringContent(
    "{\"two_factor_token\":\"2fa_01J9Z3K8...\"}",
    System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.maestron.com.br/v1/auth/two-factor/resend", payload);
var data = await response.Content.ReadAsStringAsync();
POST /auth/two-factor/resend HTTP/1.1
Host: api.maestron.com.br
Content-Type: application/json

{
  "two_factor_token": "2fa_01J9Z3K8..."
}

Respostas

{
  "message": "Código reenviado."
}
{
  "message": "Token de dois fatores inválido ou expirado."
}
{
  "message": "Os dados informados são inválidos.",
  "errors": {
    "two_factor_token": [
      "O campo two_factor_token é obrigatório."
    ]
  }
}
{
  "message": "Muitas tentativas. Tente novamente mais tarde."
}

O fluxo de recuperação tem duas etapas: solicitar o envio do link de redefinição e redefinir a senha com o token recebido.

Envia um e-mail com o token de redefinição para o endereço informado.

POST /auth/forgot-password

Esqueci a senha

Solicita o envio do link de redefinição de senha.

Corpo (body)

CampoTipoObrigatórioDescrição
email string Sim E-mail da conta.
curl -X POST https://api.maestron.com.br/v1/auth/forgot-password \
  -H "Content-Type: application/json" \
  -d '{
    "email": "usuario@empresa.com.br"
  }'
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.maestron.com.br/v1/auth/forgot-password', [
    'headers' => ['Accept' => 'application/json'],
    'json' => [
        'email' => 'usuario@empresa.com.br',
    ],
]);
$data = json_decode($response->getBody(), true);
import requests
headers = {}
payload = {
    "email": "usuario@empresa.com.br",
}
response = requests.post(
    "https://api.maestron.com.br/v1/auth/forgot-password",
    headers=headers,
    json=payload,
)
data = response.json()
const response = await fetch("https://api.maestron.com.br/v1/auth/forgot-password", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "email": "usuario@empresa.com.br"
  }),
});
const data = await response.json();
using var client = new HttpClient();
var payload = new StringContent(
    "{\"email\":\"usuario@empresa.com.br\"}",
    System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.maestron.com.br/v1/auth/forgot-password", payload);
var data = await response.Content.ReadAsStringAsync();
POST /auth/forgot-password HTTP/1.1
Host: api.maestron.com.br
Content-Type: application/json

{
  "email": "usuario@empresa.com.br"
}

Respostas

{
  "message": "Link de redefinição enviado."
}
{
  "message": "Os dados informados são inválidos.",
  "errors": {
    "email": [
      "O campo e-mail é obrigatório."
    ]
  }
}
{
  "message": "Muitas tentativas. Tente novamente mais tarde."
}

Define uma nova senha usando o token recebido por e-mail.

POST /auth/reset-password

Redefinir senha

Define uma nova senha a partir do token de redefinição.

Corpo (body)

CampoTipoObrigatórioDescrição
token string Sim Token de redefinição recebido por e-mail.
email string Sim E-mail da conta.
password string Sim Nova senha.
password_confirmation string Sim Confirmação da nova senha.
curl -X POST https://api.maestron.com.br/v1/auth/reset-password \
  -H "Content-Type: application/json" \
  -d '{
    "token": "rst_01J9Z3K8...",
    "email": "usuario@empresa.com.br",
    "password": "nova-senha-secreta",
    "password_confirmation": "nova-senha-secreta"
  }'
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.maestron.com.br/v1/auth/reset-password', [
    'headers' => ['Accept' => 'application/json'],
    'json' => [
        'token' => 'rst_01J9Z3K8...',
        'email' => 'usuario@empresa.com.br',
        'password' => 'nova-senha-secreta',
        'password_confirmation' => 'nova-senha-secreta',
    ],
]);
$data = json_decode($response->getBody(), true);
import requests
headers = {}
payload = {
    "token": "rst_01J9Z3K8...",
    "email": "usuario@empresa.com.br",
    "password": "nova-senha-secreta",
    "password_confirmation": "nova-senha-secreta",
}
response = requests.post(
    "https://api.maestron.com.br/v1/auth/reset-password",
    headers=headers,
    json=payload,
)
data = response.json()
const response = await fetch("https://api.maestron.com.br/v1/auth/reset-password", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "token": "rst_01J9Z3K8...",
    "email": "usuario@empresa.com.br",
    "password": "nova-senha-secreta",
    "password_confirmation": "nova-senha-secreta"
  }),
});
const data = await response.json();
using var client = new HttpClient();
var payload = new StringContent(
    "{\"token\":\"rst_01J9Z3K8...\",\"email\":\"usuario@empresa.com.br\",\"password\":\"nova-senha-secreta\",\"password_confirmation\":\"nova-senha-secreta\"}",
    System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.maestron.com.br/v1/auth/reset-password", payload);
var data = await response.Content.ReadAsStringAsync();
POST /auth/reset-password HTTP/1.1
Host: api.maestron.com.br
Content-Type: application/json

{
  "token": "rst_01J9Z3K8...",
  "email": "usuario@empresa.com.br",
  "password": "nova-senha-secreta",
  "password_confirmation": "nova-senha-secreta"
}

Respostas

{
  "message": "Senha redefinida."
}
{
  "message": "Token de redefinição inválido ou expirado."
}
{
  "message": "Os dados informados são inválidos.",
  "errors": {
    "password": [
      "A confirmação da senha não confere."
    ]
  }
}

Emite um novo Bearer token com o contexto de outra empresa à qual o usuário pertence. O token resultante resolve essa empresa automaticamente em todas as requisições.

POST /auth/context

Trocar empresa ativa

Emite um novo token com o contexto da empresa informada.

Corpo (body)

CampoTipoObrigatórioDescrição
company_id string Sim Identificador da empresa de destino (prefixo comp_).
curl -X POST https://api.maestron.com.br/v1/auth/context \
  -H "Authorization: Bearer SEU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "company_id": "comp_01J9Z3K8"
  }'
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.maestron.com.br/v1/auth/context', [
    'headers' => [
        'Authorization' => 'Bearer SEU_TOKEN',
        'Accept' => 'application/json',
    ],
    'json' => [
        'company_id' => 'comp_01J9Z3K8',
    ],
]);
$data = json_decode($response->getBody(), true);
import requests
headers = {"Authorization": "Bearer SEU_TOKEN"}
payload = {
    "company_id": "comp_01J9Z3K8",
}
response = requests.post(
    "https://api.maestron.com.br/v1/auth/context",
    headers=headers,
    json=payload,
)
data = response.json()
const response = await fetch("https://api.maestron.com.br/v1/auth/context", {
  method: "POST",
  headers: {
    "Authorization": "Bearer SEU_TOKEN",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "company_id": "comp_01J9Z3K8"
  }),
});
const data = await response.json();
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
    new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "SEU_TOKEN");
var payload = new StringContent(
    "{\"company_id\":\"comp_01J9Z3K8\"}",
    System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.maestron.com.br/v1/auth/context", payload);
var data = await response.Content.ReadAsStringAsync();
POST /auth/context HTTP/1.1
Host: api.maestron.com.br
Authorization: Bearer SEU_TOKEN
Content-Type: application/json

{
  "company_id": "comp_01J9Z3K8"
}

Respostas

{
  "message": "Empresa ativa alterada.",
  "data": {
    "token": "mtk_01J9Z3K8NEWCTX...",
    "token_type": "Bearer",
    "expires_in": 2592000,
    "company_id": "comp_01J9Z3K8"
  }
}
{
  "message": "Token inválido ou expirado."
}
{
  "message": "O usuário não pertence à empresa informada."
}
{
  "message": "Empresa não encontrada."
}
{
  "message": "Os dados informados são inválidos.",
  "errors": {
    "company_id": [
      "O campo company_id é obrigatório."
    ]
  }
}

Para os códigos de status e o formato das respostas de erro, consulte Erros. Para os limites de requisição, consulte Rate limiting.