Data export and infrastructure register
Current public description of the scope, formats, relationships, limitations and infrastructure countries used for customer data exports.
Download machine-readable export specification 1.1 (JSON)
1. Purpose and scope of the register
This register describes the standard portable export of customer data from Nodali. It is an operational specification, not a publication of the production database schema or a version of the legal terms. The scope of an export depends on activated modules, the customer’s rights and a verified request.
2. Current method of providing an export
A standard export is prepared at the request of an authorised customer. It is provided by secure download in the portal or another agreed secure method; the delivery method may depend on the scope and volume of data.
A self-service export API is not publicly guaranteed in the current version.
3. Categories of exportable data
Depending on activated modules and permissions, an export may include in particular:
Operations and capacities have no standalone dataset in version 1.1. Where present in the account, they are transferred through relevant attributes, source data or custom fields of depots, routes, vehicles and other related objects; the manifest states where they are included.
- input data supplied by the customer;
- orders, shipments and customer identifiers;
- carriers, operational statuses and their customer-relevant history;
- routes, depots, operations and capacities;
- cost and billing data;
- tenant configuration, import mappings and connector configuration;
- users, roles and permissions to the extent safely portable;
- outputs, reports and customer metadata;
- customer-uploaded files where the customer has the right to receive them.
- Technical duplicates need not be exported repeatedly. An update to the same object is not a separate new object when the relevant history is retained.
- The operator’s internal operational and security data are excluded.
The catalogue below is the technical specification of the standard portable package. A particular export contains only datasets for which the customer has data and permission.
Account, access and enabled services
| Dataset | Package file | Primary key | Fields | Relationships |
|---|---|---|---|---|
tenant |
account/tenant.ndjson |
id |
8 Fieldsid, slug, name, status, defaultCurrency, createdAt, updatedAt, deletedAt |
No relationships |
users |
account/users.ndjson |
id |
6 Fieldsid, email, fullName, status, createdAt, updatedAt |
No relationships |
memberships |
account/memberships.ndjson |
id |
6 Fieldsid, userId, roleCode, status, createdAt, updatedAt |
userId -> users.id |
entitlements |
account/entitlements.ndjson |
id |
6 Fieldsid, moduleCode, status, enabledAt, createdAt, updatedAt |
No relationships |
Customers and operational master data
| Dataset | Package file | Primary key | Fields | Relationships |
|---|---|---|---|---|
customers |
master/customers.ndjson |
id |
11 Fieldsid, customerId, name, email, phone, status, sourceFeedId, sourceData, createdAt, updatedAt, deletedAt |
sourceFeedId -> import-sources.id |
customer-locations |
master/customer-locations.ndjson |
id |
14 Fieldsid, 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 Fieldsid, depotCode, name, address, latitude, longitude, type, sourceFeedId, sourceData, createdAt, updatedAt, deletedAt |
sourceFeedId -> import-sources.id |
carriers |
master/carriers.ndjson |
id |
7 Fieldsid, code, name, type, customerSpecific, createdAt, updatedAt |
No relationships |
drivers |
master/drivers.ndjson |
id |
10 Fieldsid, driverId, name, email, phone, sourceFeedId, sourceData, createdAt, updatedAt, deletedAt |
sourceFeedId -> import-sources.id |
vehicles |
master/vehicles.ndjson |
id |
10 Fieldsid, vehicleId, registrationNumber, name, vehicleType, sourceFeedId, sourceData, createdAt, updatedAt, deletedAt |
sourceFeedId -> import-sources.id |
Orders, shipments, parcels and tracking
| Dataset | Package file | Primary key | Fields | Relationships |
|---|---|---|---|---|
orders |
logistics/orders.ndjson |
id |
15 Fieldsid, 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 Fieldsid, 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 Fieldsid, orderId, shipmentId, relationType, createdAt |
orderId -> orders.id; shipmentId -> shipments.id |
carrier-accounts |
logistics/carrier-accounts.ndjson |
id |
7 Fieldsid, carrierId, name, authType, status, createdAt, updatedAt |
carrierId -> carriers.id |
parcels |
logistics/parcels.ndjson |
id |
13 Fieldsid, 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 Fieldsid, 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 |
Routes, stops and telematics
| Dataset | Package file | Primary key | Fields | Relationships |
|---|---|---|---|---|
routes |
operations/routes.ndjson |
id |
19 Fieldsid, routeId, routeCode, routeDate, depotId, driverId, vehicleId, status, plannedStartAt, plannedEndAt, actualStartAt, actualEndAt, plannedDistanceKm, actualDistanceKm, sourceFeedId, sourceData, createdAt, updatedAt, deletedAt |
depotId -> depots.id; driverId -> drivers.id; vehicleId -> vehicles.id; sourceFeedId -> import-sources.id |
route-stops |
operations/route-stops.ndjson |
id |
17 Fieldsid, routeId, orderId, customerLocationId, sequence, stopType, plannedArrivalAt, actualArrivalAt, plannedDepartureAt, actualDepartureAt, address, latitude, longitude, status, sourceData, createdAt, updatedAt |
routeId -> routes.id; orderId -> orders.id; customerLocationId -> customer-locations.id |
telematics-activities |
operations/telematics-activities.ndjson |
id |
13 Fieldsid, 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 Fieldsid, routeId, telematicsActivityId, driverId, vehicleId, matchMethod, confidence, allocatedDistanceKm, allocatedDurationSeconds, note, createdAt, updatedAt |
routeId -> routes.id; telematicsActivityId -> telematics-activities.id; driverId -> drivers.id; vehicleId -> vehicles.id |
Costs and operational exceptions
| Dataset | Package file | Primary key | Fields | Relationships |
|---|---|---|---|---|
costs |
finance/costs.ndjson |
id |
19 Fieldsid, 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 Fieldsid, 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 |
Custom fields and external references
| Dataset | Package file | Primary key | Fields | Relationships |
|---|---|---|---|---|
external-references |
extensions/external-references.ndjson |
id |
9 Fieldsid, 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 Fieldsid, entityType, key, label, description, dataType, visibleInReports, searchable, filterable, createdAt, updatedAt, deletedAt |
No relationships |
custom-field-values |
extensions/custom-field-values.ndjson |
id |
7 Fieldsid, definitionId, entityType, entityId, value, createdAt, updatedAt |
definitionId -> custom-field-definitions.id; entityId -> entity identified by entityType |
Integrations, imports, mapping and matching
| Dataset | Package file | Primary key | Fields | Relationships |
|---|---|---|---|---|
integrations |
integrations/integrations.ndjson |
id |
10 Fieldsid, type, name, status, billingStatus, activeFrom, activeTo, portableConfiguration, createdAt, updatedAt |
No relationships |
import-sources |
integrations/import-sources.ndjson |
id |
18 Fieldsid, 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 Fieldsid, 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 Fieldsid, importSourceId, triggerType, status, startedAt, finishedAt, recordsReceived, recordsValid, recordsWarning, recordsFailed, message, createdAt, updatedAt |
importSourceId -> import-sources.id |
import-files |
integrations/import-files.ndjson |
id |
15 Fieldsid, 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 Fieldsid, 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 Fieldsid, 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 Fieldsid, 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 Fieldsid, importSourceId, name, leftSource, leftEntityType, leftField, rightSource, rightEntityType, rightField, targetEntity, matchType, configuration, priority, confidenceThreshold, enabled, createdAt, updatedAt |
importSourceId -> import-sources.id |
Reports and export history
| Dataset | Package file | Primary key | Fields | Relationships |
|---|---|---|---|---|
report-definitions |
reports/report-definitions.ndjson |
id |
9 Fieldsid, name, module, queryConfiguration, columnsConfiguration, filtersConfiguration, createdByUserId, createdAt, updatedAt |
createdByUserId -> users.id |
scheduled-reports |
reports/scheduled-reports.ndjson |
id |
9 Fieldsid, reportDefinitionId, frequency, recipients, format, enabled, lastSentAt, createdAt, updatedAt |
reportDefinitionId -> report-definitions.id |
export-jobs |
reports/export-jobs.ndjson |
id |
8 Fieldsid, reportDefinitionId, exportType, format, status, createdByUserId, createdAt, finishedAt |
reportDefinitionId -> report-definitions.id; createdByUserId -> users.id |
Subscriptions, usage, invoices and payments
| Dataset | Package file | Primary key | Fields | Relationships |
|---|---|---|---|---|
billing-profile |
billing/billing-profile.ndjson |
tenantId |
19 FieldstenantId, 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 Fieldsid, provider, type, cardBrand, cardLast4, cardExpiryMonth, cardExpiryYear, status, default, testMode, removedAt, createdAt, updatedAt |
No relationships |
subscriptions |
billing/subscriptions.ndjson |
id |
17 Fieldsid, 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 Fieldsid, productType, productCode, action, activeTo, unitPrice, currency, prorated, createdByUserId, createdAt |
createdByUserId -> users.id |
monthly-usage |
billing/monthly-usage.ndjson |
id |
9 Fieldsid, periodStart, periodEnd, processedUnits, orders, shipments, parcels, createdAt, updatedAt |
No relationships |
subscription-usage-segments |
billing/subscription-usage-segments.ndjson |
id |
15 Fieldsid, subscriptionId, periodStart, periodEnd, activeFrom, activeTo, billableDays, periodDays, monthlyUnitPrice, accruedAmount, currency, status, billingItemKey, createdAt, updatedAt |
subscriptionId -> subscriptions.id |
invoices |
billing/invoices.ndjson |
id |
29 Fieldsid, 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 |
No relationships |
invoice-items |
billing/invoice-items.ndjson |
id |
21 Fieldsid, 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 Fieldsid, 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 Fieldsid, paymentId, invoiceId, provider, providerRefundId, status, amount, currency, reason, requestedByUserId, requestedAt, processedAt, createdAt, updatedAt |
paymentId -> payments.id; invoiceId -> invoices.id; requestedByUserId -> users.id |
Original customer files
| Dataset | Package file | Primary key | Fields | Relationships |
|---|---|---|---|---|
file-index |
files/index.ndjson |
id |
9 Fieldsid, importFileId, originalFilename, packagePath, mediaType, sizeBytes, sha256, createdAt, rawExpiresAt |
importFileId -> import-files.id |
original-files |
files/original/* |
packagePath |
1 Fieldsbinary content in the original retained format |
packagePath -> file-index.packagePath |
4. Output files and formats
The manifest states the specification version, scope, every included and omitted dataset, record counts, warnings and checksums.
- Transfer package: ZIP.
- Package manifest: UTF-8 manifest.json.
- Structured datasets: JSON Lines (NDJSON), one object per line.
- Retained original customer files: original format under files/original/.
- Date and time: RFC 3339 / ISO 8601 with an offset; dates use YYYY-MM-DD.
- Fixed-precision numbers are dot-decimal strings; monetary values carry an ISO 4217 currency.
- Every file has a SHA-256 checksum in the manifest.
5. Relationships between objects
Objects are linked by stable identifiers and references described in the manifest. The manifest explains relationships between orders, shipments, customers, carriers, routes, operations and other included objects. Relevant history is retained without treating every technical update as a new object.
6. Export format version
Register and export-format version 1.1 is effective from 2026-07-22 and is separate from the versions of the contractual documents. A change to file names, required fields, field meaning or relationships requires a new register version; an optional-field addition may remain backwards compatible.
7. Known limitations
- Only data available in activated modules and within the customer’s rights are included.
- Large or complex exports may require an individually agreed secure delivery method.
- No self-service API or fixed preparation time is publicly guaranteed.
- Source code, algorithms, internal security logs, credentials and other customers’ data are excluded.
- The register is not a complete production database schema.
8. Infrastructure and jurisdiction
The application and PostgreSQL run in Docker on a VEDOS (formerly WEDOS) VPS in the Czech Republic. Backups are stored on Progity’s own NAS at its registered office in the Czech Republic. All disclosed processing is therefore subject to Czech jurisdiction; IP addresses, the precise physical address, credentials and network topology are not published.
| Infrastructure type | Country / jurisdiction | EU/EEA |
|---|---|---|
| Dockerized application — VEDOS VPS | Czech Republic | Yes |
| Dockerized PostgreSQL — VEDOS VPS | Czech Republic | Yes |
| Backups — Progity-owned NAS at its registered office | Czech Republic | Yes |
Access is controlled by roles and permissions, and client–server communication uses HTTPS.
Requests from public authorities are legally assessed. Data are not provided to third-country authorities contrary to EU law or the law of the relevant Member State; appropriate technical, organisational and contractual safeguards are used.
9. Register change history
- 2026-07-22 — version 1.1: concrete ZIP/JSONL format and a catalogue of datasets, fields, relationships and security exclusions published from the Nodali database model.
- 2026-07-21 — version 1.0: initial publication of the register.
10. Contact
Submit an export request or a question about this register from an authorised portal account or to hello@noda.li. The request may be reasonably verified before data are released.