Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Produto:

TOTVS Agro API Hub


Linha de Produto:

Linha PIMS

Segmento:

Agroindústria

Módulo:

Framework

Função:Todas
País:Brasil
Ticket:
Requisito/Story/Issue (informe o requisito relacionado) :

Jira
serverJIRA
serverId0c783de1-186e-383b-975c-a1acd7d76cb5
keyDAGROFRAME-5467

02. SITUAÇÃO/REQUISITO

A descontinuação do TOTVS Agro Portal Mobile está relacionada à reestruturação da topologia do ecossistema TOTVS Agro Bioenergia na T-Cloud, bem como à revisão da arquitetura, componentes e soluções do portfólio TOTVS Agro. Essa iniciativa faz parte da jornada contínua de modernização do produto TOTVS Agro Bioenergia, alinhada às diretrizes de evolução tecnológica da plataforma.

Nesse contexto, as principais funcionalidades atualmente disponíveis no TOTVS Agro Portal Mobile serão migradas para o TOTVS Agro APIHub, incluindo, entre elas, a exposição de APIs a partir de um catálogo estruturado de serviços e formula. de parâmetros

03. SOLUÇÃO

...

  • Criado exposição de APIs genéricas GET/POST de parâmetros

    GET/mobile/{version}/**Consulta genérica de um serviço mobile baseado na URL dinâmica.
    POST/mobile/{version}/**Execução de comandos (INSERT/UPDATE/DELETE/PROCESSOS) sobre um ou mais serviços mobile.

    1. GET Dinâmico

    O endpoint captura a URL completa e identifica o serviço a partir do segmento da seção (índice 4 da URL) somado ao primeiro queryParam.

    Estrutura base:

    /mobile/{version}/{algumContexto}/{secao}?chaveBase=valorBase&outrosParametros=...
    • {secao} → Nome lógico do serviço (mapeado como urlAccess).
    • O primeiro parâmetro de query (chaveBase=valorBase) é incorporado à chave do serviço: /{secao}?chaveBase=valorBase.
    • Demais parâmetros são enviados como lista de parâmetros (Parameter) para substituição nas fórmulas e SQL.

    Parâmetros reservados (ignorados na execução lógica de substituição):

    • uniqueID → Correlation ID. É devolvido (quando aplicável) no campo UniqueID do ResponseDTO em chamadas POST e utilizado em respostas de erro do GET.
    • useSi / usesi → Reservado para comportamento futuro (não participa da filtragem de SQL).

    Regras de retorno:

    • Se o serviço possuir query vazia: retorna um objeto com as chaves definidas em structureFields preenchidas com valores padrão e MOB_STATUS = "N".
    • Se a consulta não retornar linhas: retorna objeto com campos em "0" e MOB_STATUS = "Nenhum registro à ser exibido.".
    • Caso haja linhas: cada linha é convertida para Map<String,Object> onde:
      • Nomes dos campos seguem o identify definido em structureFields (upper-case no JSON final).
      • Campo adicional: MOB_STATUS = "N".

    Exemplo de chamada:

    GET /mobile/v1/contextoX/produtos?instancia=TST&codigo=10&uniqueID=ABC-123
    v1/parametrosConsulta que retorna todos os parâmetros de mobilidade do TOTVS Agro Bioenergia.

    1. GET Parametros

    Exemplo de chamada:

    GET /mobile/v1/parametros
    

    Exemplo de retorno:

    Bloco de código
    languagejava
    [
        {
            "MOBILE_COLCAM.COD_FUNC_IGUAL_CRACHA": "",
            "MOBILE_COLCAM.FG_APAGAR_HORARIO_URBANO": "",
            "MOBILE_COLCAM.FG_APONT_DIFICIL_ACESSO_RUR": "",
            "MOBILE_COLCAM.FG_APONT_DIFICIL_ACESSO_URB": "",
            "MOBILE_COLCAM.FG_APONT_HORAS_TRABALHADAS": "",
            "MOBILE_COLCAM.FG_APONT_PRODUCAO_APOS_SAIDA": "",
            "MOBILE_COLCAM.FG_APONT_PRODUCAO_COM_REG": "",
            "MOBILE_COLCAM.FG_APONT_TURNO": "",
            "MOBILE_COLCAM.FG_APONT_VALOR_PADRAO": "",
            "MOBILE_COLCAM.FG_APONT_VERBA": "",
            "MOBILE_COLCAM.FG_ATIVAR_HORARIO_MANUAL": "",
            "MOBILE_COLCAM.FG_ATIVAR_HOR_MANUAL_CRA": "",
            "MOBILE_COLCAM.FG_BUSCAR_LOCAIS_POR_INST": "",
            "MOBILE_COLCAM.FG_DIGITAR_VALOR_UNITARIO": "",
            "MOBILE_COLCAM.FG_DISP_SEM_OBRIG_PONTO": "",
            "MOBILE_COLCAM.FG_ENCERRAR_TURNO_URBANO": "",
            "MOBILE_COLCAM.FG_EXIBIR_CAMPEAO": "",
            "MOBILE_COLCAM.FG_EXIBIR_KG_MT": "",
            "MOBILE_COLCAM.FG_EXIBIR_VALOR_UNITARIO": "",
            "MOBILE_COLCAM.FG_EXPORTAR_ENTRE_INTERVALO": "",
            "MOBILE_COLCAM.FG_EXPORTAR_HORARIOS_SEG": "",
            "MOBILE_COLCAM.FG_GERAR_QTD1_VALOR0_HORA": "",
            "MOBILE_COLCAM.FG_HABILITAR_BATIDA_HORARIO": "",
            "MOBILE_COLCAM.FG_HABILITAR_ENC_FUNCIONARIO": "",
            "MOBILE_COLCAM.FG_HABILITAR_REABERTURA_TURMA": "",
            "MOBILE_COLCAM.FG_HABILITAR_REEXPORTACAO": "",
            "MOBILE_COLCAM.FG_JUSTIFICAR_FALTA": "",
            "MOBILE_COLCAM.FG_LANCAR_HOR_URB_SEM_TURNO": "",
            "MOBILE_COLCAM.FG_LANCAR_PRODUCAO_SEM_PONTO": "",
            "MOBILE_COLCAM.FG_MANIPULAR_DATA_APTO_SEQ": "",
            "MOBILE_COLCAM.FG_NAO_ENC_RUR_HOR_INCOMP": "",
            "MOBILE_COLCAM.FG_ORDENAR_FUNC_APTO_PRODUCAO": "",
            "MOBILE_COLCAM.FG_VALIDAR_INTERVALO_ALMOCO": "",
            "MOBILE_COLCAM.FG_VALIDAR_INTERVALO_CAFE": "",
            "MOBILE_COLCAM.FG_VALIDAR_LIMITE_ENT_SAI_RUR": "",
            "MOBILE_COLCAM.FG_VERIFICAR_INTERVALO_RUR": "",
            "MOBILE_COLCAM.FG_VERIFICAR_INTERVALO_URB": "",
            "MOBILE_COLCAM.INSTANCIAS_DIFICIL_ACESSO": "",
            "MOBILE_COLCAM.INTERVALO_ALMOCO": "",
            "MOBILE_COLCAM.INTERVALO_CAFE": "",

    Serviço resolvido: /produtos?instancia=TST Parâmetros enviados: codigo=10

    Exemplo de retorno (ilustrativo):

    Bloco de código
    languagejava
    [
      {
        "CODIGO": 10,
        "DESCRICAO": "Produto Teste",
        "TIPO": "INS",
        "MOB_STATUS": "N"
      }
    ]

    2. POST Dinâmico

    Permite enviar uma lista de objetos descrevendo serviços a serem executados em sequência (incluindo hierarquias através de Detalhes). Cada item (DetalheDTO) referencia um serviço (Url) e os campos a serem aplicados na montagem dos parâmetros SQL.

    Endpoint genérico: /mobile/{version}/qualquer/coisa/... (mesma lógica do GET para resolução do contexto)

    Body:

    Bloco de código
    languagejava
    [ { "NomeObjeto": "APTO001", "Url": "/servicoPrincipal?instancia=TST", "Campos": [ { "Nome": "codigo", "Valor": 100 }, { "Nome": "descricao", "Valor": "Teste" } ], "Detalhes": [ {
    
            "
    NomeObjeto
    MOBILE_COLCAM.INTERVALO_PADRAO": "
    APTO001-DET1
    ",
            "
    Url
    MOBILE_COLCAM.INTERVALO_SINC_JORNADA": "
    /servicoFilho?instancia=TST
    ",
            "
    Campos
    MOBILE_COLCAM.NUM_CHARS_LEITURA_CRACHA": 
    [
    "",
            "MOBILE_COLCAM.TEMPO_ENVIO_AUTO_APTO": "",
           
    {
     "
    Nome
    MOBILE_COLCAM.TEMPO_LIMITE_APTO_HOR_RUR": "
    codigoItem
    ",
    "Valor": 1 },
    
            "MOBILE_COLCAM.VALORES_DIFICIL_ACESSO": "",
            "MOBILE_GERAL.APTO_INSUMOS_BOTAO_INSUMOS": "",
            "MOBILE_GERAL.BACKGROUND_COLOR": "",
       
    {
         "
    Nome
    MOBILE_GERAL.DIAS_MANTER_APONTAMENTOS": "
    quantidade
    ",
    "Valor": 50 }
    
            "MOBILE_GERAL.DIAS_VISUALIZACAO_APTO": "",
            "MOBILE_GERAL.FG_FIXAR_EQUIPAMENTO": "",
            
    ]
    "MOBILE_GERAL.FG_HABILITAR_MODO_QUIOSQUE": "",
            "
    Detalhes
    MOBILE_GERAL.FG_PERMITIR_APTO_DATA_RETRO": 
    []
    "",
          
    } ] }, {
      "MOBILE_GERAL.FG_SINC_CC_CCxOP_INSTANCIA": "",
            "MOBILE_GERAL.FG_UTILIZA_PIMS_ATIV_AGRIC": "",
            "MOBILE_GERAL.FG_UTILIZA_PIMS_SERVER": "",
            "MOBILE_GERAL.ID_BROCAS": "",
            "
    NomeObjeto
    MOBILE_GERAL.ID_COLCAM": "
    APTO002
    ",
            "
    Url
    MOBILE_GERAL.ID_ERVA": "
    /servicoPrincipal?instancia=TST
    ",
          
    "Campos
      "MOBILE_GERAL.ID_INSUMOS": 
    [
    "",
          
    {
      "
    Nome
    MOBILE_GERAL.ID_MANFRO": "
    codigo
    ",
            "
    Valor
    MOBILE_GERAL.ID_MANUAIS":
    101 },
     "",
            "MOBILE_GERAL.ID_MECANIZADA": "",
           
    {
     "
    Nome
    MOBILE_GERAL.ID_PERDAS": "
    descricao
    ",
     
    "Valor
           "MOBILE_GERAL.ID_PLANTIO": "
    Outro" } ],
    ",
            "MOBILE_GERAL.INDUSTRIA_MOSTRAR_LIMITES": "",
            "MOBILE_GERAL.INSTANCIA": "",
          
    "Detalhes
      "MOBILE_GERAL.MANFRO_APONTA_SOL_PECAS": 
    [] } ]

    Observações:

    • Campo Url deve incluir o serviço + primeiro parâmetro base (mesma regra do GET) ex: /servicoX?instancia=PRD.
    • Lista Campos é confrontada com o mapeamento structureFields do serviço; qualquer campo não mapeado é ignorado.
    • Campo Detalhes suporta recursividade (árvore ilimitada). A implementação “achata” a hierarquia internamente (fattenDetalhes).
    • Cada serviço é executado isoladamente. Falhas individuais são registradas no array Processo da resposta.

    Retorno: sempre uma lista com um único objeto ResponseDTO.

    Estrutura de Resposta (POST):

    Bloco de código
    languagejava
    [ { "Url": "/mobile/v1/...", "Detalhes": null, "IDProcesso": null, "Conteudo": null, "Usuario": null, "NomeObjeto": "RetornoServico", "Campos": [ { "Nome": "ServicosChamados", "Valor": "/servicoPrincipal?instancia=TST;/servicoFilho?instancia=TST;" }, { "Nome": "Mensagem", "Valor": "" }
    "",
            "MOBILE_GERAL.MANFRO_ENDERECO_ENVIO_OP": "",
            "MOBILE_GERAL.MANFRO_EQPTO_POR_INSTANCIA": "",
            "MOBILE_GERAL.MANFRO_HAB_APTO_OS_OFFLINE": "",
            "MOBILE_GERAL.MANFRO_HAB_FUNC_LIBERACAO": "",
            "MOBILE_GERAL.MANFRO_LOGIN_FIXO_OS": "",
            "MOBILE_GERAL.MANFRO_ODOMETRO_AUTO": "",
            "MOBILE_GERAL.MANFRO_PERMITIR_ABRIR_OS": "",
            "MOBILE_GERAL.MANFRO_PER_ALT_FUNC_OFF": "",
            "MOBILE_GERAL.MANFRO_PER_BOMBA_DUPLA": "",
            "MOBILE_GERAL.MANFRO_SENHA_AUTH_ENVIO": "",
            "MOBILE_GERAL.MANFRO_SOMENTE_ENV_OS_ENC": "",
            "MOBILE_GERAL.MANFRO_USUARIO_AUTH_ENVIO": "",
            "MOBILE_GERAL.MECANIZADA_FIXAR_IMPL": "",
            "MOBILE_GERAL.MECANIZADA_PER_DIV_JORNADA": "",
            "MOBILE_GERAL.MECANIZADA_QTD_IMPL_LIB": "",
            "MOBILE_GERAL.MENU_TOTVS_SAIR_QUIOSQUE": "",
            "MOBILE_GERAL.OC_PERM_SEL_TALHAO_PRE": "",
            "MOBILE_GERAL.OC_SINC_VIA_PORTAL": "",
            "MOBILE_GERAL.OC_USA_USUARIO_ESTENDIDO": "",
            "MOBILE_GERAL.SEPARADOR_DECIMAL": "",
            "MOBILE_GERAL.TEMPO_ENVIO_RASTREIO": "",
            "MOBILE_GERAL.TOTAL_DIAS_RETROATIVOS": "",
            "MOBILE_GERAL.USUARIOS_SAIR_KIOSK": "",
            "MOBILE_GERAL.UTC_SERVIDOR": "",
            "MOBILE_MI.FG_LEITURA_CODIGO_BARRAS": "",
            "MOBILE_MI.FG_MOSTRAR_LIMITES_CHECKLIST": "",
          
    {
      "
    Nome
    MOBILE_MI.FG_NAVEGAR_PONTOS_ROTA": "
    RegistrosAfetados
    ",
     
    "Valor
           "MOBILE_QUALIOPER.BACKGROUND_COLOR": 
    2 }
    "",
          
    {
      "
    Nome
    MOBILE_QUALIOPER.DIRETORIO_UPLOAD_IMG": "
    QtdServicosChamados
    ",
          
    "Valor
      "MOBILE_QUALIOPER.DISTANCIA_LIBERACAO_APTO": 
    2 }
    "",
          
    {
      "
    Nome
    MOBILE_QUALIOPER.ENDERECO_FTP": "
    QtdRegistroEnviados
    ",
           
    "Valor
     "MOBILE_QUALIOPER.ENDERECO_INTERNO_FTP": 
    3 }
    "",
            
    ]
    "MOBILE_QUALIOPER.FG_ATIVA_LOG_LOCAL": "",
          
    "Processo
      "MOBILE_QUALIOPER.FG_CONFIRMAR_DETALHE": 
    [
    "",
            
    {
    "MOBILE_QUALIOPER.FG_INFORMAR_CC": "",
            "
    apto
    MOBILE_QUALIOPER.FG_MANIPULAR_APONTAMENTOS": "
    APTO001
    ",
            "
    result
    MOBILE_QUALIOPER.FG_MOSTRAR_TELA_CALCULOS": "
    SUCCESS
    ",
            "
    error
    MOBILE_QUALIOPER.FG_REUTILIZAR_DADOS_CABEC": 
    null
    "",
           
    }
     "MOBILE_QUALIOPER.FG_USAR_AUDITORIA": "",
            
    {
    "MOBILE_QUALIOPER.FG_USAR_BOTAO_VOLTAR": "",
            "
    apto
    MOBILE_QUALIOPER.FG_USAR_LISTA_OPERACOES": "
    APTO001-DET1
    ",
            "
    result
    MOBILE_QUALIOPER.FG_USO_OBRIGATORIO_GPS": "
    SUCCESS
    ",
            "
    error
    MOBILE_QUALIOPER.FG_UTILIZAR_CAMERA": 
    null
    "",
            
    }
    "MOBILE_QUALIOPER.FG_UTILIZAR_GRAVADOR_VOZ": "",
            
    {
    "MOBILE_QUALIOPER.FG_UTILIZAR_MAPA": "",
            "
    apto
    MOBILE_QUALIOPER.FG_UTILIZA_LISTA_INDIC": "
    APTO002
    ",
            "
    result
    MOBILE_QUALIOPER.FG_VALIDAR_EQPTO_X_OPER": "
    FAILURE
    ",
            "
    error
    MOBILE_QUALIOPER.FG_VALIDAR_ORDEM_CORTE": 
    "Mensagem de erro específica"
    "",
            "MOBILE_QUALIOPER.FG_VALIDAR_PERMISSAO_USU": "",
          
    } ],
      "MOBILE_QUALIOPER.FG_VALOR_INDICADOR_NULO": "",
            "MOBILE_QUALIOPER.FUNC_RESP_IGUAL_LOGIN": "",
            "
    UniqueID
    MOBILE_QUALIOPER.RESP_AVAL_IGUAL_LOGIN": "
    ABC-123
    ",
    
    } ]

    Principais Campos (Campos -> Nome):

    • ServicosChamados: Lista concatenada de URLs únicas executadas.
    • Mensagem: Mensagens agregadas de exceções gerais.
    • RegistrosAfetados: Soma de linhas afetadas nas execuções (quando aplicável).
    • QtdServicosChamados: Quantidade de serviços distintos (Url).
    • QtdRegistroEnviados: Total de itens (após flatten) processados.

    Processo (itens do array Processo):

    • apto: Valor vindo de NomeObjeto do DetalheDTO original.
    • result: SUCCESS ou FAILURE.
    • error: Detalhe da falha (quando houver).

    Regras de erro:

  • Cada falha individual não interrompe o processamento dos demais serviços.
  • Exceções gerais populam Mensagem e ServicosChamados permanece preenchido.
  • Requisição sem body ou body vazio retorna campos com contagens zeradas.
            "MOBILE_QUALIOPER.SENHA_FTP": "",
            "MOBILE_QUALIOPER.TEMPO_ESPERA_LIB_APTO": "",
            "MOBILE_QUALIOPER.TIPO_APONTAMENTO": "",
            "MOBILE_QUALIOPER.TOTAL_HORAS_MANTER_APTOS": "",
            "MOBILE_QUALIOPER.USUARIO_FTP": "",
            "MOBILE_TRANSP_DIVERSOS.FG_APONTAR_TURMA": "",
            "MOBILE_TRANSP_DIVERSOS.FG_ENVIAR_APONT_OFICIAL": "",
            "MOBILE_TRANSP_DIVERSOS.SEPARADOR_DECIMAL": ""
        }
    ]

04. DEMAIS INFORMAÇÕES

Não se aplica.

...