API do Phrase TMS

Agregações de estatísticas (TMS)

O conteúdo de toda a Central de Ajuda é traduzido automaticamente de inglês pelo Phrase Language AI.

O armazenamento de dados que executa consultas de agregação é construído sobre o Elasticsearch (atualmente versão 1.7.x). O Elasticsearch fornece pesquisas em tempo real e recursos de agregação, com a API de estatísticas formando uma camada fina e com segurança aprimorada sobre ele. O idioma de consulta e agregação do Elasticsearch é usado nos exemplos.

Índices

Diferentes tipos de dados residem em diferentes índices. Por exemplo, dados de trabalho residem no índice jobPart, e dados de costs residem no índice costs. Os dados necessários podem ser especificados ao indicar o índice na URL do endpoint da API de estatísticas.

Documentos principal-secundário

Partes das informações sobre um trabalho residem em dois documentos diferentes no banco de dados Elasticsearch. Esses documentos estão em um relacionamento principal-secundário. Por exemplo, informações sobre o projeto de um trabalho residem no documento principal, enquanto informações sobre o próprio trabalho residem no documento secundário. Dependendo das informações necessárias, as agregações ficam antes da agregação principal-secundário de dados ou depois dela, mas a agregação de dados em si deve estar presente em todas as consultas.

Modelos de dados de índice

Dados comuns

Análise

{
  "id": string,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "innerId": number,
  "name": string,
  "tags": string[],
  "trashed": boolean,
  "trashedBy": <User>,
  "type": string
}

Atribuição

{
  "name": string,
  "linguist": <User>,
  "vendor": <Vendor>
}

portal de solicitações

{
  "id": string,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "name": string,
  "tags": string[],
  "trashed": boolean,
  "urlId": string
}

Comprador

{
  "id": string,
  "name": string
}

Cliente

{
  "id": string,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "externalId": string,
  "name": string,
  "tags": string[],
  "trashed": boolean,
}

CostCenter

{
  "id": string,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "name": string,
  "tags": string[],
  "trashed": boolean,
}

Tema

{
  "id": string,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "name": string,
  "tags": string[],
  "trashed": boolean
}

Trabalho

{
  "id": string,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "extension": string,
  "fileName": string,
  "groupCount": number,
  "innerId": "1",
  "languagePair": string,
  "lastModified": Date,
  "localePair": string,
  "sourceLanguage": string,
  "sourceLocale": string,
  "tags": string[],
  "targetLanguage": string,
  "targetLocale": string",
  "taskId": string,
  "trashed": boolean,
  "trashedBy": <User>,
  "uid": string
}

JobPart

{
  "id": "19",
  "assignedTo": <Assignment>,
  "beginIndex": number,
  "buyer": <Buyer>,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDue": Date,
  "endIndex": number,
  "groupCount": number,
  "innerId": string,
  "lastModified": Date,
  "level": number,
  "status": string,
  "tags": [],
  "uid": string,
  "workflowStep": <WorkflowStep>
}

MtEngine

{
  "id": string,
  "deleted": boolean,
  "default_: boolean,
  "includeTags": boolean,
  "name": string,
  "tags": string[],
  "type": string,
}

NetRateScheme

{
  "id": string,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "default_": boolean,
  "deleted": boolean,
  "externalId": string,
  "name": string,
  "tags": string[],
}

PriceList

{
  "id": string,
  "createdBy": <User>,
  "currency": string,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "default_": boolean,
  "deleted": boolean,
  "name": string,
  "tags": string[],
  "trashed": boolean,
  "unit": string
}

Projeto

{
  "id": string,
  "buyer": <Buyer>,
  "client": <Client>,
  "costCenter": <CostCenter>,
  "createdBy": <User>,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateDue": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "domain": <Domain>,
  "innerId": number,
  "languagePairs": string[],
  "localePairs": string[],
  "mtEngine": <MtEngine>,
  "name": string,
  "note": string,
  "owner": <User>,
  "sourceLanguage": string,
  "sourceLocale": string,
  "status": string,
  "subDomain": <SubDomain>,
  "tags": string[],
  "targetLanguages": string[],
  "targetLocales": string[],
  "trashed": boolean,
  "trashedBy": <User>,
  "uid": string,
  "vendor": <Vendor>
}

Orçamento

{
  "id": string,
  "createdBy: <usuário>,
  "currency": string,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "innerId": string,
  "name": string,
  "status": string,
  "tags": string[],
  "trashed": boolean,
  "trashedBy": <User>,
  "unit": string
}

Serviço

{
  "id": string,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "name": string,
  "publicName": string,
  "tags": string[],
  "trashed": boolean,
  "type": string
}

SubDomain

{
  "id": string,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "name": string,
  "tags": string[],
  "trashed": boolean
}

Usuário

{
  "ID": number,
  "ativo": boolean,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "email": string,
  "firstName": string,
  "fullName": string,
  "innerId": number,
  "jobTitle": string,
  "lastName": string,
  "locale": string,
  "note": string,
  "role": string,
  "tags": string[],
  "timeZone": string,
  "trashed": boolean,
  "userName": string
}

