rev. 19/08/2024 10:10:01

Encontrou alguma incorreção nesta documentação?

Envie um e-mail para cmti_desenvolvimento@mpma.mp.br

API de autenticação

Introdução

API PHP para acesso à base de dados do GESP e autenticação no Active Directory.

Instalação

Pré-requisitos

Configurar o apache com o virtualhost neste formato:

<VirtualHost *:80>
    ServerName servername
    DocumentRoot project_dir/public
    <Directory project_dir/public>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Instruções da API

Regras gerais

O uso desta API está limitado às aplicações previamente cadastradas. Os parâmetros a seguir devem ser enviados via POST, obrigatoriamente:

Exemplo:

Utilizando /auth/servidor/listar/matricula/000000 a partir de uma aplicação que possui ID PONTO-ELETRONICO e a chave f4ca0883d1f3401753b530d7f1fa0d2d

$url = '/auth/servidor/listar/matricula/000000';
$key = 'f4ca0883d1f3401753b530d7f1fa0d2d';
$otp = md5(date('YmdHis')); // b876aeb93d0b60ee657ab8ef67731731
$hash = sha1($url . $key . $otp); // 73a09b7a3ccb777a04c029d565c48a8cbb19cb2f

Logo, todas as consultas devem enviar

levelapi=2&idapi=PONTO-ELETRONICO&authapi=73a09b7a3ccb777a04c029d565c48a8cbb19cb2f&otpapi=b876aeb93d0b60ee657ab8ef67731731

via POST.

No caso da operação "servidor/autenticar", acrescente às variáveis POST o trecho:

&password=SENHA

A senha deve ser codificada usando base64.

Para solicitar uma chave de aplicação, entre em contato com a SADS (cmti_desenvolvimento@mpma.mp.br).

Veja uma classe cliente de exemplo: AuthConsumer.php

1. End-Points SERVIDOR

1.1 - POST /servidor/listar/all

Lista todos os servidores cadastrados no GESP.

Ex.: POST /servidor/listar/all

