Skip to content

Exportando relatórios de demandas

Este documento descreve as diferentes formas de exportar relatórios de demandas do sistema.

Relatório por intervalo de tempo

Para exportar relatórios de status de demandas por intervalo de tempo, é necessário utilizar a query Requisition_reportRequisitionsStatusesByTimeInterval. Essa query recebe como parâmetro um objeto do tipo Requisition_ReportRequisitionsStatusesByTimeInterval_Input.

Propriedades do input

PropriedadeTipoDescrição
startDateStringData inicial do intervalo no formato ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ)
finishDateStringData final do intervalo no formato ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ)

WARNING

O intervalo entre as datas startDate e finishDate não pode exceder 3 meses. Caso contrário, a query retornará um erro.

Retorno

A query retorna um objeto que pode ser de dois tipos:

Sucesso (Requisition_ReportRequisitionsStatusesByTimeInterval_Output_Success)

PropriedadeTipoDescrição
urlToDownloadFileStringURL para download do arquivo do relatório

Falha (Requisition_ReportRequisitionsStatusesByTimeInterval_Output_Failures)

PropriedadeTipoDescrição
failuresObjectObjeto contendo informações sobre a falha
__typenameStringTipo do objeto retornado
graphql
query RequisionExportReportsModal_reportRequisitionsStatusesByTimeInterval($input: Requisition_ReportRequisitionsStatusesByTimeInterval_Input) {
  result: Requisition_reportRequisitionsStatusesByTimeInterval(input: $input) {
    ... on Requisition_ReportRequisitionsStatusesByTimeInterval_Output_Success {
      urlToDownloadFile
      __typename
    }
    ... on Requisition_ReportRequisitionsStatusesByTimeInterval_Output_Failures {
      failures {
        __typename
      }
      __typename
    }
    __typename
  }
}
js
async function exportRequisitionReport(startDate, finishDate) {
  const response = await fetch('https://core-api.linte.com/graphql', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'key': '<seu-token>'
    },
    body: JSON.stringify({
      query: `
        query RequisionExportReportsModal_reportRequisitionsStatusesByTimeInterval($input: Requisition_ReportRequisitionsStatusesByTimeInterval_Input) {
          result: Requisition_reportRequisitionsStatusesByTimeInterval(input: $input) {
            ... on Requisition_ReportRequisitionsStatusesByTimeInterval_Output_Success {
              urlToDownloadFile
              __typename
            }
            ... on Requisition_ReportRequisitionsStatusesByTimeInterval_Output_Failures {
              failures {
                __typename
              }
              __typename
            }
            __typename
          }
        }
      `,
      variables: {
        input: {
          startDate,
          finishDate
        }
      }
    })
  });

  const result = await response.json();
  console.log(result);
}

// Exemplo de uso
const startDate = '2025-02-23T00:00:00.000Z';
const finishDate = '2025-03-25T02:59:59.999Z';

exportRequisitionReport(startDate, finishDate);
python
import requests

def export_requisition_report(start_date, finish_date):
    response = requests.post(
        'https://core-api.linte.com/graphql',
        headers={
            'Content-Type': 'application/json',
            'key': '<seu-token>'
        },
        json={
            'query': '''
                query RequisionExportReportsModal_reportRequisitionsStatusesByTimeInterval($input: Requisition_ReportRequisitionsStatusesByTimeInterval_Input) {
                  result: Requisition_reportRequisitionsStatusesByTimeInterval(input: $input) {
                    ... on Requisition_ReportRequisitionsStatusesByTimeInterval_Output_Success {
                      urlToDownloadFile
                      __typename
                    }
                    ... on Requisition_ReportRequisitionsStatusesByTimeInterval_Output_Failures {
                      failures {
                        __typename
                      }
                      __typename
                    }
                    __typename
                  }
                }
            ''',
            'variables': {
                'input': {
                    'startDate': start_date,
                    'finishDate': finish_date
                }
            }
        }
    )
    
    print(response.json())

if __name__ == '__main__':
    # Exemplo de uso
    start_date = '2025-02-23T00:00:00.000Z'
    finish_date = '2025-03-25T02:59:59.999Z'
    
    export_requisition_report(start_date, finish_date)

Exemplo de preview do relatório

O relatório exportado será um arquivo XLSX com duas abas:

Aba Dados