Fornecedor

{
  "id": string,
  "candidate": boolean,
  "dateCreated": Date,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "deleted": boolean,
  "tags": string[],
  "token": string,
  "trashed": boolean
}

WorkflowStep

{
  "id": string,
  "abbreviation": string,
  "dateDeleted": Date,
  "dateTrashed": Date,
  "name": string,
  "pedido": number,
  "tags": string[],
  "trashed": boolean
}

Índice de análise

Agregação de dados

"data": {
  "children": {
    "type": "analysisType"
  }
}

Documento principal

{
  "automationWidget": <AutomationWidget>,"
  "project": <Project>,
  "service": <Service>
}

Documento secundário

{
  "analysis": <Analysis>,
  "jobPart": <JobPart>,"
  "job": <Job>,
  "netRateScheme": <NetRateScheme>,

  "priority": number,
  "data": {
    "mt": {
      "match0": {
        "characters": number,
        "páginas": number,
        "porcentagem": number,
        "segments": number,
        "palavras": number
      },
      "match100": {
        "characters": number,
        "páginas": number,
        "porcentagem": number,
        "segments": number,
        "palavras": number
      },
      "match50": {
        "characters": number,
        "páginas": number,
        "porcentagem": number,
        "segments": number,
        "palavras": number
      },
      "match75": {
        "characters": number,
        "páginas": number,
        "porcentagem": number,
        "segments": number,
        "palavras": number
      },
      "match85": {
        "characters": number,
        "páginas": number,
        "porcentagem": number,
        "segments": number,
        "palavras": number
      },
      "match95": {
        "characters": number,
        "páginas": number,
        "porcentagem": number,
        "segments": number,
        "palavras": number
      }
    },
    "repetitions": {
      "characters": number,
      "páginas": number,
      "porcentagem": number,
      "segments": number,
      "palavras": number
    },
    "tm": {
      "match0": {
        "characters": number,
        "páginas": number,
        "porcentagem": number,
        "segments": number,
        "palavras": number
      },
      "match100": {
        "characters": number,
        "páginas": number,
        "porcentagem": number,
        "segments": number,
        "palavras": number
      },
      "match101": {
        "characters": number,
        "páginas": number,
        "porcentagem": number,
        "segments": number,
        "palavras": number
      },
      "match50": {
        "characters": number,
        "páginas": number,
        "porcentagem": number,
        "segments": number,
        "palavras": number
      },
      "match75": {
        "characters": number,
        "páginas": number,
        "porcentagem": number,
        "segments": number,
        "palavras": number
      },
      "match85": {
        "characters": number,
        "páginas": number,
        "porcentagem": number,
        "segments": number,
        "palavras": number
      },
      "match95": {
        "characters": number,
        "páginas": number,
        "porcentagem": number,
        "segments": number,
        "palavras": number
      }
    },
    "total": {
      "characters": number,
      "páginas": number,
      "porcentagem": number,
      "segments": number,
      "palavras": number
    }
  }
}

Índice da API

Agregação de dados

"data": {
  "children": {
    "type": "apiType"
  }
}

Documento principal

{
  "usuário": <usuário>
}

Documento secundário

{
  "request": {
    "date": Date,
    "host": string,
    "ipv4": string,
    "ipv6": string,
    "location": string,
    "method": string
  },
  "response": {
    "date": Date,
    "duration": number,
    "estado": number
  },
  "API": {
    "action": string,
    "asynch": boolean,
    "type": string,
    "uri": string,
    "ver": string
  }
}

Índice de Custos

Agregação de dados

"data": {
  "children": {
    "type": "costsType"
  }
}

Documento principal

{
  "automationWidget": <AutomationWidget>,"
  "project": <Project>,
  "service": <Service>
}

Documento secundário

{
  "analysis": <Analysis>,
  "job": <Job>,
  "jobPart": <JobPart>,"
  "netRateScheme": <NetRateScheme>,
  "priceList": <PriceList>,
  "quote": <Quote>,
  "workflowStep": <WorkflowStep>,
  
  "priority": number,
  "data": {
    "mt": {
      "match0": number,
      "match100": number,
      "match50": number,
      "match75": number,
      "match85": number,
      "match95": number
    },
    "repetitions": number,
    "tm": {
      "match0": number,
      "match100": number,
      "match101": number,
      "match50": number,
      "match75": number,
      "match85": number,
      "match95": number
    },
    "total": number
  }
}

Índice de trabalhoPart

Agregação de Dados

"data": {
  "children": {
    "type": "jobPartType"
  }
}

documento principal

{
  \"automationWidget\": <AutomationWidget>,
  "project": <Project>,
  "service": <Service>
}

documento secundário

