Registo de exportação de dados e infraestrutura
Descrição pública atual do âmbito, formatos, relações, limitações e países da infraestrutura usada para exportações de dados dos clientes.
Descarregar a especificação de exportação 1.2 legível por máquina (JSON)
1. Finalidade e âmbito do registo
O registo descreve a exportação standard e portável de dados de clientes do Nodali. É uma especificação operacional, não a publicação do esquema da base de produção nem uma versão dos documentos jurídicos. O âmbito depende dos módulos ativos, dos direitos do cliente e de um pedido verificado.
2. Método atual de disponibilização da exportação
A exportação standard é preparada a pedido de um cliente autorizado e entregue por transferência segura no portal ou por outro método seguro acordado. O método pode depender do âmbito e volume dos dados.
Na versão atual não é garantida publicamente uma API de exportação self-service.
Regras, prazos e mudança de fornecedor ao abrigo do EU Data Act
3. Categorias de dados exportáveis
Consoante os módulos e permissões, pode incluir:
A versão 1.2 adiciona conjuntos autónomos para trabalhadores no terreno, serviços, planeamento, alterações de despacho, trabalho móvel e pontos GPS. O export contém apenas dados efetivamente mantidos para o cliente e ainda conservados segundo a sua configuração de retenção.
- dados de entrada fornecidos pelo cliente;
- encomendas, envios e identificadores de clientes;
- transportadoras, estados operacionais e histórico relevante para o cliente;
- rotas, depósitos, locais e capacidades;
- dados de custos e faturação;
- configuração do tenant, mapeamentos de importação e configuração de conectores;
- utilizadores, funções e permissões num âmbito transferível com segurança;
- resultados, relatórios e metadados do cliente;
- ficheiros carregados pelo cliente quando tenha direito a recebê-los.
- Os duplicados técnicos não têm de ser exportados repetidamente. A atualização do mesmo objeto não é um objeto novo se o histórico relevante for preservado.
- Excluem-se dados operacionais e de segurança internos do operador.
O catálogo seguinte é a especificação técnica do pacote portável standard. Uma exportação concreta contém apenas os conjuntos para os quais o cliente tem dados e autorização.
Conta, acessos e serviços ativos
| Conjunto de dados | Ficheiro do pacote | Chave primária | Campos | Relações |
|---|---|---|---|---|
tenant |
account/tenant.ndjson |
id |
8 Camposid, slug, name, status, defaultCurrency, createdAt, updatedAt, deletedAt |
Sem relações |
users |
account/users.ndjson |
id |
6 Camposid, email, fullName, status, createdAt, updatedAt |
Sem relações |
memberships |
account/memberships.ndjson |
id |
6 Camposid, userId, roleCode, status, createdAt, updatedAt |
userId -> users.id |
entitlements |
account/entitlements.ndjson |
id |
6 Camposid, moduleCode, status, enabledAt, createdAt, updatedAt |
Sem relações |
Clientes e dados mestre operacionais
| Conjunto de dados | Ficheiro do pacote | Chave primária | Campos | Relações |
|---|---|---|---|---|
customers |
master/customers.ndjson |
id |
11 Camposid, customerId, name, email, phone, status, sourceFeedId, sourceData, createdAt, updatedAt, deletedAt |
sourceFeedId -> import-sources.id |
customer-locations |
master/customer-locations.ndjson |
id |
14 Camposid, customerId, locationCode, name, address, latitude, longitude, defaultUnloadingMinutes, accessNote, sourceFeedId, sourceData, createdAt, updatedAt, deletedAt |
customerId -> customers.id; sourceFeedId -> import-sources.id |
depots |
master/depots.ndjson |
id |
12 Camposid, depotCode, name, address, latitude, longitude, type, sourceFeedId, sourceData, createdAt, updatedAt, deletedAt |
sourceFeedId -> import-sources.id |
carriers |
master/carriers.ndjson |
id |
7 Camposid, code, name, type, customerSpecific, createdAt, updatedAt |
Sem relações |
drivers |
master/drivers.ndjson |
id |
10 Camposid, driverId, name, email, phone, sourceFeedId, sourceData, createdAt, updatedAt, deletedAt |
sourceFeedId -> import-sources.id |
vehicles |
master/vehicles.ndjson |
id |
10 Camposid, vehicleId, registrationNumber, name, vehicleType, sourceFeedId, sourceData, createdAt, updatedAt, deletedAt |
sourceFeedId -> import-sources.id |
field-workers |
master/field-workers.ndjson |
id |
15 Camposid, workerId, userId, driverId, name, email, phone, status, homeDepotId, timeZone, sourceFeedId, sourceData, createdAt, updatedAt, deletedAt |
userId -> users.id; driverId -> drivers.id; homeDepotId -> depots.id; sourceFeedId -> import-sources.id |
skills |
master/skills.ndjson |
id |
8 Camposid, code, name, description, status, createdAt, updatedAt, deletedAt |
Sem relações |
field-worker-skills |
master/field-worker-skills.ndjson |
id |
8 Camposid, fieldWorkerId, skillId, level, validFrom, validTo, createdAt, updatedAt |
fieldWorkerId -> field-workers.id; skillId -> skills.id |
field-worker-availability |
master/field-worker-availability.ndjson |
id |
8 Camposid, fieldWorkerId, availableFrom, availableTo, availabilityType, note, createdAt, updatedAt |
fieldWorkerId -> field-workers.id |
worker-resources |
master/worker-resources.ndjson |
id |
9 Camposid, fieldWorkerId, vehicleId, resourceType, resourceCode, validFrom, validTo, createdAt, updatedAt |
fieldWorkerId -> field-workers.id; vehicleId -> vehicles.id |
Encomendas, envios, volumes e tracking
| Conjunto de dados | Ficheiro do pacote | Chave primária | Campos | Relações |
|---|---|---|---|---|
orders |
logistics/orders.ndjson |
id |
15 Camposid, orderId, customerId, customerLocationId, depotId, status, orderCreatedAt, promisedDeliveryAt, sourceFeedId, firstSeenAt, lastSeenAt, sourceData, createdAt, updatedAt, deletedAt |
customerId -> customers.id; customerLocationId -> customer-locations.id; depotId -> depots.id; sourceFeedId -> import-sources.id |
shipments |
logistics/shipments.ndjson |
id |
14 Camposid, shipmentId, status, carrierId, shippingMethod, originDepotId, promisedDeliveryAt, handedOverAt, deliveredAt, sourceFeedId, sourceData, createdAt, updatedAt, deletedAt |
carrierId -> carriers.id; originDepotId -> depots.id; sourceFeedId -> import-sources.id |
order-shipments |
logistics/order-shipments.ndjson |
id |
5 Camposid, orderId, shipmentId, relationType, createdAt |
orderId -> orders.id; shipmentId -> shipments.id |
carrier-accounts |
logistics/carrier-accounts.ndjson |
id |
7 Camposid, carrierId, name, authType, status, createdAt, updatedAt |
carrierId -> carriers.id |
parcels |
logistics/parcels.ndjson |
id |
13 Camposid, shipmentId, carrierId, carrierAccountId, trackingNumber, status, lastTrackingEventAt, deliveredAt, sourceFeedId, sourceData, createdAt, updatedAt, deletedAt |
shipmentId -> shipments.id; carrierId -> carriers.id; carrierAccountId -> carrier-accounts.id; sourceFeedId -> import-sources.id |
tracking-events |
logistics/tracking-events.ndjson |
id |
13 Camposid, parcelId, carrierId, carrierAccountId, trackingNumber, eventTime, rawStatus, normalizedStatus, location, countryCode, sourceFeedId, sourceData, createdAt |
parcelId -> parcels.id; carrierId -> carriers.id; carrierAccountId -> carrier-accounts.id; sourceFeedId -> import-sources.id |
Rotas, paragens e telemática
| Conjunto de dados | Ficheiro do pacote | Chave primária | Campos | Relações |
|---|---|---|---|---|
routes |
operations/routes.ndjson |
id |
21 Camposid, routeId, routeCode, routeDate, depotId, driverId, vehicleId, status, plannedStartAt, plannedEndAt, actualStartAt, actualEndAt, plannedDistanceKm, actualDistanceKm, sourceFeedId, sourceData, createdAt, updatedAt, deletedAt, dispatchPlanVersionId, planningRunId |
depotId -> depots.id; driverId -> drivers.id; vehicleId -> vehicles.id; sourceFeedId -> import-sources.id; dispatchPlanVersionId -> dispatch-plan-versions.id; planningRunId -> optimisation-runs.id |
route-stops |
operations/route-stops.ndjson |
id |
22 Camposid, routeId, orderId, customerLocationId, sequence, stopType, plannedArrivalAt, actualArrivalAt, plannedDepartureAt, actualDepartureAt, address, latitude, longitude, status, sourceData, createdAt, updatedAt, serviceVisitId, dispatchPlanVersionId, timeWindowStart, timeWindowEnd, plannedServiceDurationSeconds |
routeId -> routes.id; orderId -> orders.id; customerLocationId -> customer-locations.id; serviceVisitId -> service-visits.id; dispatchPlanVersionId -> dispatch-plan-versions.id |
telematics-activities |
operations/telematics-activities.ndjson |
id |
13 Camposid, driverId, vehicleId, activityDate, startedAt, finishedAt, distanceKm, durationSeconds, engineOnSeconds, sourceFeedId, sourceData, createdAt, updatedAt |
driverId -> drivers.id; vehicleId -> vehicles.id; sourceFeedId -> import-sources.id |
route-activity-matches |
operations/route-activity-matches.ndjson |
id |
12 Camposid, routeId, telematicsActivityId, driverId, vehicleId, matchMethod, confidence, allocatedDistanceKm, allocatedDurationSeconds, note, createdAt, updatedAt |
routeId -> routes.id; telematicsActivityId -> telematics-activities.id; driverId -> drivers.id; vehicleId -> vehicles.id |
telematics-location-points |
operations/telematics-location-points.ndjson |
id |
20 Camposid, tenantId, occurredAt, receivedAt, fieldWorkerId, driverId, vehicleId, mobileDeviceId, trackingSessionId, routeId, serviceVisitId, latitude, longitude, accuracyM, speedMps, headingDegrees, altitudeM, source, sequenceNo, createdAt |
tenantId -> tenant.id; fieldWorkerId -> field-workers.id; driverId -> drivers.id; vehicleId -> vehicles.id; mobileDeviceId -> mobile-devices.id; trackingSessionId -> location-tracking-sessions.id; routeId -> routes.id; serviceVisitId -> service-visits.id |
derived-route-geometries |
operations/derived-route-geometries.ndjson |
id |
12 Camposid, trackingSessionId, routeId, fieldWorkerId, vehicleId, startedAt, endedAt, encodedGeometry, distanceKm, pointCount, calculationMethod, createdAt |
trackingSessionId -> location-tracking-sessions.id; routeId -> routes.id; fieldWorkerId -> field-workers.id; vehicleId -> vehicles.id |
Serviços no terreno, planeamento e trabalho móvel
| Conjunto de dados | Ficheiro do pacote | Chave primária | Campos | Relações |
|---|---|---|---|---|
service-jobs |
field/service-jobs.ndjson |
id |
14 Camposid, jobId, customerId, customerLocationId, orderId, title, description, priority, status, requiredSkills, requiredResources, createdAt, updatedAt, deletedAt |
customerId -> customers.id; customerLocationId -> customer-locations.id; orderId -> orders.id |
service-visits |
field/service-visits.ndjson |
id |
16 Camposid, visitId, serviceJobId, customerLocationId, status, priority, timeWindowStart, timeWindowEnd, plannedDurationSeconds, actualStartAt, actualEndAt, assignedFieldWorkerId, assignedVehicleId, createdAt, updatedAt, deletedAt |
serviceJobId -> service-jobs.id; customerLocationId -> customer-locations.id; assignedFieldWorkerId -> field-workers.id; assignedVehicleId -> vehicles.id |
dispatch-plans |
field/dispatch-plans.ndjson |
id |
9 Camposid, planId, serviceDate, status, timeZone, publishedVersionId, createdByUserId, createdAt, updatedAt |
publishedVersionId -> dispatch-plan-versions.id; createdByUserId -> users.id |
dispatch-plan-versions |
field/dispatch-plan-versions.ndjson |
id |
9 Camposid, dispatchPlanId, versionNumber, status, source, optimisationRunId, publishedAt, createdByUserId, createdAt |
dispatchPlanId -> dispatch-plans.id; optimisationRunId -> optimisation-runs.id; createdByUserId -> users.id |
dispatch-assignments |
field/dispatch-assignments.ndjson |
id |
12 Camposid, dispatchPlanVersionId, serviceVisitId, fieldWorkerId, vehicleId, routeId, sequence, plannedArrivalAt, plannedDepartureAt, status, createdAt, updatedAt |
dispatchPlanVersionId -> dispatch-plan-versions.id; serviceVisitId -> service-visits.id; fieldWorkerId -> field-workers.id; vehicleId -> vehicles.id; routeId -> routes.id |
dispatch-events |
field/dispatch-events.ndjson |
id |
9 Camposid, dispatchPlanId, dispatchPlanVersionId, eventType, actorUserId, actorFieldWorkerId, occurredAt, details, createdAt |
dispatchPlanId -> dispatch-plans.id; dispatchPlanVersionId -> dispatch-plan-versions.id; actorUserId -> users.id; actorFieldWorkerId -> field-workers.id |
dispatch-exceptions |
field/dispatch-exceptions.ndjson |
id |
14 Camposid, dispatchPlanId, serviceVisitId, fieldWorkerId, vehicleId, type, severity, status, message, detectedAt, resolvedAt, details, createdAt, updatedAt |
dispatchPlanId -> dispatch-plans.id; serviceVisitId -> service-visits.id; fieldWorkerId -> field-workers.id; vehicleId -> vehicles.id |
optimisation-runs |
field/optimisation-runs.ndjson |
id |
13 Camposid, runId, productCode, serviceDate, status, triggerType, matrixProvider, vehicleCount, visitCount, startedAt, finishedAt, requestedByUserId, createdAt |
requestedByUserId -> users.id |
optimisation-run-inputs |
field/optimisation-run-inputs.ndjson |
id |
6 Camposid, optimisationRunId, inputType, entityId, inputData, createdAt |
optimisationRunId -> optimisation-runs.id |
optimisation-run-results |
field/optimisation-run-results.ndjson |
id |
7 Camposid, optimisationRunId, resultType, entityId, sequence, resultData, createdAt |
optimisationRunId -> optimisation-runs.id |
visit-status-events |
field/visit-status-events.ndjson |
id |
9 Camposid, serviceVisitId, fieldWorkerId, status, occurredAt, latitude, longitude, note, createdAt |
serviceVisitId -> service-visits.id; fieldWorkerId -> field-workers.id |
work-logs |
field/work-logs.ndjson |
id |
10 Camposid, serviceVisitId, fieldWorkerId, startedAt, endedAt, durationSeconds, workType, note, createdAt, updatedAt |
serviceVisitId -> service-visits.id; fieldWorkerId -> field-workers.id |
checklist-responses |
field/checklist-responses.ndjson |
id |
10 Camposid, serviceVisitId, fieldWorkerId, checklistCode, itemCode, responseType, responseValue, answeredAt, createdAt, updatedAt |
serviceVisitId -> service-visits.id; fieldWorkerId -> field-workers.id |
visit-notes |
field/visit-notes.ndjson |
id |
8 Camposid, serviceVisitId, authorUserId, authorFieldWorkerId, note, visibility, createdAt, updatedAt |
serviceVisitId -> service-visits.id; authorUserId -> users.id; authorFieldWorkerId -> field-workers.id |
material-usages |
field/material-usages.ndjson |
id |
9 Camposid, serviceVisitId, fieldWorkerId, materialCode, description, quantity, unit, createdAt, updatedAt |
serviceVisitId -> service-visits.id; fieldWorkerId -> field-workers.id |
proof-of-service |
field/proof-of-service.ndjson |
id |
8 Camposid, serviceVisitId, type, fileId, capturedAt, capturedByFieldWorkerId, metadata, createdAt |
serviceVisitId -> service-visits.id; fileId -> original-files.id; capturedByFieldWorkerId -> field-workers.id |
customer-confirmations |
field/customer-confirmations.ndjson |
id |
8 Camposid, serviceVisitId, confirmationType, confirmedByName, confirmedAt, signatureFileId, note, createdAt |
serviceVisitId -> service-visits.id; signatureFileId -> original-files.id |
mobile-devices |
field/mobile-devices.ndjson |
id |
10 Camposid, fieldWorkerId, platform, appVersion, deviceModel, status, firstSeenAt, lastSeenAt, createdAt, updatedAt |
fieldWorkerId -> field-workers.id |
location-tracking-sessions |
field/location-tracking-sessions.ndjson |
id |
12 Camposid, fieldWorkerId, driverId, vehicleId, mobileDeviceId, routeId, startedAt, endedAt, status, pointIntervalSeconds, createdAt, updatedAt |
fieldWorkerId -> field-workers.id; driverId -> drivers.id; vehicleId -> vehicles.id; mobileDeviceId -> mobile-devices.id; routeId -> routes.id |
customer-notification-events |
field/customer-notification-events.ndjson |
id |
10 Camposid, serviceVisitId, channel, templateCode, status, recipientMasked, sentAt, deliveredAt, failedAt, createdAt |
serviceVisitId -> service-visits.id |
Custos e exceções operacionais
| Conjunto de dados | Ficheiro do pacote | Chave primária | Campos | Relações |
|---|---|---|---|---|
costs |
finance/costs.ndjson |
id |
19 Camposid, costId, relatedEntityType, relatedEntityId, orderId, shipmentId, parcelId, routeId, carrierId, depotId, customerId, costType, amount, currency, costDate, sourceFeedId, sourceData, createdAt, updatedAt |
orderId -> orders.id; shipmentId -> shipments.id; parcelId -> parcels.id; routeId -> routes.id; carrierId -> carriers.id; depotId -> depots.id; customerId -> customers.id; sourceFeedId -> import-sources.id |
exceptions |
quality/exceptions.ndjson |
id |
18 Camposid, entityType, entityId, orderId, shipmentId, parcelId, routeId, carrierId, type, severity, status, message, detectedAt, resolvedAt, source, details, createdAt, updatedAt |
orderId -> orders.id; shipmentId -> shipments.id; parcelId -> parcels.id; routeId -> routes.id; carrierId -> carriers.id |
Campos personalizados e referências externas
| Conjunto de dados | Ficheiro do pacote | Chave primária | Campos | Relações |
|---|---|---|---|---|
external-references |
extensions/external-references.ndjson |
id |
9 Camposid, entityType, entityId, sourceFeedId, sourceSystemName, externalKey, externalValue, createdAt, updatedAt |
sourceFeedId -> import-sources.id; entityId -> entity identified by entityType |
custom-field-definitions |
extensions/custom-field-definitions.ndjson |
id |
12 Camposid, entityType, key, label, description, dataType, visibleInReports, searchable, filterable, createdAt, updatedAt, deletedAt |
Sem relações |
custom-field-values |
extensions/custom-field-values.ndjson |
id |
7 Camposid, definitionId, entityType, entityId, value, createdAt, updatedAt |
definitionId -> custom-field-definitions.id; entityId -> entity identified by entityType |
Integrações, importações, mapeamento e matching
| Conjunto de dados | Ficheiro do pacote | Chave primária | Campos | Relações |
|---|---|---|---|---|
integrations |
integrations/integrations.ndjson |
id |
10 Camposid, type, name, status, billingStatus, activeFrom, activeTo, portableConfiguration, createdAt, updatedAt |
Sem relações |
import-sources |
integrations/import-sources.ndjson |
id |
18 Camposid, integrationId, name, description, connectorType, status, sourceLabel, rawRetentionDays, dependencyTimeoutHours, allowedSenders, expectedFrequency, lastReceivedAt, lastProcessedAt, activeFrom, activeTo, createdAt, updatedAt, deletedAt |
integrationId -> integrations.id |
import-file-rules |
integrations/import-file-rules.ndjson |
id |
12 Camposid, importSourceId, name, filenamePattern, fileType, targetEntity, mappingProfileId, required, enabled, sortOrder, createdAt, updatedAt |
importSourceId -> import-sources.id; mappingProfileId -> mapping-profiles.id |
import-runs |
integrations/import-runs.ndjson |
id |
13 Camposid, importSourceId, triggerType, status, startedAt, finishedAt, recordsReceived, recordsValid, recordsWarning, recordsFailed, message, createdAt, updatedAt |
importSourceId -> import-sources.id |
import-files |
integrations/import-files.ndjson |
id |
15 Camposid, importRunId, importSourceId, fileRuleId, originalFilename, fileType, contentType, sizeBytes, sha256, status, errorMessage, rawExpiresAt, rawDeletedAt, createdAt, updatedAt |
importRunId -> import-runs.id; importSourceId -> import-sources.id; fileRuleId -> import-file-rules.id |
import-row-results |
integrations/import-row-results.ndjson |
id |
13 Camposid, importFileId, rowNumber, status, targetEntity, targetEntityId, sourceData, mappedData, errors, dependencyWaitStartedAt, rawExpiresAt, rawDeletedAt, createdAt |
importFileId -> import-files.id; targetEntityId -> entity identified by targetEntity |
mapping-profiles |
integrations/mapping-profiles.ndjson |
id |
17 Camposid, importSourceId, name, targetEntity, status, version, delimiter, decimalSeparator, dateFormat, timezone, identityTargetField, identityRequired, identityConfiguration, dependencyConfiguration, activatedAt, createdAt, updatedAt |
importSourceId -> import-sources.id |
mapping-rules |
integrations/mapping-rules.ndjson |
id |
16 Camposid, mappingProfileId, sourceField, targetType, targetField, customFieldDefinitionId, externalKey, transformType, transformConfiguration, required, identity, defaultValue, visibleInReports, sortOrder, createdAt, updatedAt |
mappingProfileId -> mapping-profiles.id; customFieldDefinitionId -> custom-field-definitions.id |
matching-rules |
integrations/matching-rules.ndjson |
id |
17 Camposid, importSourceId, name, leftSource, leftEntityType, leftField, rightSource, rightEntityType, rightField, targetEntity, matchType, configuration, priority, confidenceThreshold, enabled, createdAt, updatedAt |
importSourceId -> import-sources.id |
Relatórios e histórico de exportações
| Conjunto de dados | Ficheiro do pacote | Chave primária | Campos | Relações |
|---|---|---|---|---|
report-definitions |
reports/report-definitions.ndjson |
id |
9 Camposid, name, module, queryConfiguration, columnsConfiguration, filtersConfiguration, createdByUserId, createdAt, updatedAt |
createdByUserId -> users.id |
scheduled-reports |
reports/scheduled-reports.ndjson |
id |
9 Camposid, reportDefinitionId, frequency, recipients, format, enabled, lastSentAt, createdAt, updatedAt |
reportDefinitionId -> report-definitions.id |
export-jobs |
reports/export-jobs.ndjson |
id |
8 Camposid, reportDefinitionId, exportType, format, status, createdByUserId, createdAt, finishedAt |
reportDefinitionId -> report-definitions.id; createdByUserId -> users.id |
Subscrições, utilização, faturas e pagamentos
| Conjunto de dados | Ficheiro do pacote | Chave primária | Campos | Relações |
|---|---|---|---|---|
billing-profile |
billing/billing-profile.ndjson |
tenantId |
19 CampostenantId, billingName, companyId, vatId, billingEmail, contactEmail, contactPhone, billingPhone, billingAddress, registrationCountryCode, billingCountryCode, customerType, invoiceLanguage, taxRegime, paymentMode, currency, paymentTermsDays, createdAt, updatedAt |
tenantId -> tenant.id |
payment-methods |
billing/payment-methods.ndjson |
id |
13 Camposid, provider, type, cardBrand, cardLast4, cardExpiryMonth, cardExpiryYear, status, default, testMode, removedAt, createdAt, updatedAt |
Sem relações |
subscriptions |
billing/subscriptions.ndjson |
id |
17 Camposid, productType, productCode, status, quantity, unitPrice, currency, activeFrom, currentPeriodStart, currentPeriodEnd, cancelAtPeriodEnd, cancelRequestedAt, cancelledAt, endedAt, createdByUserId, createdAt, updatedAt |
createdByUserId -> users.id |
subscription-events |
billing/subscription-events.ndjson |
id |
10 Camposid, productType, productCode, action, activeTo, unitPrice, currency, prorated, createdByUserId, createdAt |
createdByUserId -> users.id |
monthly-usage |
billing/monthly-usage.ndjson |
id |
14 Camposid, periodStart, periodEnd, processedUnits, orders, shipments, parcels, createdAt, updatedAt, serviceVisits, successfulPlanRuns, successfulRoutesRuns, activeVehicleDays, activeWorkerDays |
Sem relações |
subscription-usage-segments |
billing/subscription-usage-segments.ndjson |
id |
22 Camposid, subscriptionId, periodStart, periodEnd, activeFrom, activeTo, billableDays, periodDays, monthlyUnitPrice, accruedAmount, currency, status, billingItemKey, createdAt, updatedAt, quantity, unit, dailyUnitPrice, activeVehicleCount, activeWorkerCount, usageDate, productCode |
subscriptionId -> subscriptions.id |
invoices |
billing/invoices.ndjson |
id |
29 Camposid, invoiceNumber, externalInvoiceId, invoiceType, status, subtotal, tax, total, currency, accountingCurrency, exchangeRate, issuedAt, dueAt, taxableSupplyAt, servicePeriodStart, servicePeriodEnd, paidAt, cancelledAt, variableSymbol, paymentReference, invoiceLanguage, taxRegime, reverseCharge, supplier, customer, vatValidationStatus, taxLegalNoteCode, taxReasonCode, createdAt |
Sem relações |
invoice-items |
billing/invoice-items.ndjson |
id |
21 Camposid, invoiceId, lineNumber, productType, productCode, description, servicePeriodStart, servicePeriodEnd, quantity, unit, unitPrice, netAmount, taxRate, taxAmount, grossAmount, currency, prorated, subscriptionId, subscriptionEventId, metadata, createdAt |
invoiceId -> invoices.id; subscriptionId -> subscriptions.id; subscriptionEventId -> subscription-events.id |
payments |
billing/payments.ndjson |
id |
15 Camposid, invoiceId, provider, providerPaymentId, type, status, amount, currency, description, testMode, paidAt, cancelledAt, failedAt, createdAt, updatedAt |
invoiceId -> invoices.id |
payment-refunds |
billing/payment-refunds.ndjson |
id |
14 Camposid, paymentId, invoiceId, provider, providerRefundId, status, amount, currency, reason, requestedByUserId, requestedAt, processedAt, createdAt, updatedAt |
paymentId -> payments.id; invoiceId -> invoices.id; requestedByUserId -> users.id |
Ficheiros originais do cliente
| Conjunto de dados | Ficheiro do pacote | Chave primária | Campos | Relações |
|---|---|---|---|---|
file-index |
files/index.ndjson |
id |
9 Camposid, importFileId, originalFilename, packagePath, mediaType, sizeBytes, sha256, createdAt, rawExpiresAt |
importFileId -> import-files.id |
original-files |
files/original/* |
packagePath |
1 Camposbinary content in the original retained format |
packagePath -> file-index.packagePath |
4. Ficheiros e formatos de saída
O manifesto indica versão, âmbito, conjuntos incluídos e omitidos, contagens, avisos e checksums.
- Pacote de entrega: ZIP.
- Manifesto: manifest.json em UTF-8.
- Dados estruturados: JSON Lines (NDJSON), um objeto por linha.
- Ficheiros originais conservados: formato original em files/original/.
- Data e hora: RFC 3339 / ISO 8601 com desvio; data YYYY-MM-DD.
- Números de precisão fixa como strings com ponto; montantes com moeda ISO 4217.
- Checksum SHA-256 de cada ficheiro no manifesto.
5. Relações entre objetos
Encomendas, envios, clientes, transportadoras, rotas, locais e outros objetos são ligados por identificadores estáveis e referências descritas no manifesto. O histórico relevante é preservado sem tratar cada atualização técnica como novo objeto.
6. Versão do formato de exportação
A versão 1.2 do registo e do formato de exportação vigora desde 29/07/2026 e é independente das versões contratuais. Alterações a nomes, campos obrigatórios, significado ou relações exigem nova versão; um campo opcional pode ser acrescentado de modo retrocompatível.
7. Limitações conhecidas
- Incluem-se apenas dados de módulos ativos e dentro dos direitos do cliente.
- Exportações grandes ou complexas podem exigir entrega segura acordada individualmente.
- Não se garante uma API self-service nem um prazo fixo de preparação.
- Excluem-se código-fonte, algoritmos, registos internos de segurança, credenciais e dados de outros clientes.
- O registo não é o esquema completo da base de produção.
8. Infraestrutura e jurisdição
A aplicação e o PostgreSQL funcionam em Docker num VPS da VEDOS (anteriormente WEDOS) na República Checa. As cópias são guardadas num NAS próprio na sede da Progity na República Checa. Todo o tratamento indicado fica sujeito à jurisdição checa; não são publicados IP, morada física exata, credenciais nem topologia de rede.
| Tipo de infraestrutura | País / jurisdição | UE/EEE |
|---|---|---|
| Aplicação em Docker — VEDOS VPS | República Checa | Sim |
| PostgreSQL em Docker — VEDOS VPS | República Checa | Sim |
| Cópias — NAS próprio na sede da Progity | República Checa | Sim |
O acesso é controlado por funções e permissões; a comunicação cliente–servidor utiliza HTTPS.
Os pedidos de autoridades são sujeitos a avaliação jurídica. Os dados não são fornecidos a autoridades de países terceiros contra o direito da UE ou do Estado-Membro competente; aplicam-se medidas técnicas, organizacionais e contratuais proporcionadas.
9. Histórico de alterações do registo
- 29/07/2026 — versão 1.2: publicados o formato ZIP/JSONL e o catálogo de conjuntos, campos, relações e exclusões de segurança.
- 21/07/2026 — versão 1.0: primeira publicação.
10. Contacto
Pedidos de exportação ou perguntas podem ser enviados por uma conta autorizada do portal ou para hello@noda.li. O pedido pode ser razoavelmente verificado antes da entrega dos dados.