Skip to content

Ocorrências: GC ou GM ​

As ocorrências de uma empresa podem ser geridas em dois sistemas diferentes, conforme o que essa empresa contratou. A API é a mesma nos dois casos — mesmos caminhos, mesmos nomes de campos, mesma forma de resposta — mas o que cada um consegue guardar não é igual.

Tudo o resto — condomínios, frações, condóminos, fornecedores, contratos, correspondência, faturação e seguros — é idêntico nos dois casos. Esta página só diz respeito a ocorrências.

Descobrir qual ​

json
{
  "Occurrences": {
    "Source": "GC",
    "SupportedFilters": ["idBuilding", "status", "idTaskStatus", "idMaintenanceNature",
                         "idServiceType", "idPriority", "idFraction", "openedFrom", "openedTo"],
    "SupportedOperations": ["create", "claims", "assignment", "interventions", "update"]
  }
}

O ping diz-lhe a origem e, com ela, que filtros pode usar. Cada ocorrência traz também o seu Source.

Leia o ping no arranque

Se integra mais do que uma empresa, não presuma. Leia Source e SupportedFilters uma vez por empresa, e adapte-se — em vez de descobrir as diferenças por tentativa e erro em produção.

As diferenças ​

GCGM
Fração (IdFraction)SimNão
Condómino (IdClient)SimNão
Quem reportou, por nome (ReportedByName)Não — é sempre alguém identificadoSim
Natureza (IdMaintenanceNature)ObrigatóriaObrigatória
Tipo de serviço (IdServiceType)ObrigatórioNão existe
Localização (IdMaintenanceLocation)OpcionalObrigatória
Descrição normalizada (IdDescription)SimNão
Visível para condóminos (IsVisibleToClients)SimNão
Notificar (NotifyClient, Notify)SimNão
Atribuir aFornecedor ou utilizadorTécnico
SinistrosSimSempre geridos no GC

Um campo que não se aplica é recusado, não ignorado: responde 400 UNSUPPORTED_FIELD, com field a dizer qual. É intencional — enviar uma fração e vê-la desaparecer em silêncio seria pior.

Abrir uma ocorrência ​

Em GC:

json
{
  "IdBuilding": 12,
  "IdFraction": 340,
  "IdClient": 87,
  "IdMaintenanceNature": 3,
  "IdServiceType": 7,
  "Description": "Infiltração no teto da garagem",
  "IsVisibleToClients": true,
  "NotifyClient": true
}

IdMaintenanceNature e IdServiceType são obrigatórios. ReportedByName é recusado: quem reporta é um condómino ou um utilizador identificado, indicado em IdClient.

Em GM:

json
{
  "IdBuilding": 12,
  "IdMaintenanceNature": 3,
  "IdMaintenanceLocation": 5,
  "Description": "Infiltração no teto da garagem",
  "ReportedByName": "Sr. Silva, do 3.º Dto."
}

IdMaintenanceLocation é obrigatório — sem ele a ocorrência fica registada mas não aparece nas listagens desse sistema. IdFraction, IdClient, IdServiceType, IdDescription, IsVisibleToClients e NotifyClient são recusados.

Quem reportou pode ir em ReportedByName, em texto livre. É a única forma de guardar essa informação aí, e não é um dado estruturado: não é pesquisável nem ligado a nenhum registo de pessoa.

Atribuir ​

POST /occurrences/{id}/assignment aceita um AssignedTo com Kind e Id. Quem pode receber depende da origem:

OrigemKind aceitesOnde estão listados
GCsupplier, user/suppliers e /assignees
GMtechnician/assignees

Chame sempre /assignees — devolve já o Kind correto para a empresa em causa, e é a forma de não ter esta tabela espalhada pelo seu código.

O que AssignedTo devolve numa leitura é exatamente o que se envia numa atribuição. Não tem de o converter.

Notificar ​

O campo Notify — na atribuição, na intervenção e na alteração de estado — só é aceite em GC. Em GM responde 400 UNSUPPORTED_FIELD. Envie-o a false, ou omita-o.

Sinistros ​

Os sinistros são sempre geridos no GC, mesmo nas empresas cujas ocorrências estão em GM. Os pontos /claims funcionam sempre da mesma maneira, com todos os campos, independentemente do Source que o ping indicar para as ocorrências.

Exige que a empresa tenha os sinistros configurados; se não tiver, responde 422 CLAIMS_NOT_CONFIGURED.

Identificadores não se misturam ​

Um identificador de ocorrência só tem significado dentro da sua origem. O mesmo vale para os cursores de sincronização. Se uma empresa mudar de sistema de ocorrências, recomece com uma leitura completa: os identificadores antigos não são reencontráveis.

Quando o sistema não responde ​

Nas empresas em GM, as ocorrências vivem num serviço separado. Se não responder, a API devolve 502 UPSTREAM_UNAVAILABLE em vez de uma lista vazia — que se leria como "esta empresa não tem ocorrências". Repita daqui a pouco.

API de Integração GC