{"result": [
    {
      "000000": {
        "Matricula": 000000,
        "Nome":"Fulano de Souza",
        "Email":"fulano.silva@mpma.mp.br",
        "uid":"fulano.silva",
        "Lotacao": "INFORM\u00c1TICA",
        "CargoEfetivo": "ANALISTA MINISTERIAL - INF \/ PROGRAMADOR",
        "CargoComissionado": "Não informado",
        "exoneracao": null,
        "Admissao": "2019-01-15 00:00:00",
        "Posse": "2019-01-15 00:00:00"
      },
      "111111": {
        "Matricula": 111111,
        "Nome":"Beltrano Silva de Souza",
        "Email":"beltrano.silva",
        "uid":"beltrano.silva@mpma.mp.br",
        "Lotacao": "Gabinete do Procurador de Justiça xxxxxx",
        "CargoEfetivo": "Promotor de Justiça",
        "CargoComissionado": "Não informado",
        "exoneracao": null,
        "Admissao": "1985-03-08 00:00:00",
        "Posse": "1985-03-09 00:00:00"
      },
      (...)
]}

1.2 - POST /servidor/listar/uid/{nome}

Busca Servidor por uid.

Retorna JSON com os dados do servidor cujo UID foi informado:

Ex.: POST /servidor/listar/uid/fulano.souza

{"result":[{
     "nome":"Fulano de Souza",
     "matricula":"000000",
     "email":"fulano.souza@mpma.mp.br",
     "uid":"fulano.souza",
     "rh":{
        "cod_cargo":"127",
        "cargo":"ANALISTA MINISTERIAL - INF \/ PROGRAMADOR",
        "cod_comissao":"0",
        "cargo_comissao":" ",
        "cod_setor":"10",
        "setor":"INFORM\u00c1TICA",
        "cod_comarca":"205",
        "comarca":"S\u00c3O LU\u00cdS",
        "responsavel_setor": "N",
        "gestor_patrimonio": "S",
        "exonerado": "0",
        "cod_tipo_vinculo":"1",
        "tipo_vinculo":"Servidor"
}}]}

1.3 - POST /servidor/listar/matricula/{matrícula}

Retorna JSON com os dados do servidor cuja matrícula foi informada:

Ex.: POST /servidor/listar/matricula/000000

{"result":[{
     "nome":"Fulano de Souza",
     "matricula":"000000",
     "email":"fulano.souza@mpma.mp.br",
     "uid":"fulano.souza",
     "rh":{
        "cod_cargo":"127",
        "cargo":"ANALISTA MINISTERIAL - INF \/ PROGRAMADOR",
        "cod_comissao":"0",
        "cargo_comissao":" ",
        "cod_setor":"10",
        "setor":"INFORM\u00c1TICA",
        "cod_comarca":"205",
        "comarca":"S\u00c3O LU\u00cdS "
        "responsavel_setor": "N",
        "gestor_patrimonio": "S",
        "exonerado": "0"
}}]}

1.4 - POST /servidor/listar/cpf/{cpf}

Retorna JSON com os dados do servidor cujo CPF foi informado:

Ex.: POST /servidor/listar/cpf/11122233344

{"result":[{
     "nome":"Fulano de Souza",
     "matricula":"000000",
     "email":"fulano.souza@mpma.mp.br",
     "uid":"fulano.souza",
     "rh":{
        "cod_cargo":"127",
        "cargo":"ANALISTA MINISTERIAL - INF \/ PROGRAMADOR",
        "cod_comissao":"0",
        "cargo_comissao":" ",
        "cod_setor":"10",
        "setor":"INFORM\u00c1TICA",
        "cod_comarca":"205",
        "comarca":"S\u00c3O LU\u00cdS "
        "responsavel_setor": "N",
        "gestor_patrimonio": "S",
        "exonerado": "0"
}}]}

1.5 - POST /servidor/listar/nome/{nome}

Retorna JSON com a lista de matrículas e nomes dos servidores cujo nome contém o texto informado.

Ex.: POST /servidor/listar/nome/Silva

{"result":[
      {
         "nome":"Fulano Silva",
         "matricula":"000000",
         "uid":"fulano.silva"
      },
      {
         "nome":"Beltrano Silva de Souza",
         "matricula":"111111",
         "uid":"fulano.silva"
      },
      ...
      {
         "nome":"Silvamir Goes",
         "matricula":"222222",
         "uid":"fulano.silva"
      }
   ]
}

1.6 - POST /servidor/listar/setor/{identificadores}

Retorna JSON com a lista de matrículas e nomes dos servidores lotados nos setores informados (códigos) separados por vírgula:

Ex.: POST /servidor/listar/setor/16,10

{"result":[
      {
         "16":{
            "123456":"CLAUDIA OLIVEIRA DO RH",
            "234567":"LUIS MAURO PESSOAL",
            "345678":"GEISA COORDENADORA DE MORAES",
         },
         "10":{
            "000000":"FULANO DE SOUZA",
            "111111":"LUIS FELIPE DE EXEMPLO SILVA",
            "222222":"CARLOS HENRIQUE REGISTRO FALSO",
            "333333":"PEDRO CLAUDIO INVENTADO LIMA",
         }
      }
   ]
}

1.7 - POST /servidor/listar-ausencias-legais/{matrícula}/{data-inicio}/{data-fim}

Retorna JSON com a lista de ausências legais (férias, afastamentos, feriados) para a matrícula e o período informados (em formato AAAAMMDD):

Ex.: POST /servidor/listar-ausencias-legais/000000/20130101/20130301

{"result":[
      {
         "0":{
            "dia_inicio":"2013-01-07",
            "dia_fim":"2013-02-05",
            "descricao":"F\u00e9rias"
         },
         "1":{
            "dia_inicio":"2013-02-11",
            "dia_fim":"2013-02-11",
            "descricao":"Feriado"
         },
         "2":{
            "dia_inicio":"2013-02-12",
            "dia_fim":"2013-02-12",
            "descricao":"Feriado"
         },
         "3":{
            "dia_inicio":"2013-02-13",
            "dia_fim":"2013-02-13",
            "descricao":"Feriado"
         }
      }
   ]
}

1.8 - POST /servidor/autenticar/{uid}

Retorna JSON com os dados do servidor cujo UID foi informado na URL e senha passada via POST (parâmetro password). Verifique propriedade "auth" no JSON de retorno:

Ex.: POST /servidor/autenticar/fulano.souza

{"result":[
      {
         "nome":"Fulano de Souza",
         "matricula":"000000",
         "email":"fulano.souza@mpma.mp.br",
         "uid":"fulano.souza",
         "auth": true,
         "rh":{
            "cod_cargo":"127",
            "cargo":"ANALISTA MINISTERIAL - INF \/ PROGRAMADOR",
            "cod_comissao":"0",
            "cargo_comissao":" ",
            "cod_setor":"10",
            "setor":"INFORM\u00c1TICA",
            "cod_comarca":"205",
            "comarca":"S\u00c3O LU\u00cdS "
            "responsavel_setor": "N",
            "gestor_patrimonio": "S",
            "exonerado": "0"
         },
         "autorizacao":{
            "grupos":{
            	"a":{
            		"id":1,
            		"nome":"nome",
            		"transacoes":{
            			"permissao 1":{
            				"id":1,
            				"descricao":"desc",
            				"permissoes":{
            					"alterar":true,
            					"incluir":false,
            					"excluir":true,
            					"consultar":false
            				}
            			}
            		}
            	}
				},
         }
      }
   ]
}

1.9 - POST /servidor/listar/tipo-vinculo/{identificadores}

Retorna JSON com os tipos de vínculo e dados dos servidores.

{"result":[{
    "1":{
        "1070738":{"nome":"AAR\u00c3O CARLOS LIMA CASTRO","uid":"aaraocarlos"},
        "591537":{"nome":"ABEL JOS\u00c9 RODRIGUES NETO","uid":"abel"}},
    "2":{
        "1065481":{"nome":"ABIMAEL FREITAS LOPES","uid":"abimaelfreitas"},
        "1069152":{"nome":"ABRAH\u00c3O JEFFERSON BATISTA SILVA","uid":"abrahaosilva"}}
}]}

1.10 - POST /servidor/listar/cargo/{identificadores}

Retorna JSON com os cargos e dados dos servidores.

{"result":[{
    "PROMOTOR DE JUSTI\u00c7A":{
        "1070738":{"nome":"AAR\u00c3O CARLOS LIMA CASTRO","uid":"aaraocarlos"},
        "591537":{"nome":"ABEL JOS\u00c9 RODRIGUES NETO","uid":"abel"}
}}]}

1.11 - POST /servidor/listar/comarca/{identificadores}

Retorna JSON com as comarcas e dados dos servidores.

{"result":[
    {"1":{
        "1066828":{"nome":"ANA VIRGINIA PINHEIRO HOLANDA DE ALENCAR","uid":"anavirginia"},
        "1070953":{"nome":"ANDREIA AZEVEDO DE ARA\u00daJO","uid":"andreiaazevedo"}}}
]}

1.12 - POST /servidor/listar/cidade/{identificadores}

Retorna servidores com lotações ativas em cidades com identificadores informados.

{"result": [{
			"395": {
				"cod_cnes": "211130",
				"cod_ibge": null,
				"cidade": "SAO LUIS",
				"comarca": "Ilha de S\u00e3o Lu\u00eds",
				"cod_comarca": "205",
				"servidores": {
					"1070081": {
						"nome": "MAURANIR MARINHO DA COSTA",
						"lotacoes": [{
							"setor": "Assessoria do Procurador-Geral",
							"cod_setor": "2",
							"tipo_lotacao": "PRINCIPAL",
							"data_inicio": "2007-01-16",
							"data_fim": null
						}]
					}
				}
			}...

1.13 - POST /servidor/listar/cidade-ibge/{identificadores-IBGE}

Retorna servidores com lotações ativas em cidades com identificadores informados (código IBGE), bem como e-mail das lotações.

    {
        "result": [
            {"emails_promotorias": {
                "2108603": "pjpinheiro@mpma.mp.br"
            },
            "547": {
                "cod_cnes": 210860,
                "cod_ibge": 2108603,
                "cidade": "PINHEIRO",
                "comarca": "Pinheiro",
                "cod_comarca": 210,
                "servidores": {
                    "1079999": {
                        "nome":"FULANO DA SILVA",
                        "lotacoes":[{
                            "setor":"02\u00aa Promotoria de Justi\u00e7a da Comarca de Pinheiro",
                            "cod_setor":446,
                            "tipo_lotacao":"PRINCIPAL",
                            "data_inicio":"2014-05-12",
                            "data_fim":null
                        }]
                    },
                    (...)
                }
            }
        ]
    }

2. End-Points SETOR

2.1 - POST /setor/listar/{nome}

Retorna JSON com os códigos e nomes dos setores cujo nome inicia pelo padrão informado.

{"result":[
      {
         "2":"ASS. PROCURADOR-GERAL",
         "19":"A\u00c7AIL\u00c2NDIA",
         "20":"ALTO PARNA\u00cdBA",
         "21":"ARAI\u00d3SES",
         "93":"ASSESSORIA AUDITORIA INTERNA",
         "94":"ARARI",
         "99":"ALC\u00c2NTARA",
         "105":"ANAJATUBA",
         "116":"AMPEM",
         "135":"AMARANTE DO MARANHAO",
         "143":"ARAME",
         "167":"A DISPOSI\u00c7\u00c3O ",
         "168":"ASSESSORIA TECNICA",
         "208":"ASSESSORIA CONTROLE INTERNO"
      }
   ]
}

2.2 - POST /setor/obter/{identificadores}

Retorna JSON com os códigos e nomes dos setores informados, separados por vírgula:

{"result":[
      {
         "10":"INFORM\u00c1TICA",
         "11":"COORD DE GEST\u00c3O DE PESSOAS"
      }
   ]
}

2.3 - POST /setor/detalhe/{identificadores}

Retorna JSON com detalhes dos setores informados:

{"result":[
      {
         "10":{"nome":"INFORM\u00c1TICA","telefones":"X"},
         "11":{"nome":"COORD DE GEST\u00c3O DE PESSOAS","telefones":"Y"},
      }
   ]
}

2.4 - POST /setor/obter-servidores/{identificadores}

Retorna JSON com os dados dos servidores lotados nos setores informados, separados por vírgula:

{"result":[
        {
            "10":{
                 "codigo":"10",
                 "setor":"INFORM\u00c1TICA",
                 "servidores":[
                    {
                        "matricula":"0000000",
                        "nome":"Fulano de Souza",
                        "codigo_cargo_efetivo":"126",
                        "cargo_efetivo":"ANALISTA MINISTERIAL - INF\/ SUPORTE",
                        "codigo_cargo_comissionado":"18",
                        "cargo_comissionado":"COORDENADOR CC-08"
                    },
                    {
                        "matricula":"0000001",
                        "nome":"Beltrano de Souza",
                        "cod_cargo":"127",
                        "cargo":"ANALISTA MINISTERIAL - INF \/ PROGRAMADOR",
                        "codigo_cargo_comissionado":"18",
                        "cargo_comissionado":""
                    }
                 ]
            }
            "11":{
                ...
            }
      }
   ]
}

2.5 - POST /setor/obter-cidade/{identificadores}

Retorna JSON com os dados das cidades da base. Opcionalmente, podem ser filtradas pelos códigos informados separados por vírgula:

Ex.: POST /setor/obter-cidade/9,35,49,61

{
  "result": [
    {
      "9": "COELHO NETO",
      "35": "IGARAPE GRANDE",
      "49": "SAO BENTO",
      "61": "TUNTUM"
    }
  ]
}

2.6 - POST /setor/obter-unidade/{identificadores}

Retorna JSON com os dados das unidades da base. Opcionalmente, podem ser filtradas pelos códigos informados separados por vírgula:

Ex.: POST /setor/obter-unidade/10,11

{
  "result": [
    {
      "10": {
        "idUnidade": 10,
        "idUnidadePai": 14,
        "idTipoUnidade": null,
        "idEmpresa": 2,
        "nome": "Coordenadoria de Modernização e Tecnologia da Informação",
        "dataInicio": "2018-09-27",
        "dataFim": null,
        "descricao": "",
        "email": "",
        "aceitaEntregaProduto": "N",
        "idCalendario": 2,
        "sigla": "CMTI",
        "idGrupo": null,
        "endereco": "Avenida Carlos Cunha s/n - Jaracaty",
        "numero": "",
        "complemento": "",
        "bairro": "",
        "fone": "1641/1642/1745",
        "idCidade": 395,
        "idPais": 1,
        "cep": "65076906",
        "idUF": 15,
        "latitude": null,
        "longitude": null
      },
      "11": {
        "idUnidade": 11,
        "idUnidadePai": 14,
        "idTipoUnidade": null,
        "idEmpresa": 2,
        "nome": "Coordenadoria de Gestão de Pessoas",
        "dataInicio": "2018-09-27",
        "dataFim": null,
        "descricao": "",
        "email": "",
        "aceitaEntregaProduto": "N",
        "idCalendario": 2,
        "sigla": "CGP",
        "idGrupo": null,
        "endereco": "Avenida Carlos Cunha s/n - Jaracaty",
        "numero": "",
        "complemento": "",
        "bairro": "",
        "fone": "3219-1646/1647/1648/1760",
        "idCidade": 395,
        "idPais": 1,
        "cep": "65076906",
        "idUF": 15,
        "latitude": null,
        "longitude": null
      }
    }
  ]
}

2.7 - POST /setor/obter-unidade-trabalho/{identificadores}

Retorna JSON com os dados das unidades de trabalho consumidas pelo DIGIDOC (VW_UNIDADE_TRABALHO). Opcionalmente, podem ser filtradas pelos códigos informados separados por vírgula:

{"result":[{"10":{"nome":"Coordenadoria de Moderniza\u00e7\u00e3o e Tecnologia da Informa\u00e7\u00e3o","Orgao":"PGJ","Comarca":205,"Ativo":1,"Endereco":"Avenida Carlos Cunha s\/n - Jaracaty65.076-906, SAO LUIS - MA","ENDERECO_CIDADE_ESTADO":"Avenida Carlos Cunha s\/n - Jaracaty, SAO LUIS \/ MA","CEP":"65.076-906","TELEFONE":"(98) 3219-1773 ","EMAIL":"cmti@mpma.mp.br"}}]}

3. End-Points VÍNCULO

3.1 - POST /vinculo/obter/{identificador}

Retorna JSON com o nome do vínculo associado ao identificador:

{"result":[{"1":"Membro"},{"2":"Servidor"}]}

3.2 - POST /vinculo/listar/{nome}

Retorna JSON com os códigos e nomes dos vínculos cujo nome inicia pelo padrão informado.

{"result":[{"1":"Membro"}]}

4. End-Points COMARCA

4.1 - POST /comarca/obter/{identificador}

Retorna JSON com o nome do vínculo associado ao identificador:

{"result":[{"8":"Mirador","9":"Riach\u00e3o","12":"Icatu"}]}

4.2 - POST /comarca/listar/{nome}

Retorna JSON com os códigos e nomes dos vínculos cujo nome inicia pelo padrão informado.

{"result":[{"205":"Ilha de S\u00e3o Lu\u00eds","120":"Pa\u00e7o do Lumiar","15":"Santa Luzia do Paru\u00e1","33":"Santa Luzia do Tide","50":"S\u00e3o Luiz Gonzaga"}]}

4.3 - POST /comarca/listar/setor/{identificador}

Retorna JSON com os códigos e nomes dos vínculos cujo nome inicia pelo padrão informado.

{"result":[{
    "10":"INFORM\u00c1TICA",
    "11":"COORD DE GEST\u00c3O DE PESSOAS"
}]}

4.4 - POST /comarca/listar/all

Retorna JSON com os códigos e nomes de todas as comarcas.

{"result":[{"205":"Ilha de S\u00e3o Lu\u00eds","120":"Pa\u00e7o do Lumiar","15":"Santa Luzia do Paru\u00e1","33":"Santa Luzia do Tide","50":"S\u00e3o Luiz Gonzaga"}]}

4.5 - POST /comarca/listar/setor-comarca/{identificador}

Retorna JSON com os códigos e nomes dos setores agrupados pelo id da comarca.

{
    "result": [
        {
        "12": [
            {
            "codigo": 107,
            "setor": "Promotoria de Justiça da Comarca de Icatu"
            },
            {
            "codigo": 626,
            "setor": "31ª ZONA ELEITORAL - Promotoria de Justiça da Comarca de Icatu"
            }
        ],
        "13": [
            {
            "codigo": 99,
            "setor": "Promotoria de Justiça da Comarca de Alcântara"
            },
            {
            "codigo": 646,
            "setor": "52ª ZONA ELEITORAL - Promotoria de Justiça da Comarca de Alcântara"
            }
        ]
        }
    ]
}

4.6 - POST /comarca/listar/por-entrancia/{identificador}

Retorna JSON com lista de comarcas por entrância (Inicial = 0, Intermediaria = 1, Final = 2)

{
    "result":[
        {
            "36":"A\u00e7ail\u00e2ndia",
            "206":"Araioses",
            "31":"Bacabal",
            (...)
        }
    ]
}

5. End-Points FERIADO

5.1 - POST /feriado/listar/{data_inicio}/{data_fim}/{setor}

Retorna JSON com os feriados válidos em um determinado local

{"result":[
      {
         "0":{
            "dia_inicio":"2013-01-07",
            "dia_fim":"2013-02-05",
         },
         "1":{
            "dia_inicio":"2013-02-11",
            "dia_fim":"2013-02-11",
            "descricao":"Feriado"
         },
         "2":{
            "dia_inicio":"2013-02-12",
            "dia_fim":"2013-02-12",
            "descricao":"Feriado"
         },
         "3":{
            "dia_inicio":"2013-02-13",
            "dia_fim":"2013-02-13",
            "descricao":"Feriado"
         }
      }
   ]
}

6. End-Points ESTADO

6.1 - POST /estado/listar/{nome}

Lista estados com alguma parte do nome semelhante a string de busca (opcional)

{"result":[
        {
            "100":"ACRE",
            "101":"ALAGOAS",
            "103":"AMAPA",
            ...
        }
    ]
}

6.2 - POST /estado/listar/cidade/{codigos}

Lista cidades pertencentes aos estados com os códigos informados

{"result":[
        {
            "98":{
                "2 ":"SAO JOAO DO PARAISO",
                "5":"BARRA DO CORDA",
                "9":"COELHO NETO",
                ...
            },
            "100":{
                "100":"CAPINZAL DO NORTE",
                "745":"Acrel\u00e2ndia",
                "746":"Assis Brasil",
                ...
            }
        }
    ]
    }

6.3 - POST /estado/obter/{codigos}

Lista estados com os códigos informados

{"result":[
            {
                "100":"ACRE",
                "101":"ALAGOAS",
                "103":"AMAPA",
                ...
            }
        ]
    }

7. End-Points ORGÃO EXTERNO

7.1 - POST /orgao-externo/listar/{nome}

Lista órgãos externos com alguma parte da razão social semelhante a string de busca (opcional)

{"result":[
            {
                "1":{
                    "CNPJ":"12345678901234",
                    "RAZAO_SOCIAL":"razao 1",
                    "NOME_REPRESENTANTE":"rep",
                    "ENDERECO":"end",
                    "ID_CIDADE":"1",
                    "DT_CADASTRO":"2020-08-10 00:00:00"
                    },
                    ...
            }
        ]
}

Drivers SqlServer

https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017&tabs=ubuntu18-install%2Calpine17-install%2Cdebian8-install%2Credhat7-13-install%2Crhel7-offline

https://learn.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver16#installing-on-ubuntu