ColunaDescriçãoTipo
idID da demandaString (ex: STO-N2HA63)
Data de criaçãoData de criação da demandaData (DD/MM/YY HH:mm)
Data início da etapaData de início da etapaData (DD/MM/YY HH:mm)
Data fim da etapaData de fim da etapaData (DD/MM/YY HH:mm)
EtapaEtapa da demandaString
ResponsávelResponsável da demandaString
Área do responsávelÁrea do responsávelString
AçãoAção da demandaString
Tempo (minutos)Tempo da demanda em minutosDecimal
Tempo (horas)Tempo da demanda em horasDecimal
Tempo (dias)Tempo da demanda em diasDecimal
Tempo (dias úteis)Tempo da demanda em dias úteisDecimal

Aba Resumo

A aba Resumo apresenta uma visão consolidada das demandas no período, contendo:

  1. Título do relatório e período de referência
  2. Indicadores gerais:
    • Total de demandas criadas
    • Quantidade de demandas em progresso
    • Quantidade de demandas finalizadas
    • Quantidade de demandas canceladas
  3. Métricas de tempo:
    • Tempo médio de conclusão das demandas (em dias)
    • Tempo médio de dias por etapa, detalhando cada etapa da demanda

INFO

Dados anteriores a 22/06/2021 não constam no relatório.

Relatório geral

O relatório geral é um relatório que contém todas as demandas do sistema, além de informações sobre os demandantes e responsáveis e as informações sobre os campos personalizados (informações) da demanda.

Para exportar o relatório geral, é necessário utilizar a query Report_extractRequisitionsReport. Não é necessário passar nenhum parâmetro para a query.

Retorno

A query retorna um objeto que pode ser de dois tipos:

Sucesso (Report_ExtractRequisitionsReport_Output_Success)

PropriedadeTipoDescrição
urlToDownloadFileStringURL para download do arquivo do relatório

Falha (Report_ExtractRequisitionsReport_Output_Failures)

PropriedadeTipoDescrição
failuresObjectObjeto contendo informações sobre a falha
__typenameStringTipo do objeto retornado
graphql
query {
  result: Report_extractRequisitionsReport {
    ... on Report_ExtractRequisitionsReport_Output_Success {
    	urlToDownloadFile
    }
    ... on Report_ExtractRequisitionsReport_Output_Failures {
      failures {
        ... on Error {
          message
        }
      }
    }
  }
}
js
async function exportRequisitionReport() {
  const response = await fetch('https://core-api.linte.com/graphql', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'key': '<seu-token>'
    },
    body: JSON.stringify({
      query: `
        query {
          result: Report_extractRequisitionsReport {
            ... on Report_ExtractRequisitionsReport_Output_Success {
              urlToDownloadFile
            }
            ... on Report_ExtractRequisitionsReport_Output_Failures {
              failures {
                ... on Error {
                  message
                }
              }
            }
          }
        }
      `
    })
  });

  const result = await response.json();
  console.log(result);
}

// Exemplo de uso
exportRequisitionReport();
python
import requests

def export_requisition_report():
    response = requests.post(
        'https://core-api.linte.com/graphql',
        headers={
            'Content-Type': 'application/json',
            'key': '<seu-token>'
        },
        json={
            'query': '''
                query {
                  result: Report_extractRequisitionsReport {
                    ... on Report_ExtractRequisitionsReport_Output_Success {
                      urlToDownloadFile
                    }
                  }
                }
            ''',
            'variables': {}
        }
    )
    
    print(response.json())

if __name__ == '__main__':
    export_requisition_report()

Exemplo de preview do relatório

O relatório exportado será um arquivo XLSX com as seguintes colunas padrão:

ColunaDescriçãoTipo
idID da demandaString (ex: STO-N2HA63)
StatusStatus da demandaString (ex: Em andamento, Em análise do jurídico)
Categoria do statusCategoria do status da demandaString (ex: Aberta, Finalizada)
Criada emData de criação da demandaData (DD/MM/YYYY)
Finalizada emData de finalização da demandaData (DD/MM/YYYY)
Última atualização emData da última atualização da demandaData (DD/MM/YYYY)
Aberto porResponsável que abriu a demandaString
Área do demandanteÁrea do demandanteString
E-mail do demandanteE-mail do demandanteString
ResponsávelResponsável da demandaString
Área do responsávelÁrea do responsávelString
Tempo gastoTempo gasto na demandaFloat
Prazo finalSLA da demandaData (DD/MM/YYYY)

INFO

O relatório exportado pode conter colunas adicionais. Essas colunas são relacionadas aos campos personalizados (informações) da demanda. Essas colunas são prefixadas com cf_.

Relatório de mudanças de status com campos personalizados

O relatório de mudanças de status com campos personalizados permite exportar um histórico detalhado das mudanças de status das demandas, incluindo valores de campos personalizados específicos. Este relatório é útil para rastrear a evolução das demandas ao longo do tempo.