{
  "job": <Job>,
  \"jobPart\": <JobPart>

  "data": {
    "counts": {
      "chars": {
      \"total\": número,
      \"confirmed\": número,
      "notConfirmed": number,
      \"locked\": número,
      "notLocked": number,
      "confirmedAndLocked": number,
      "notConfirmedAndLocked": number,
      \"completed\": número,
      "notCompleted": number
    },
    "groups": {
      \"total\": número
    },
    "segments": {
      \"total\": número,
      \"confirmed\": número,
      "notConfirmed": number,
      \"locked\": número,
      "notLocked": number,
      "confirmedAndLocked": number,
      "notConfirmedAndLocked": number,
      \"completed\": número,
      "notCompleted": number,
      "mt": {
        "postEdited": number,
        "relevant": number,
        "notRelevant": number
      },
      "qa": {
        "checked": number,
        "notChecked": number
      }
    },
    "words": {
      \"total\": número,
      \"confirmed\": número,
      "notConfirmed": number,
      \"locked\": número,
      "notLocked": number,
      "confirmedAndLocked": number,
      "notConfirmedAndLocked": number,
      \"completed\": número,
      "notCompleted": number
    },
    "qa": {
      "warnings": number,
      "ignoredWarnings": number,
      "notIgnoredWarnings": number
    }
  }
}

Exemplos

  • As solicitações HTTP são executadas no Postman.

  • Faça login através de um perfil de GP ou admin e obtenha um token de login usando uma API de login.

  • Solicitações POST para api/v3/API/jobPart?token=&lt;your_login_token&gt;

Número total de trabalhos

consulta

{
  "aggregations": {
    "data": {
      "children": {
        "type": "jobPartType"
      }
    }
  }
}

Resposta

{
  "hits": {
    "total": 359
  },
  "aggregations": {
    "data": {
      "doc_count": 14417
    }
  }
}

No campo aggregations, a agregação data respondeu com 14.417 documentos correspondentes mostrados no campo doc_count.

Número total de palavras do texto original

consulta

{
  "aggregations": {
    "data": {
      "children": {
        "type": "jobPartType"
      },
      "aggs": {
        "wordCount": {
          "sum": {
            "field": "data.volume.words"
          }
        }
      }
    }
  }
}

Resposta

{
  "hits": {
    "total": 359
  },
  "aggregations": {
    "data": {
      "doc_count": 14417,
      "wordCount": {
        "value": 6893067
      }
    }
  }
}

Número total de palavras do texto original dividido pelo idioma de tradução

consulta

{
  "aggregations": {
    "data": {
      "children": {
        "type": "jobPartType"
      },
      "aggs": {
        "byTargetLanguage": {
          "terms": {
            "field": "job.targetLanguage",
            "size": 3
          },
          "aggs": {
            "wordCount": {
              "sum": {
                "field": "data.volume.words"
              }
            }
          }
        }
      }
    }
  }
}

Resposta

{
  "hits": {
    "total": 359
  },
  "aggregations": {
    "data": {
      "byTargetLanguage": {
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 10071,
        "buckets": [
          {
            "doc_count": 1835,
            "wordCount": {
              "value": 702721
            },
            "key": "cs"
          },
          {
            "doc_count": 1491,
            "wordCount": {
              "value": 2602529
            },
            "key": "de"
          },
          {
            "doc_count": 1020,
            "wordCount": {
              "value": 92676
            },
            "key": "fi"
          }
        ]
      },
      "doc_count": 14417
    }
  }
}

A entidade buckets é mostrada na resposta. Quando o módulo de estatísticas é solicitado a dividir os dados por alguma categoria, o resultado é representado como uma lista de buckets. Cada bucket contém uma chave que define quais dados este bucket representa (neste caso, um idioma de tradução) e um valor (outras agregações) específico apenas para esta parte do conjunto de dados.

Número total de trabalhos dividido pelo estado do projeto

consulta

{
  "aggregations": {
    "projectStatus": {
      "terms": {
        "field": "project.status"
      },
      "aggs": {
        "data": {
          "children": {
            "type": "jobPartType"
          }
        }
      }
    }
  }
}

Resposta

{
  "hits": {
    "total": 359
  },
  "aggregations": {
    "projectStatus": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "doc_count": 326,
          "data": {
            "doc_count": 14318
          },
          "key": "NEW"
        },
        {
          "doc_count": 31,
          "data": {
            "doc_count": 89
          },
          "key": "COMPLETED"
        },
        {
          "doc_count": 1,
          "data": {
            "doc_count": 4
          },
          "key": "ASSIGNED"
        },
        {
          "doc_count": 1,
          "data": {
            "doc_count": 6
          },
          "key": "DECLINED_BY_VENDOR"
        }
      ]
    }
  }
}

O módulo de estatísticas foi instruído a dividir os dados por estado do projeto antes da agregação de dados.

Número total de trabalhos de novos projetos

consulta

{
  "filter": {
    "term": {
      "project.status": "NEW"
    }
  },
  "aggregations": {
    "data": {
      "children": {
        "type": "jobPartType"
      }
    }
  }
}

Resposta

{
  "hits": {
    "total": 326
  },
  "aggregations": {
    "data": {
      "doc_count": 14318
    }
  }
}

O campo filtrar é usado na consulta. Isso restringe os dados antes das agregações seguintes.

Esse artigo foi útil?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.