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
Propriedade | Tipo | Descrição |
---|---|---|
startDate | String | Data inicial do intervalo no formato ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ) |
finishDate | String | Data 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
)
Propriedade | Tipo | Descrição |
---|---|---|
urlToDownloadFile | String | URL para download do arquivo do relatório |
Falha (Requisition_ReportRequisitionsStatusesByTimeInterval_Output_Failures
)
Propriedade | Tipo | Descrição |
---|---|---|
failures | Object | Objeto contendo informações sobre a falha |
__typename | String | Tipo do objeto retornado |
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
}
}
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);
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
Coluna | Descrição | Tipo |
---|---|---|
id | ID da demanda | String (ex: STO-N2HA63) |
Data de criação | Data de criação da demanda | Data (DD/MM/YY HH:mm) |
Data início da etapa | Data de início da etapa | Data (DD/MM/YY HH:mm) |
Data fim da etapa | Data de fim da etapa | Data (DD/MM/YY HH:mm) |
Etapa | Etapa da demanda | String |
Responsável | Responsável da demanda | String |
Área do responsável | Área do responsável | String |
Ação | Ação da demanda | String |
Tempo (minutos) | Tempo da demanda em minutos | Decimal |
Tempo (horas) | Tempo da demanda em horas | Decimal |
Tempo (dias) | Tempo da demanda em dias | Decimal |
Tempo (dias úteis) | Tempo da demanda em dias úteis | Decimal |
Aba Resumo
A aba Resumo
apresenta uma visão consolidada das demandas no período, contendo:
- Título do relatório e período de referência
- Indicadores gerais:
- Total de demandas criadas
- Quantidade de demandas em progresso
- Quantidade de demandas finalizadas
- Quantidade de demandas canceladas
- 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
)
Propriedade | Tipo | Descrição |
---|---|---|
urlToDownloadFile | String | URL para download do arquivo do relatório |
Falha (Report_ExtractRequisitionsReport_Output_Failures
)
Propriedade | Tipo | Descrição |
---|---|---|
failures | Object | Objeto contendo informações sobre a falha |
__typename | String | Tipo do objeto retornado |
query {
result: Report_extractRequisitionsReport {
... on Report_ExtractRequisitionsReport_Output_Success {
urlToDownloadFile
}
... on Report_ExtractRequisitionsReport_Output_Failures {
failures {
... on Error {
message
}
}
}
}
}
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();
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:
Coluna | Descrição | Tipo |
---|---|---|
id | ID da demanda | String (ex: STO-N2HA63) |
Status | Status da demanda | String (ex: Em andamento, Em análise do jurídico) |
Categoria do status | Categoria do status da demanda | String (ex: Aberta, Finalizada) |
Criada em | Data de criação da demanda | Data (DD/MM/YYYY) |
Finalizada em | Data de finalização da demanda | Data (DD/MM/YYYY) |
Última atualização em | Data da última atualização da demanda | Data (DD/MM/YYYY) |
Aberto por | Responsável que abriu a demanda | String |
Área do demandante | Área do demandante | String |
E-mail do demandante | E-mail do demandante | String |
Responsável | Responsável da demanda | String |
Área do responsável | Área do responsável | String |
Tempo gasto | Tempo gasto na demanda | Float |
Prazo final | SLA da demanda | Data (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
Propriedade | Tipo | Descrição |
---|---|---|
startDate | Date | Data inicial do intervalo no formato ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ) |
finishDate | Date | Data final do intervalo no formato ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ) |
filterDateType | Enum | Tipo de filtro de data (opcional) |
customFieldLabels | [String] | Lista de labels dos campos personalizados para incluir no relatório |
Valores do enum filterDateType
Valor | Descrição |
---|---|
REQUISITION_CREATED_AT | Filtra por data de criação da demanda |
EVENT_CREATED_AT | Filtra 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
)
Propriedade | Tipo | Descrição |
---|---|---|
urlToDownloadFile | String | URL para download do arquivo do relatório |
Falha (Requisition_ReportChangeStatusByTimeInterval_Output_Failures
)
Propriedade | Tipo | Descrição |
---|---|---|
failures | Array | Array contendo informações sobre a falha |
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
}
}
}
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);
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:
Coluna | Descrição | Tipo |
---|---|---|
Requisição | ID da demanda | String (ex: LNT-YEOKBL) |
Evento | Descrição do evento/ação realizada | String (ex: "A demanda foi finalizada") |
Status | Status atual da demanda após o evento | String (ex: "DONE", "with the legal team") |
Categoria | Categoria do status | String (ex: "FINISHED", "OPEN") |
Data de Início - Evento | Data/hora de início do evento | Data/Hora |
Data de Fim - Evento | Data/hora de fim do evento | Data/Hora |
Data de Criação da Demanda | Data/hora de criação da demanda | Data/Hora |
Ator | Usuário que realizou a ação | String |
Área do Ator | Área/departamento do ator | String |
Responsáveis | Responsáveis pela demanda | String |
Área dos Responsáveis | Área dos responsáveis | String |
Criador | Criador original da demanda | String |
Área do Criador | Área do criador | String |
Participantes | Lista de participantes da demanda | String |
Data do SLA | Data do SLA na hora do evento | Data/Hora |
Automação | Nome da automação executada (se aplicável) | String |
Tempo (Minutos) | Tempo decorrido em minutos | Número |
Tempo (Horas) | Tempo decorrido em horas | Número |
Tempo (Dias) | Tempo decorrido em dias | Número |
Tempo (Dias Úteis) | Tempo decorrido em dias úteis | Número |
Atrasado | Indica se está atrasado em relação ao SLA | String (Sim/Não) |
Dias Úteis de Atraso | Quantidade de dias úteis de atraso | Número |
Campos Personalizados | São os campos pasados via customFieldLabels , esses campos viram colunas no relatório | String |
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:
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
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
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
Ações Manuais por Tipo
- Quantidade de cada tipo de ação (ex: "A demanda foi finalizada", "A demanda foi aberta", etc.)
Automações Executadas
- Lista de automações e quantidade de execuções de cada uma
Mudanças por Status
- Quantidade de mudanças para cada status de demanda
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.