Para exportar este relatório, utilize a query Requisition_reportChangeStatusByTimeInterval.

Propriedades do input

PropriedadeTipoDescrição
startDateDateData inicial do intervalo no formato ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ)
finishDateDateData final do intervalo no formato ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ)
filterDateTypeEnumTipo de filtro de data (opcional)
customFieldLabels[String]Lista de labels dos campos personalizados para incluir no relatório

Valores do enum filterDateType

ValorDescrição
REQUISITION_CREATED_ATFiltra por data de criação da demanda
EVENT_CREATED_ATFiltra por data de criação do evento (padrão)

WARNING

Similar ao relatório por intervalo de tempo, o intervalo entre as datas startDate e finishDate não pode exceder 3 meses.

Retorno

A query retorna um objeto que pode ser de dois tipos:

Sucesso (Requisition_ReportChangeStatusByTimeInterval_Output_Success)

PropriedadeTipoDescrição
urlToDownloadFileStringURL para download do arquivo do relatório

Falha (Requisition_ReportChangeStatusByTimeInterval_Output_Failures)

PropriedadeTipoDescrição
failuresArrayArray contendo informações sobre a falha
graphql
query RequisionExportReportsModal_reportChangeStatusByTimeInterval(
  $customFieldLabels: [String!]!
  $filterDateType: Requisition_ReportChangeStatusByTimeInterval_Filter_Date_Type_Enum
  $finishDate: Date!
  $startDate: Date!
) {
  result: Requisition_reportChangeStatusByTimeInterval(
    input: {
      customFieldLabels: $customFieldLabels
      filterDateType: $filterDateType
      finishDate: $finishDate
      startDate: $startDate
    }
  ) {
    ... on Requisition_ReportChangeStatusByTimeInterval_Output_Failures {
      failures {
        ... on Error {
          message
        }
      }
    }
    ... on Requisition_ReportChangeStatusByTimeInterval_Output_Success {
      urlToDownloadFile
    }
  }
}
js
async function exportChangeStatusReport(startDate, finishDate, customFieldLabels) {
  const response = await fetch('https://core-api.linte.com/graphql', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'key': '<seu-token>'
    },
    body: JSON.stringify({
      query: `
        query RequisionExportReportsModal_reportChangeStatusByTimeInterval(
          $customFieldLabels: [String!]!
          $filterDateType: Requisition_ReportChangeStatusByTimeInterval_Filter_Date_Type_Enum
          $finishDate: Date!
          $startDate: Date!
        ) {
          result: Requisition_reportChangeStatusByTimeInterval(
            input: {
              customFieldLabels: $customFieldLabels
              filterDateType: $filterDateType
              finishDate: $finishDate
              startDate: $startDate
            }
          ) {
            ... on Requisition_ReportChangeStatusByTimeInterval_Output_Failures {
              failures {
                ... on Error {
                  message
                }
              }
            }
            ... on Requisition_ReportChangeStatusByTimeInterval_Output_Success {
              urlToDownloadFile
            }
          }
        }
      `,
      variables: {
        customFieldLabels: customFieldLabels,
        filterDateType: 'EVENT_CREATED_AT',
        finishDate: finishDate,
        startDate: startDate
      }
    })
  });

  const result = await response.json();
  console.log(result);
}

// Exemplo de uso
const startDate = '2025-02-23T00:00:00.000Z';
const finishDate = '2025-03-25T02:59:59.999Z';
const customFieldLabels = ['Tipo de Contrato', 'Valor', 'Departamento'];

exportChangeStatusReport(startDate, finishDate, customFieldLabels);
python
import requests

def export_change_status_report(start_date, finish_date, custom_field_labels):
    response = requests.post(
        'https://core-api.linte.com/graphql',
        headers={
            'Content-Type': 'application/json',
            'key': '<seu-token>'
        },
        json={
            'query': '''
                query RequisionExportReportsModal_reportChangeStatusByTimeInterval(
                  $customFieldLabels: [String!]!
                  $filterDateType: Requisition_ReportChangeStatusByTimeInterval_Filter_Date_Type_Enum
                  $finishDate: Date!
                  $startDate: Date!
                ) {
                  result: Requisition_reportChangeStatusByTimeInterval(
                    input: {
                      customFieldLabels: $customFieldLabels
                      filterDateType: $filterDateType
                      finishDate: $finishDate
                      startDate: $startDate
                    }
                  ) {
                    ... on Requisition_ReportChangeStatusByTimeInterval_Output_Failures {
                      failures {
                        ... on Error {
                          message
                        }
                      }
                    }
                    ... on Requisition_ReportChangeStatusByTimeInterval_Output_Success {
                      urlToDownloadFile
                    }
                  }
                }
            ''',
            'variables': {
                'customFieldLabels': custom_field_labels,
                'filterDateType': 'EVENT_CREATED_AT',
                'finishDate': finish_date,
                'startDate': start_date
            }
        }
    )
    
    print(response.json())

