O End-Point tem por objetivo fornecer serviços referente à entidade Cadastro Político do serviço da SSL do portal da Assembleia Legislativa do Estado de Mato Grosso.
Para se autenticar no end-point você deverá informar as credenciais (fornecidas pela instituição) para a obtenção de um token de acesso, que deverá ser informado no cabeçalho das requisições deste serviço.
Para obter o token de acesso, utilizando o grant_type denominado password você precisa realizar uma requisição semelhante à esta:
curl -X POST
/oauth/v2/token
-H 'cache-control: no-cache'
-H 'content-type: application/x-www-form-urlencoded'
-d 'grant_type=password&client_id=[client_id]&client_secret=[client_secret]&username=[username]&password=[password]'
POST /oauth/v2/token HTTP/1.1
Host: api.al.mt.gov.br
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
grant_type=password&client_id=[client_id]&client_secret=[client_secret]&username=[username]&password=[password]
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.al.mt.gov.br/oauth/v2/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "grant_type=password&client_id=[client_id]&client_secret=[client_secret]&username=[username]&password=[password]",
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"content-type: application/x-www-form-urlencoded",
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var client = new RestClient("https://api.al.mt.gov.br/oauth/v2/token");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", "grant_type=password&client_id=[client_id]&client_secret=[client_secret]&username=[username]&password=[password]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Para obter o token de acesso, utilizando o grant_type denominado http://al.mt.gov.br/grants/password_and_totp você precisa realizar uma requisição semelhante à esta:
curl -X POST
/oauth/v2/token
-H 'cache-control: no-cache'
-H 'content-type: application/x-www-form-urlencoded'
-d 'grant_type=http://al.mt.gov.br/grants/password_and_totp&client_id=[client_id]&client_secret=[client_secret]&username=[username]&password=[password]&totp_pin=[totp_pin]'
POST /oauth/v2/token HTTP/1.1
Host: api.al.mt.gov.br
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
grant_type=http://al.mt.gov.br/grants/password_and_totp&client_id=[client_id]&client_secret=[client_secret]&username=[username]&password=[password]&totp_pin=[totp_pin]
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.al.mt.gov.br/oauth/v2/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "grant_type=http://al.mt.gov.br/grants/password_and_totp&client_id=[client_id]&client_secret=[client_secret]&username=[username]&password=[password]&totp_pin=[totp_pin]",
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"content-type: application/x-www-form-urlencoded",
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var client = new RestClient("https://api.al.mt.gov.br/oauth/v2/token");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", "grant_type=http://al.mt.gov.br/grants/password_and_totp&client_id=[client_id]&client_secret=[client_secret]&username=[username]&password=[password]&totp_pin=[totp_pin]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Para a geração do totp_pin o autenticador deverá respeitar as seguintes características:
Recomendamos a ferramenta Google Authenticator para a geração do PIN.
Para obter o token de acesso, utilizando o grant_type denominado http://al.mt.gov.br/grants/password_and_totp_and_uuid você precisa realizar uma requisição semelhante à esta:
curl -X POST
/oauth/v2/token
-H 'cache-control: no-cache'
-H 'content-type: application/x-www-form-urlencoded'
-d 'grant_type=http://al.mt.gov.br/grants/password_and_totp_and_uuid&client_id=[client_id]&client_secret=[client_secret]&username=[username]&password=[password]&totp_pin=[totp_pin]&uuid=[uuid]'
POST /oauth/v2/token HTTP/1.1
Host: api.al.mt.gov.br
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
grant_type=http://al.mt.gov.br/grants/password_and_totp_and_uuid&client_id=[client_id]&client_secret=[client_secret]&username=[username]&password=[password]&totp_pin=[totp_pin]&uuid=[uuid]
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.al.mt.gov.br/oauth/v2/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "grant_type=http://al.mt.gov.br/grants/password_and_totp_and_uuid&client_id=[client_id]&client_secret=[client_secret]&username=[username]&password=[password]&totp_pin=[totp_pin]&uuid=[uuid]",
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"content-type: application/x-www-form-urlencoded",
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var client = new RestClient("https://api.al.mt.gov.br/oauth/v2/token");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", "grant_type=http://al.mt.gov.br/grants/password_and_totp_and_uuid&client_id=[client_id]&client_secret=[client_secret]&username=[username]&password=[password]&totp_pin=[totp_pin]&uuid=[uuid]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Para a geração do uuid você deverá respeitar as seguintes características:
Observação: As validações acima foram derrubadas, buscando compatibilidade com o UDID.
O token de acesso será retornado em uma resposta semelhante à esta:
{
"access_token": "OTlkMjZmMWM4NDljYzA5NzYxNDA3MTg4NGQxNWFlNWYxZjJkMjA3MDFkYzZhMTRiMjE1ZjRlNzBmMDEwMjg4Nw",
"expires_in": 3600,
"token_type": "bearer",
"scope": null,
"refresh_token": "ZThkOGNhZWVlOGIyNTJjYzg1MjQwZGQzNjFhOWIxYmFjZjE4MDM3MDhmNzgxZTZhN2U5ZDM5Yjk5ZTVkMWM1ZQ"
}
O atributo expires_in representa o tempo em segundos de validade do access_token .
Para utilizar o end-point você deverá adicionar um cabeçalho semelhante a este:
Authorization: [token_type (a primeira letra deve ser maíuscula)] [access_token]
Observação: As chamadas devem ser síncronas, as chamadas assíncronas serão rejeitadas pelo servidor, por motivos de segurança.
Para que seja possível pesquisar dentro das requisições permitidas é necessário informar o parâmetro criterias em formato text/json através desta especificação.
O parâmetro criterias é um vetor escalar, isto implica dizer que será possível informar mais de um critério de pesquisa, os quais serão encadeados com o operador aditivo AND.
Quando o campo operator for igual a is-null not-is-null :
criterias=[{"field": "[field]", "operator": "[operator]"}]
Quando o campo operator for igual a equals not-equals contains not-contains start-with not-starts-with end-with not-ends-with greater-than greater-than-or-equals lower-than lower-than-or-equals :
criterias=[{"field": "[field]", "operator": "[operator]", "parameter": {"type": "[parameter_type]", "value": "[parameter_value]"}}]
Quando o campo operator for igual a range not-in-range :
criterias=[{"field": "[field]", "operator": "[operator]", "parameters": {"one": {"type": "[parameter_one_type]", "value": "[parameter_one_value]"}, "two": {"type": "[parameter_two_type]", "value": "[parameter_two_value]"}}}]
Quando o tipo for string o formato deverá ser: "abc".
Quando o tipo for integer o formato deverá ser: 123.
Quando o tipo for float o formato deverá ser: 123.45.
Quando o tipo for date o formato deverá ser: "2017-12-31".
Quando o tipo for time o formato deverá ser: "23:59:59".
Quando o tipo for datetime o formato deverá ser: "2017-12-31 23:59:59".
A aplicação irá realizar testes de integridade sobre os filtros requisitados, podendo gerar exceções pelos mais variados motivos.
Caso não seja necessário todo o conteúdo de resposta é possível reduzir a estrutura de retorno através do parâmetro intersection em formato text/json através desta especificação.
O parâmetro intersection é um vetor de chave e valor multidimensional, que representa a estrutura de vetor que se deseja obter com a resposta.
Você precisará criar uma representação de vetor semelhante ao resultado esperado para que seja possível interseccionar o vetor de resposta.
intersection={"[field]": {"[field]": null, "[field]": {"[field]": null, "[field]": null}}}
A mesma intersecção acima apresentada pode ser obtida da forma abaixo:
intersection={"[field]": {"[field]": null, "[field]": ["[field]", "[field]"]}}
Para que seja possível paginar dentro das requisições permitidas é necessário informar o parâmetro pagination em formato text/json através desta especificação.
O parâmetro pagination é um vetor de chave e valor, isto implica dizer que não será possível informar mais de um critério de paginação, isto implica em dizer que apenas uma página será retornada por requisição.
pagination={"response": [response], "count": [count], "page": [page], "sort": {"[field]": "[asc|desc]", "[field]": "[asc|desc]" [...]}}
O parâmetro response é opcional e é utilizado para trazer informações extras no paginador, como a quantidade máxima de itens daquela consulta e se existe página anterior e próxima, por padrão será verdadeiro.
Caso o parâmetro response esteja preenchido com o valor false ele ocultará da resposta os elementos: pagination.response.total, pagination.response.has_previous_page e pagination.response.has_next_page.
O parâmetro response espera um boolean.
O parâmetro count é opcional e é utilizado para limitar a quantidade de resultados da consulta, por padrão será 20 (vinte) entidades.
O parâmetro count espera um número inteiro, positivo e diferente de zero.
O parâmetro page é opcional e é utilizado para iniciar a consulta (conceito de offset), por padrão será 1 (um).
O parâmetro page espera um número inteiro, positivo e diferente de zero.
O parâmetro sort é opcional e é utilizado para ordenar a consulta, por padrão será vazio.
O parâmetro sort espera um vetor de chave e valor, contendo os parâmetros: field (campo a ser ordenado) e um dos operadores asc (para ordenar do menor para o maior) ou desc (para ordenar do maior para o menor).
O parâmetro field espera uma string e diferente de vazio.
A aplicação irá realizar testes de integridade sobre a paginação requisitada, podendo gerar exceções pelos mais variados motivos.
{
"pagination": {
"request": {
"page": 1,
"count": 3
},
"response": {
"page": 1,
"count": 3,
"total": 145,
"has_previous_page": false,
"has_next_page": true
}
},
"entities": [
{
"pessoa_fisica": {
"cidade_nascimento": {
"uf": []
}
},
"mandatos": [],
"midias_sociais": {
"site": "",
"facebook": "",
"twitter": "",
"google": "",
"linkedin": "",
"youtube": "",
"flickr": "",
"instagram": ""
},
"filiacoes": [],
"contatos": [],
"licencas_parlamentares": [],
"membro_mesas_diretoras": [],
"id": "",
"status": "",
"biografia": "",
"fotografia": "",
"fotografia_presidente": ""
},
{
"pessoa_fisica": {
"cidade_nascimento": {
"uf": []
}
},
"mandatos": [],
"midias_sociais": {
"site": "",
"facebook": "",
"twitter": "",
"google": "",
"linkedin": "",
"youtube": "",
"flickr": "",
"instagram": ""
},
"filiacoes": [],
"contatos": [],
"licencas_parlamentares": [],
"membro_mesas_diretoras": [],
"id": "",
"status": "",
"biografia": "",
"fotografia": "",
"fotografia_presidente": ""
},
{
"pessoa_fisica": {
"cidade_nascimento": {
"uf": []
}
},
"mandatos": [],
"midias_sociais": {
"site": "",
"facebook": "",
"twitter": "",
"google": "",
"linkedin": "",
"youtube": "",
"flickr": "",
"instagram": ""
},
"filiacoes": [],
"contatos": [],
"licencas_parlamentares": [],
"membro_mesas_diretoras": [],
"id": "",
"status": "",
"biografia": "",
"fotografia": "",
"fotografia_presidente": ""
}
]
}
A estrutura de retorno pode ser modificada de acordo com a estrutura do registro a ser entregue, podendo, então, ocasionar modificações na estrutura de exemplo acima apresentada.
{
"pessoa_fisica": {
"cidade_nascimento": {
"uf": []
}
},
"mandatos": [],
"midias_sociais": {
"site": "",
"facebook": "",
"twitter": "",
"google": "",
"linkedin": "",
"youtube": "",
"flickr": "",
"instagram": ""
},
"filiacoes": [],
"contatos": [],
"licencas_parlamentares": [],
"membro_mesas_diretoras": [],
"id": "",
"status": "",
"biografia": "",
"fotografia": "",
"fotografia_presidente": ""
}
A estrutura de retorno pode ser modificada de acordo com a estrutura do registro a ser entregue, podendo, então, ocasionar modificações na estrutura de exemplo acima apresentada.