if __name__ == '__main__':
    # Exemplo de uso
    start_date = '2025-02-23T00:00:00.000Z'
    finish_date = '2025-03-25T02:59:59.999Z'
    custom_field_labels = ['Tipo de Contrato', 'Valor', 'Departamento']
    
    export_change_status_report(start_date, finish_date, custom_field_labels)

INFO

Certifique-se de que os labels dos campos personalizados estejam corretos e existam no sistema. Labels incorretos serão ignorados no relatório.

Exemplo de preview do relatório

O relatório exportado será um arquivo XLSX com duas abas:

Aba Dados

Contém o histórico detalhado de todas as mudanças de status no período, com as seguintes colunas:

ColunaDescriçãoTipo
RequisiçãoID da demandaString (ex: LNT-YEOKBL)
EventoDescrição do evento/ação realizadaString (ex: "A demanda foi finalizada")
StatusStatus atual da demanda após o eventoString (ex: "DONE", "with the legal team")
CategoriaCategoria do statusString (ex: "FINISHED", "OPEN")
Data de Início - EventoData/hora de início do eventoData/Hora
Data de Fim - EventoData/hora de fim do eventoData/Hora
Data de Criação da DemandaData/hora de criação da demandaData/Hora
AtorUsuário que realizou a açãoString
Área do AtorÁrea/departamento do atorString
ResponsáveisResponsáveis pela demandaString
Área dos ResponsáveisÁrea dos responsáveisString
CriadorCriador original da demandaString
Área do CriadorÁrea do criadorString
ParticipantesLista de participantes da demandaString
Data do SLAData do SLA na hora do eventoData/Hora
AutomaçãoNome da automação executada (se aplicável)String
Tempo (Minutos)Tempo decorrido em minutosNúmero
Tempo (Horas)Tempo decorrido em horasNúmero
Tempo (Dias)Tempo decorrido em diasNúmero
Tempo (Dias Úteis)Tempo decorrido em dias úteisNúmero
AtrasadoIndica se está atrasado em relação ao SLAString (Sim/Não)
Dias Úteis de AtrasoQuantidade de dias úteis de atrasoNúmero
Campos PersonalizadosSão os campos pasados via customFieldLabels, esses campos viram colunas no relatórioString

Campos personalizados: Após essas colunas padrão, serão adicionadas colunas para cada campo personalizado especificado no parâmetro customFieldLabels, mostrando o valor do campo no momento da mudança de status.

Aba Resumo

Apresenta estatísticas consolidadas do período analisado:

  1. Cabeçalho do relatório

    • Nome: "Relatório de Mudanças de Status"
    • Organização
    • Data de Início e Data de Fim do período
    • Data de Geração do relatório
  2. Resumo Geral

    • Total de Eventos: quantidade total de mudanças de status
    • Ações Manuais: mudanças realizadas por usuários
    • Ações de Automação: mudanças realizadas por automações
    • Demandas Envolvidas: quantidade de demandas únicas
  3. Estatísticas de Atraso

    • Eventos em Atraso: quantidade de eventos que ultrapassaram o SLA
    • % de Eventos em Atraso: percentual sobre o total
    • Eventos com Dias de Atraso: quantidade de eventos com atraso
    • Média de Dias de Atraso: média de dias úteis de atraso
  4. Ações Manuais por Tipo

    • Quantidade de cada tipo de ação (ex: "A demanda foi finalizada", "A demanda foi aberta", etc.)
  5. Automações Executadas

    • Lista de automações e quantidade de execuções de cada uma
  6. Mudanças por Status

    • Quantidade de mudanças para cada status de demanda
  7. Top 10 Usuários Mais Ativos

    • Ranking dos usuários que mais realizaram ações no período

TIP

Esta query é especialmente útil para:

  • Rastrear o histórico detalhado de mudanças de status em demandas
  • Analisar a evolução de campos personalizados ao longo do tempo
  • Gerar relatórios de auditoria com informações completas sobre quem fez o quê e quando
  • Identificar padrões em mudanças de status e possíveis gargalos no processo
  • Monitorar o desempenho em relação aos SLAs definidos
  • Avaliar o impacto de automações no fluxo de trabalho

INFO

Certifique-se de que os labels dos campos personalizados estejam corretos e existam no sistema. Labels incorretos serão ignorados no relatório.

WARNING

O relatório possui um rate limit de 2 requisições por hora.