Functions

The nele.ai manual: Just start & look up features.

All features
  • Features for users
  • chats
    Control communication with AI systems individually and clearly.
  • Prompts
    Manage and use your own and pre-prepared prompts centrally across the organization.
  • Program settings
    Configure nele.ai the way you want. Dark mode, shortcuts, API and more
  • Word/Excel add-ins
    Use nele.ai in your existing Microsoft Word and Excel workflows.
  • API Integration Funktion von nele.ai
    API integration
    Create custom API keys for seamless integration with your applications and systems.
  • Features for administrators
  • Admin area
    Demo, tutorials, account setup and support.
  • SSO with SAML 2.0
    Information about SAML 2.0 single sign-on setup.
  • trivia
  • In general
    Everything about the AI platform and AI solution for organizations.
  • AI models
    Overview of all tested and available AI models.
  • Ready to get started?
  • Schedule a demo
  • Free technical presentation
  • Request training
  • contact
All features
Resources
  • Software knowledge
  • AI models
    Overview of all audited
    and available AI models.
  • Security
    Learn more about our safety concept
    for more data security with AI.
  • changelog
    New Features, Bug Fixes, and Content
  • Competency enhancement
  • Schedule a demo
    Arrange a non-binding one with
    Initial consultation with our AI experts.
  • Free technical presentation
    In regular free specialist lectures
    Learn how to use nele.ai in everyday life.
  • Trainings
    Ask for individual AI training
    tailored to your industry and team.
  • General information
  • News
    AI updates, news and reports
  • Press releases
    Press reports & images
PricingSecurity
logon
Login for adminLogin for users
registeringBook a demo — it's free
Login
  • Login for admin
  • Login for users
RegisterBook a demo — it's free

Switching and Data Portability at nele.ai

As of: 10.09.2026

nele.ai supports switching to another provider of a comparable data processing service or to the customer's own IT infrastructure and, insofar as technically possible, the parallel use of multiple providers.

This page provides information on switching and transfer options, available import and export formats, technical limitations, and the data structures and interoperability standards of nele.ai.

Contents

  • 1. Switching from nele.ai to Another Provider
  • 2. Switching to nele.ai
  • 3. Exportable Data and Digital Assets
  • 4. Non-exportable Data and Components
  • 5. Online Directory of Data Structures and Data Formats
    • 5.1 Basis and Structure of the Directory
    • 5.2 Container and Cross-cutting Formats
    • 5.3 Data Categories
    • 5.4 Schema Definitions
    • 5.5 Referenced Open Specifications
    • 5.6 Status and Updating of the Directory
  • 6. Interfaces and Interoperability
  • 7. Known Technical Limitations and Constraints
  • 8. Security during Switching
  • 9. Retrieval Period and Deletion
  • 10. Switching Costs
  • 11. ICT Infrastructure Used
  • 12. Protection against Incompatible Governmental Access from Third Countries
  • 13. Assistance and Contact

1. Switching from nele.ai to Another Provider

Switching from nele.ai is initiated by a notice of termination or a switching request pursuant to Clause 15 of the Terms of Use.

A switching request may be submitted via support@nele.ai.

Where possible, please provide the following information:

  • the customer account concerned
  • whether the switch is to be to another provider or to the customer's own IT infrastructure
  • in the case of a switch of provider, the necessary details of the new provider
  • which data and content are to be transferred
  • the desired date of the switch

Switching Procedure

Upon expiry of the applicable notice period, a transitional period of, in principle, no more than 30 calendar days begins. During this period, nele.ai remains available within the existing contractual scope, and the data can be exported and transferred.

The customer may extend the transitional period once, by a period that the customer considers appropriate.

If switching within 30 calendar days is not possible for technical reasons, GAL Digital informs the customer within 14 business days of receipt of the switching request of the reasons and the alternative transitional period required. This period shall not exceed seven months.

GAL Digital provides reasonable assistance to the customer and third parties authorised by the customer in carrying out the switch and implementing the customer's exit strategy.

Expected technical duration of a typical export: 72 hours on working days.

The actual duration may depend, in particular, on the volume of data and the export method selected.

2. Switching to nele.ai

The following import options are available for switching from another data processing service to nele.ai:

Import Method Supported Content Formats Technical Notes
File uploadChats, knowledge bases, users, groups, assistantsFiles (csv, doc, docx, html, json, jsonl, md, odp, ods, odt, pdf, ppt, pptx, rtf, txt, xls, xlsx, xml and, where applicable, others)Individual processing via the user interface
Assisted importChats, knowledge basesOriginal formats (csv, doc, docx, html, json, jsonl, md, odp, ods, odt, pdf, ppt, pptx, rtf, txt, xls, xlsx, xml and, where applicable, others) and JSON for configurations and chats.Request via support@nele.ai

3. Exportable Data and Digital Assets

In principle, the data and content provided by the customer and generated for the customer in the course of use can be exported.

These include, in particular:

Data Category Exportable Export Format Export Method
Content and files uploaded by the customerYesOriginal formatEmail with a download link
Chats, including user inputsYesOriginal formats and JSONEmail with a download link
AI-generated responsesYesOriginal formats and JSONEmail with a download link
Assistant configurationsYesOriginal formats and JSONEmail with a download link
Knowledge base contentYesOriginal formats and JSONEmail with a download link
Permanent knowledgeYesOriginal formats and JSONEmail with a download link
Associated metadataYesJSONEmail with a download link

The detailed structures and formats of these exports are described in Section 5.

4. Non-exportable Data and Components

Data and technical components that do not form part of the customer's exportable data or digital assets are not included in the export.

Category Reason
Software and technical components of nele.aiGAL Digital's own technical infrastructure and software
AI modelsModels of the respective model providers or of GAL Digital
Internal technical representationsInternal operation or protected technical structures
Third-party data in respect of which the customer does not hold the necessary rightsThird-party rights
Passwords, two-factor codes, API key valuesStored exclusively using a one-way function. No portable plain text exists; exporting the hash value would provide no benefit and would merely create a target for attack. For API keys, the name, owner, expiry and last use are exported, so that the inventory of issued keys remains traceable.
Credentials for external systems in knowledge base entriesThe customer's credentials for external source systems, stored in encrypted form. Decrypted in a downloadable archive, they would constitute a channel for data leakage without any gain in portability — the customer already has them at the source system. The type, source, context and status are exported so that the connection can be set up again.
Privacy filter mapping table (pseudonym → original value)Redundant and subject to disproportionate risk. Both the original text and the masked version are exported; the placeholders themselves indicate the type of information detected. The mapping can be reconstructed from these. The table itself adds no information to the export, but does add a consolidated, machine-readable index of all detected references to individuals. Omitting it entails no loss and removes a significant risk.
Embedding vectors of the knowledge basesDerived data that arise only through additional processing (see Recital 15 of the Data Regulation), and that can be used only with the same embedding model. The portable assets are the source document and the extracted text; both are included. The segmentation can be reproduced from the exported values for chunk size and overlap.
Aggregated usage data for analysisDaily and user analyses are produced by aggregating the usage records already included. They contain no information of their own and can be recalculated from the exported records at any time.
Chunk texts and internal segmentation dataVerbatim extracts from the source documents already included. Exporting them additionally would substantially increase the size of the archive without adding information.
Vendor-curated prompt templatesContent supplied with the product, rather than data generated through use of the service. If a user copies a template into their own prompt collection, that copy is included.
Operational telemetry, error and job queues, sessions, one-time login tokensOperational and diagnostic data and transient infrastructure state. Sessions and one-time tokens are active login credentials.
Organisation attributes set by the providerThe subscribed feature set, billing identifier, monthly credit limit of the organisation, and the flags for usage monitoring and automatic payment authorisation. The provider sets these values within the contractual relationship; they are not data of the organisation generated through use. The limits that the organisation itself assigns to its members and groups are included.
User account attributes set by the provider or via SSOThe flag indicating whether an account may change its own password, and the group names transmitted by the identity provider at login. Neither is maintained by the organisation; they result from the provision of the service or from the connected login system.
Configuration of login via an identity provider (SSO)Security configuration data. They describe how access to the service is secured and are not content generated through use of the service. They include the identity provider's connection data and certificates, the mapping of transmitted groups, and the service provider's key, which is assigned to the application rather than to the organisation in any event. The groups themselves maintained in the service are exported.
Data holdings and identifiers of the payment service providerInvoice and subscription data are maintained by the payment service provider. Neither a partial copy of those data holdings nor the identifiers used there for customers, subscriptions or invoices are exported: they are internal references to an external system that have no meaning outside that system. The invoice documents themselves and the credit allowances maintained in the service are exported.
Deleted and expired dataChats and images removed under retention rules are permanently deleted and cannot be exported.
Legacy data from Version 1 of the serviceAre not described by this directory. The directory covers exclusively the current data model; no schema is published for data holdings from Version 1.

5. Online Directory of Data Structures and Data Formats

This directory is provided pursuant to Article 30(1) of Regulation (EU) 2023/2854 (Data Regulation, “Data Act”).

The following directory describes the structures and formats in which the exportable data of nele.ai are made available.

5.1 Basis and Structure of the Directory

Unit of reference. An export always relates to an organisation (the account of the contracting party), rather than to individual users. Much of the content — assistants, prompts, knowledge bases, files — is assigned to the organisation and continues to exist regardless of whether the creating user account still exists. A subset limited to an individual would therefore silently omit components of the account.

Structure. The export is provided as a ZIP archive. It contains the structured data as JSON files under data/, the associated files in their original format under files/ — each under its respective identifier — and, under schemas/, a verbatim copy of the schema definitions. This allows an archive to be validated entirely offline, without access to this page.

Schema definitions. The binding structural descriptions are provided as JSON Schema (Draft 07) and are reproduced in full and verbatim under 5.4. Each schema file is named in the tables and linked to an anchor within this page. All references between the files are relative; the schemas can be resolved without network access.

Identifiers. Internal identifiers are not exported. Each record has its own opaque identifier from which neither the internal key nor a sequence, a counter value or a creation time can be derived. Within an archive, this identifier is consistent, so that sharing permissions, folder structures and file references remain resolvable. Files under files/ are addressed solely by their identifier; no particular path structure within this directory is guaranteed, and such a path must not be constructed from the information provided. Which file belongs to which record is determined solely by the location that references it; the file is also described there.

Format version. The version of the export format (manifest.formatVersion) is independent of any software, release or service version of nele.ai. It changes exclusively through changes to the schemas published here: additive changes increase the minor version, and breaking changes increase the major version. A new version of the application does not increase it.

Open value lists. Where this directory lists values — tools, permissions, processing states, languages, chunk sizes — these are examples as at the time of publication and not an exhaustive list. These vocabularies grow with the service's feature set. Processing systems must accept unknown values and must not reject a record on that ground. Only the specifications that describe the format itself are exhaustive, such as character encoding, the checksum algorithm and the distinction between model selection options.

Completeness. Each archive itself specifies in its manifest under excluded which data it does not contain. Section 4 provides the reasons for each of these omissions.

5.2 Container and Cross-cutting Formats

Data Category Format Structure / Schema Character Encoding / Version Relevant Standard or Open Specification
Export archive (container)ZIPmanifest.json as the index; directories data/, files/, schemas/ZIP 6.3.10, Deflate/Store, unencryptedPKWARE APPNOTE 6.3.10; profile in accordance with ISO/IEC 21320-1:2015
Export manifestJSONmanifest.schema.jsonUTF-8 / Format version 1.0.0RFC 8259 (STD 90)
Schema definitionsJSON Schemadata-act-schemas/*.schema.jsonUTF-8 / Draft 07JSON Schema Draft 07 (draft-handrews-json-schema-01 and -validation-01)
Character encoding (all text files)—UTF-8 throughout, without BOMUTF-8RFC 3629; ISO/IEC 10646
Time informationStringcommon.schema.json → timestamp; UTC with suffix ZRFC 3339 profileRFC 3339 (profile of ISO 8601-1:2019)
ChecksumsString (hexadecimal)manifest.files[].sha256SHA-256FIPS PUB 180-4; RFC 6234
IdentifiersStringcommon.schema.json → exportIdopaque, consistent within the archiveno external standard; deliberately vendor-specific and opaque (see 5.1)
Amounts and credit valuesString with a decimal pointcommon.schema.json → decimalStringup to 64 digits, of which 16 are decimal placesRFC 8259 Section 6 — represented as a string to avoid loss of precision
Language codesStringcommon.schema.json → localetwo-letter; the set of languages offered is not fixedISO 639-1
Country codesStringcommon.schema.json → countryCodeALL and Alpha-2 codesISO 3166-1 Alpha-2
Media typesStringcommon.schema.json → mimeType—RFC 2046; IANA Media Types Registry
Email addressesStringaccount.schema.json—RFC 5322

5.3 Data Categories

Data Category Format Structure / Schema Character Encoding / Version Relevant Standard or Open Specification
ChatsJSONdata/chats.json → chats.schema.jsonUTF-8 / 1.0RFC 8259; JSON Schema Draft 07
Message content and AI responsesMarkdown in a JSON stringcommon.schema.json → message, field contentUTF-8 / CommonMark 0.31.2CommonMark 0.31.2, plus the tables and strikethrough extensions; RFC 8259
AI reasoning steps (Reasoning)Text in a JSON stringcommon.schema.json → message, field reasoningUTF-8 / 1.0RFC 8259
AI tool callsJSONcommon.schema.json → toolCallsUTF-8 / 1.0RFC 8259
Model configurationJSONcommon.schema.json → modelConfigurationUTF-8 / 1.0RFC 8259
System prompt and response configurationJSONcommon.schema.json → systemPromptUTF-8 / 1.0RFC 8259
Folder and filing structureJSONcommon.schema.json → folderNode, in each domain file under foldersUTF-8 / 1.0RFC 8259
Sharing and permissionsJSONcommon.schema.json → permissionUTF-8 / 1.0RFC 8259
AssistantsJSONdata/assistants.json → assistants.schema.jsonUTF-8 / 1.0RFC 8259
Assistant chats and messagesJSONassistants.schema.json, section assistantChatsUTF-8 / 1.0RFC 8259
Permanent knowledge (assistant files)Original formatFiles under files/, referenced in assistants.schema.json under permanentKnowledgeOriginal encoding; index UTF-8RFC 2046; format standards of the respective individual file
Prompts (multilingual)JSONdata/prompts.json → prompts.schema.json; one version per language, addressed by the language codeUTF-8 / 1.0RFC 8259; ISO 639-1
Prompt attachmentsOriginal formatFiles under files/, referenced in prompts.schema.json under attachmentsOriginal encodingRFC 2046
Knowledge bases (metadata)JSONdata/knowledge-bases.json → knowledge-bases.schema.jsonUTF-8 / 1.0RFC 8259
Knowledge base source documentsOriginal formatFiles under files/, referenced in knowledge-bases.schema.json under sourceFileOriginal encodingFormat standards of the individual file, e.g. ISO 32000-1 (PDF), ISO/IEC 29500 (DOCX)
Extracted text from source documentsPlain textFiles under files/, referenced in knowledge-bases.schema.json under extractedTextFileUTF-8 / 1.0RFC 2046 (text/plain); RFC 3629
Chat and message attachmentsOriginal formatFiles under files/, referenced in common.schema.json → message under attachmentsOriginal encodingRFC 2046
Audio recordingsOriginal formatFiles under files/, referenced in transcriptions.schema.json under audioFileOriginal encodingRFC 2046
TranscriptionsPlain text + JSONdata/transcriptions.json → transcriptions.schema.json; text under files/UTF-8 / 1.0RFC 8259; RFC 3629
User accountsJSONdata/account.json → account.schema.json, section usersUTF-8 / 1.0RFC 8259; RFC 5322
Organisation and groupsJSONaccount.schema.json, sections account and groupsUTF-8 / 1.0RFC 8259
InvitationsJSONaccount.schema.json, section invitationsUTF-8 / 1.0RFC 8259
SettingsJSONdata/settings.json → settings.schema.jsonUTF-8 / 1.0RFC 8259
Content filtersJSONdata/content-filters.json → content-filters.schema.jsonUTF-8 / 1.0RFC 8259
Usage data and credit consumptionJSONdata/usage.json → usage.schema.jsonUTF-8 / 1.0RFC 8259
API keys (metadata only)JSONdata/api-keys.json → api-keys.schema.jsonUTF-8 / 1.0RFC 8259
Activity logJSONdata/activity-log.json → activity-log.schema.jsonUTF-8 / 1.0RFC 8259
InvoicesPDF with embedded XMLInvoice document of the payment service provider with embedded CII-XMLPDF 1.x; CII UN/CEFACT D16BISO 32000-1:2008; EN 16931-1:2017; CIUS XRechnung 3.0 (KoSIT); embedding in accordance with ZUGFeRD 2.x / Factur-X

5.4 Schema Definitions

The following 13 files are the binding structural descriptions of the export format. They are reproduced here verbatim from the files that each archive includes under schemas/.

Each file, each definition and each top-level element has its own anchor in the form #schema-<datei> or #<datei>-definitions-<name>. The anchors are located within this page; every schema reference in the tables above leads directly to the corresponding definition, and every $ref within the schemas refers to its target on this page.

Schema FileSubject MatterScopeAnchor
account.schema.jsonAccount4 elements#schema-account
activity-log.schema.jsonActivity log1 element#schema-activity-log
api-keys.schema.jsonAPI keys1 element#schema-api-keys
assistants.schema.jsonAssistants3 elements#schema-assistants
chats.schema.jsonChats2 elements#schema-chats
common.schema.jsonCommon definitions37 definitions#schema-common
content-filters.schema.jsonContent filters1 element#schema-content-filters
knowledge-bases.schema.jsonKnowledge bases2 elements#schema-knowledge-bases
manifest.schema.jsonExport manifest9 elements#schema-manifest
prompts.schema.jsonPrompts3 elements#schema-prompts
settings.schema.jsonSettings1 element#schema-settings
transcriptions.schema.jsonTranscriptions1 element#schema-transcriptions
usage.schema.jsonUsage2 elements#schema-usage

The schema definitions are initially collapsed. Jumping to a definition expands the corresponding section.

5.4.1 account.schema.json — Account

The organisation holding the contract, its members, groups and pending invitations. Credentials are never part of the export: passwords and two-factor codes are stored as one-way hashes and there is nothing portable to hand over. Settings that the provider defines for the organisation rather than the organisation itself, and the single sign-on configuration, are outside the scope of the export; the directory explains why.

Top-level elements: account, users, groups, invitations

Show schema definition account.schema.json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Account",
  "description": "The organisation holding the contract, its members, groups and pending invitations. Credentials are never part of the export: passwords and two-factor codes are stored as one-way hashes and there is nothing portable to hand over. Settings that the provider defines for the organisation rather than the organisation itself, and the single sign-on configuration, are outside the scope of the export; the directory explains why.",
  "type": "object",
  "properties": {
    "account": {
      "title": "Organisation",
      "type": "object",
      "properties": {
        "id": {
          "$ref": "common.schema.json#/definitions/exportId"
        },
        "name": {
          "type": "string"
        },
        "ownerId": {
          "$ref": "common.schema.json#/definitions/exportId"
        },
        "buyerReference": {
          "description": "Reference the customer requires on invoices.",
          "type": "string"
        },
        "chatText": {
          "description": "Organisation-specific notice shown in the chat area.",
          "type": [
            "string",
            "null"
          ]
        },
        "isTwoFactorRequired": {
          "type": "boolean"
        },
        "isWebSearchEnabled": {
          "type": "boolean"
        },
        "defaultPrivacyFilterActive": {
          "description": "Whether personal data is masked before being sent to the model provider by default.",
          "type": "boolean"
        },
        "defaultModel": {
          "$ref": "common.schema.json#/definitions/nullableModelConfiguration"
        },
        "defaultImageModel": {
          "$ref": "common.schema.json#/definitions/nullableModelConfiguration"
        },
        "logo": {
          "description": "Branding logo of the organisation.",
          "$ref": "common.schema.json#/definitions/nullableFileReference"
        },
        "createdAt": {
          "$ref": "common.schema.json#/definitions/timestamp"
        },
        "updatedAt": {
          "$ref": "common.schema.json#/definitions/timestamp"
        }
      },
      "required": [
        "id",
        "name",
        "ownerId",
        "createdAt"
      ],
      "additionalProperties": false
    },
    "users": {
      "type": "array",
      "items": {
        "title": "User",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "common.schema.json#/definitions/exportId"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "firstname": {
            "type": [
              "string",
              "null"
            ]
          },
          "lastname": {
            "type": [
              "string",
              "null"
            ]
          },
          "locale": {
            "$ref": "common.schema.json#/definitions/locale"
          },
          "abilities": {
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/ability"
            }
          },
          "groupIds": {
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/exportId"
            }
          },
          "creditLimitPerMonth": {
            "$ref": "common.schema.json#/definitions/creditLimit"
          },
          "creditLimitPerDay": {
            "$ref": "common.schema.json#/definitions/creditLimit"
          },
          "receivesUsageInfo": {
            "type": "boolean"
          },
          "webSearchCountry": {
            "$ref": "common.schema.json#/definitions/countryCode"
          },
          "webSearchConsentedAt": {
            "$ref": "common.schema.json#/definitions/nullableTimestamp"
          },
          "usageExportConsentedAt": {
            "description": "When the user consented to appearing by name in the usage report.",
            "$ref": "common.schema.json#/definitions/nullableTimestamp"
          },
          "inactiveChatsExpirationTime": {
            "$ref": "common.schema.json#/definitions/expirationTime"
          },
          "redactions": {
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/redactionNotice"
            }
          },
          "createdAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          },
          "updatedAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          }
        },
        "required": [
          "id",
          "email",
          "locale",
          "abilities",
          "createdAt"
        ],
        "additionalProperties": false
      }
    },
    "groups": {
      "type": "array",
      "items": {
        "title": "Group",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "common.schema.json#/definitions/exportId"
          },
          "name": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "creditLimitPerMonth": {
            "$ref": "common.schema.json#/definitions/creditLimit"
          },
          "creditLimitPerDay": {
            "$ref": "common.schema.json#/definitions/creditLimit"
          },
          "abilities": {
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/ability"
            }
          },
          "memberIds": {
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/exportId"
            }
          },
          "createdAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          },
          "updatedAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          }
        },
        "required": [
          "id",
          "name",
          "enabled",
          "abilities",
          "memberIds",
          "createdAt"
        ],
        "additionalProperties": false
      }
    },
    "invitations": {
      "description": "Invitations issued but not yet accepted. The invitation token is a credential and is not exported.",
      "type": "array",
      "items": {
        "title": "Invitation",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "common.schema.json#/definitions/exportId"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "invitedById": {
            "$ref": "common.schema.json#/definitions/nullableExportId"
          },
          "locale": {
            "$ref": "common.schema.json#/definitions/locale"
          },
          "abilities": {
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/ability"
            }
          },
          "groupIds": {
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/exportId"
            }
          },
          "creditLimitPerMonth": {
            "$ref": "common.schema.json#/definitions/creditLimit"
          },
          "creditLimitPerDay": {
            "$ref": "common.schema.json#/definitions/creditLimit"
          },
          "createdAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          }
        },
        "required": [
          "id",
          "email",
          "locale",
          "createdAt"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "account",
    "users",
    "groups",
    "invitations"
  ],
  "additionalProperties": false
}

5.4.2 activity-log.schema.json — Activity log

Audit trail of changes made within the organisation. Each entry records that a change occurred, which record it concerned and who caused it.

Top-level elements: activities

Show schema definition activity-log.schema.json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Activity log",
  "description": "Audit trail of changes made within the organisation. Each entry records that a change occurred, which record it concerned and who caused it.",
  "type": "object",
  "properties": {
    "activities": {
      "type": "array",
      "items": {
        "title": "Activity",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "common.schema.json#/definitions/exportId"
          },
          "description": {
            "type": "string"
          },
          "event": {
            "enum": [
              "created",
              "updated",
              "deleted",
              "restored",
              null
            ]
          },
          "subject": {
            "description": "The record the entry concerns.",
            "anyOf": [
              {
                "$ref": "common.schema.json#/definitions/logReference"
              },
              {
                "type": "null"
              }
            ]
          },
          "causer": {
            "description": "The user who caused the change.",
            "anyOf": [
              {
                "$ref": "common.schema.json#/definitions/logReference"
              },
              {
                "type": "null"
              }
            ]
          },
          "properties": {
            "description": "Additional context recorded with the entry, after redaction.",
            "type": [
              "object",
              "null"
            ]
          },
          "redactions": {
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/redactionNotice"
            }
          },
          "createdAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          }
        },
        "required": [
          "id",
          "description",
          "event",
          "subject",
          "causer",
          "createdAt"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "activities"
  ],
  "additionalProperties": false
}

5.4.3 api-keys.schema.json — API keys

Metadata of the API keys issued for the organisation. The key itself is stored as a one-way hash and its plain text exists only once, at creation, so it cannot be exported.

Top-level elements: apiKeys

Show schema definition api-keys.schema.json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "API keys",
  "description": "Metadata of the API keys issued for the organisation. The key itself is stored as a one-way hash and its plain text exists only once, at creation, so it cannot be exported.",
  "type": "object",
  "properties": {
    "apiKeys": {
      "type": "array",
      "items": {
        "title": "API key",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "common.schema.json#/definitions/exportId"
          },
          "name": {
            "type": "string"
          },
          "userId": {
            "description": "The user the key was issued to.",
            "$ref": "common.schema.json#/definitions/nullableExportId"
          },
          "lastUsedAt": {
            "$ref": "common.schema.json#/definitions/nullableTimestamp"
          },
          "expiresAt": {
            "$ref": "common.schema.json#/definitions/nullableTimestamp"
          },
          "redactions": {
            "description": "Always records that the key material itself was withheld.",
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/redactionNotice"
            }
          },
          "createdAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          }
        },
        "required": [
          "id",
          "name",
          "userId",
          "createdAt"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "apiKeys"
  ],
  "additionalProperties": false
}

5.4.4 assistants.schema.json — Assistants

Assistants configured by the organisation, the permanent knowledge files attached to them, and the conversations held with them.

Top-level elements: assistants, assistantChats, folders

Show schema definition assistants.schema.json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Assistants",
  "description": "Assistants configured by the organisation, the permanent knowledge files attached to them, and the conversations held with them.",
  "type": "object",
  "properties": {
    "assistants": {
      "type": "array",
      "items": {
        "title": "Assistant",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "common.schema.json#/definitions/exportId"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "enabled": {
            "type": "boolean"
          },
          "creatorId": {
            "description": "Null when the creating account has since been deleted; the assistant belongs to the organisation and survives.",
            "$ref": "common.schema.json#/definitions/nullableExportId"
          },
          "folderId": {
            "$ref": "common.schema.json#/definitions/nullableExportId"
          },
          "position": {
            "$ref": "common.schema.json#/definitions/treePosition"
          },
          "isShared": {
            "type": "boolean"
          },
          "permissions": {
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/permission"
            }
          },
          "systemPrompt": {
            "description": "Instructions that govern the assistant's behaviour.",
            "type": [
              "string",
              "null"
            ]
          },
          "modelConfiguration": {
            "$ref": "common.schema.json#/definitions/modelConfiguration"
          },
          "imageModelConfiguration": {
            "$ref": "common.schema.json#/definitions/nullableModelConfiguration"
          },
          "tools": {
            "$ref": "common.schema.json#/definitions/toolConfiguration"
          },
          "options": {
            "$ref": "common.schema.json#/definitions/chatOptions"
          },
          "knowledge": {
            "description": "The knowledge this assistant draws on: either automatic selection or the knowledge bases explicitly attached to it.",
            "$ref": "common.schema.json#/definitions/knowledgeConfiguration"
          },
          "permanentKnowledge": {
            "description": "Files that are permanently part of the assistant's context, as opposed to a knowledge base, which is consulted per query.",
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/fileReference"
            }
          },
          "createdAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          },
          "updatedAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          }
        },
        "required": [
          "id",
          "title",
          "enabled",
          "creatorId",
          "isShared",
          "createdAt"
        ],
        "additionalProperties": false
      }
    },
    "assistantChats": {
      "type": "array",
      "items": {
        "title": "Assistant chat",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "common.schema.json#/definitions/exportId"
          },
          "assistantId": {
            "$ref": "common.schema.json#/definitions/exportId"
          },
          "title": {
            "type": "string"
          },
          "creatorId": {
            "$ref": "common.schema.json#/definitions/nullableExportId"
          },
          "creditUsage": {
            "$ref": "common.schema.json#/definitions/decimalString"
          },
          "creditUsageUpdatedAt": {
            "$ref": "common.schema.json#/definitions/nullableTimestamp"
          },
          "messages": {
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/message"
            }
          },
          "createdAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          },
          "updatedAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          }
        },
        "required": [
          "id",
          "assistantId",
          "title",
          "creatorId",
          "messages",
          "createdAt"
        ],
        "additionalProperties": false
      }
    },
    "folders": {
      "type": "array",
      "items": {
        "$ref": "common.schema.json#/definitions/folderNode"
      }
    }
  },
  "required": [
    "assistants",
    "assistantChats",
    "folders"
  ],
  "additionalProperties": false
}

5.4.5 chats.schema.json — Chats

Conversations held in the chat area, including every message, the folder tree they are filed in and the permissions under which they were shared.

Top-level elements: chats, folders

Show schema definition chats.schema.json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Chats",
  "description": "Conversations held in the chat area, including every message, the folder tree they are filed in and the permissions under which they were shared.",
  "type": "object",
  "properties": {
    "chats": {
      "type": "array",
      "items": {
        "title": "Chat",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "common.schema.json#/definitions/exportId"
          },
          "title": {
            "type": "string"
          },
          "creatorId": {
            "description": "The user who started the conversation. Null when that account has since been deleted; the chat itself belongs to the organisation and survives.",
            "$ref": "common.schema.json#/definitions/nullableExportId"
          },
          "folderId": {
            "description": "Folder this chat is filed in, or null when it sits at the root of the tree.",
            "$ref": "common.schema.json#/definitions/nullableExportId"
          },
          "position": {
            "$ref": "common.schema.json#/definitions/treePosition"
          },
          "isShared": {
            "type": "boolean"
          },
          "permissions": {
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/permission"
            }
          },
          "modelConfiguration": {
            "$ref": "common.schema.json#/definitions/modelConfiguration"
          },
          "imageModelConfiguration": {
            "$ref": "common.schema.json#/definitions/nullableModelConfiguration"
          },
          "tools": {
            "$ref": "common.schema.json#/definitions/toolConfiguration"
          },
          "options": {
            "$ref": "common.schema.json#/definitions/chatOptions"
          },
          "systemPrompt": {
            "$ref": "common.schema.json#/definitions/systemPrompt"
          },
          "creditUsage": {
            "description": "Credits consumed by this conversation.",
            "$ref": "common.schema.json#/definitions/decimalString"
          },
          "creditUsageUpdatedAt": {
            "$ref": "common.schema.json#/definitions/nullableTimestamp"
          },
          "messages": {
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/message"
            }
          },
          "createdAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          },
          "updatedAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          }
        },
        "required": [
          "id",
          "title",
          "creatorId",
          "isShared",
          "messages",
          "createdAt"
        ],
        "additionalProperties": false
      }
    },
    "folders": {
      "description": "Folder tree of the chat area, one tree per user.",
      "type": "array",
      "items": {
        "$ref": "common.schema.json#/definitions/folderNode"
      }
    }
  },
  "required": [
    "chats",
    "folders"
  ],
  "additionalProperties": false
}

5.4.6 common.schema.json — Common definitions

Shared building blocks referenced by every other schema of the nele.ai data export. This file declares no top-level structure of its own; it exists solely to be referenced via relative $ref, for example {"$ref": "common.schema.json#/definitions/exportId"}.

Definitions: exportId, nullableExportId, timestamp, nullableTimestamp, decimalString, creditLimit, sha256, mimeType, locale, countryCode, localeMap, modelConfiguration, nullableModelConfiguration, systemPrompt, localizedSystemPrompt, toolName, toolConfiguration, knowledgeConfiguration, toolCall, toolCalls, chatOptions, messageRole, messageStatus, message, ability, permission, treePosition, folderNode, fileReference, nullableFileReference, expirationTime, chunkSize, chunkOverlap, itemStatus, itemType, logReference, redactionNotice

Show schema definition common.schema.json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Common definitions",
  "description": "Shared building blocks referenced by every other schema of the nele.ai data export. This file declares no top-level structure of its own; it exists solely to be referenced via relative $ref, for example {\"$ref\": \"common.schema.json#/definitions/exportId\"}.",
  "definitions": {
    "exportId": {
      "title": "Export identifier",
      "description": "Opaque identifier of a record inside the archive. Internal identifiers are never exported: they are replaced by generated values from which neither the internal identifier nor an ordering, a counter position or a creation time can be derived. The same entity carries the same identifier in every file of one archive, which is what keeps permissions, folder trees and the file index resolvable. No stability is promised across two archives.",
      "type": "string",
      "minLength": 8,
      "maxLength": 64,
      "pattern": "^[A-Za-z0-9_-]+$"
    },
    "nullableExportId": {
      "title": "Optional reference",
      "description": "An export identifier, or null where the reference is absent — for example a record filed at the root of a tree, or one whose creator's account has since been deleted.",
      "anyOf": [
        {
          "$ref": "#/definitions/exportId"
        },
        {
          "type": "null"
        }
      ]
    },
    "timestamp": {
      "title": "Timestamp",
      "description": "Point in time in UTC, formatted according to RFC 3339 with the literal offset 'Z'.",
      "type": "string",
      "format": "date-time",
      "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?Z$"
    },
    "nullableTimestamp": {
      "title": "Optional timestamp",
      "description": "A timestamp, or null where the event it marks has not occurred.",
      "anyOf": [
        {
          "$ref": "#/definitions/timestamp"
        },
        {
          "type": "null"
        }
      ]
    },
    "decimalString": {
      "title": "Exact decimal",
      "description": "Decimal number carried as a JSON string. The underlying columns are numeric(64,16); RFC 8259 section 6 only guarantees interoperability within IEEE 754 double precision, which 16 fractional digits exceed. Consumers must parse this with an arbitrary-precision decimal type, never as a floating point number.",
      "type": "string",
      "pattern": "^-?[0-9]+(\\.[0-9]+)?$"
    },
    "creditLimit": {
      "title": "Credit limit",
      "description": "Upper bound on the credits that may be consumed in the given period, or null when no limit applies.",
      "type": [
        "integer",
        "null"
      ]
    },
    "sha256": {
      "title": "SHA-256 checksum",
      "description": "Lower-case hexadecimal SHA-256 digest (FIPS PUB 180-4).",
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "mimeType": {
      "title": "Media type",
      "description": "IANA media type of the referenced content (RFC 2046).",
      "type": "string",
      "pattern": "^[a-zA-Z0-9!#$&^_.+-]+/[a-zA-Z0-9!#$&^_.+-]+$"
    },
    "locale": {
      "title": "Locale",
      "description": "Language tag as a two-letter ISO 639-1 code. Which languages the service offers changes over time; the form is fixed, the set is not.",
      "type": "string",
      "pattern": "^[a-z]{2}$",
      "examples": [
        "de",
        "en",
        "fr"
      ]
    },
    "countryCode": {
      "title": "Country code",
      "description": "Region used to bias web search results. 'ALL' means no regional restriction; every other value is an ISO 3166-1 alpha-2 code.",
      "type": "string",
      "pattern": "^(ALL|[A-Z]{2})$",
      "examples": [
        "ALL",
        "DE",
        "AT",
        "CH"
      ]
    },
    "localeMap": {
      "title": "Translated text",
      "description": "Text held per locale, keyed by ISO 639-1 code. Sparsely populated: only locales that actually carry a translation are present.",
      "type": "object",
      "propertyNames": {
        "pattern": "^[a-z]{2}$"
      },
      "additionalProperties": {
        "type": "string"
      }
    },
    "modelConfiguration": {
      "title": "Model configuration",
      "description": "Which model was used. Either automatic selection, a model of the provider identified by its original name, or a model the organisation configured itself.",
      "oneOf": [
        {
          "title": "Automatic model selection",
          "type": "object",
          "properties": {
            "type": {
              "const": "auto"
            }
          },
          "required": [
            "type"
          ],
          "additionalProperties": false
        },
        {
          "title": "Provider model",
          "type": "object",
          "properties": {
            "type": {
              "enum": [
                "text_model",
                "image_model"
              ]
            },
            "name": {
              "description": "Original name of the model as issued by the model provider, for example the name under which it is addressed at that provider's API. Carried instead of an internal identifier so that the selection remains meaningful outside this service.",
              "type": "string",
              "minLength": 1
            },
            "configuration": {
              "description": "Model parameters. Keys and values are always strings and never nested; an empty object is the common case.",
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "required": [
            "type",
            "name",
            "configuration"
          ],
          "additionalProperties": false
        },
        {
          "title": "Organisation model",
          "type": "object",
          "properties": {
            "type": {
              "const": "team_model"
            },
            "id": {
              "description": "The model configured by the organisation itself.",
              "$ref": "#/definitions/exportId"
            },
            "configuration": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            }
          },
          "required": [
            "type",
            "id",
            "configuration"
          ],
          "additionalProperties": false
        }
      ]
    },
    "nullableModelConfiguration": {
      "title": "Optional model configuration",
      "description": "A model configuration, or null where none was recorded.",
      "anyOf": [
        {
          "$ref": "#/definitions/modelConfiguration"
        },
        {
          "type": "null"
        }
      ]
    },
    "systemPrompt": {
      "title": "System prompt",
      "description": "Behavioural configuration of the assistant for one conversation. Always present in full; the application falls back to its default rather than storing null.",
      "type": "object",
      "properties": {
        "useCustomSystemMessage": {
          "description": "Whether systemMessage is applied.",
          "type": "boolean"
        },
        "systemMessage": {
          "description": "Free-text system message. Its maximum length is a configured limit of the service and is therefore not fixed in this schema.",
          "type": "string"
        },
        "answerLength": {
          "enum": [
            "short",
            "standard",
            "detailed"
          ]
        },
        "answerStyle": {
          "enum": [
            "friendly",
            "factual",
            "formal"
          ]
        }
      },
      "required": [
        "useCustomSystemMessage",
        "systemMessage",
        "answerLength",
        "answerStyle"
      ],
      "additionalProperties": false
    },
    "localizedSystemPrompt": {
      "title": "Localized system prompt",
      "description": "System prompt held per locale, keyed by ISO 639-1 code. Every locale the service offers carries an entry; the set of locales is not fixed by this schema.",
      "type": "object",
      "propertyNames": {
        "pattern": "^[a-z]{2}$"
      },
      "additionalProperties": {
        "$ref": "#/definitions/systemPrompt"
      },
      "minProperties": 1
    },
    "toolName": {
      "title": "Tool name",
      "description": "A tool the model may call while answering. This vocabulary is open: it grows with the service, so a consumer must accept values not listed here rather than reject the record. The values in use at the time of publication are given as examples.",
      "type": "string",
      "minLength": 1,
      "examples": [
        "generate_image",
        "optimize_prompt",
        "search_web"
      ]
    },
    "toolConfiguration": {
      "title": "Tool configuration",
      "description": "Which tools the model may call: either automatic selection, or an explicit list.",
      "oneOf": [
        {
          "const": "auto"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/definitions/toolName"
          },
          "uniqueItems": true
        }
      ]
    },
    "knowledgeConfiguration": {
      "title": "Knowledge configuration",
      "description": "Which knowledge the model may draw on while answering: either automatic selection, or an explicit list of knowledge bases. One single field carries both cases, because the service treats them as mutually exclusive. The content of the referenced knowledge bases is exported in knowledge-bases.json.",
      "oneOf": [
        {
          "const": "auto"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/definitions/exportId"
          },
          "uniqueItems": true
        }
      ]
    },
    "toolCall": {
      "title": "Tool call",
      "description": "A single tool invocation performed while answering, including its result.",
      "type": "object",
      "properties": {
        "type": {
          "const": "dynamic-tool"
        },
        "toolName": {
          "$ref": "#/definitions/toolName"
        },
        "toolCallId": {
          "type": "string"
        },
        "state": {
          "enum": [
            "output-available",
            "output-error"
          ]
        },
        "input": {
          "description": "Arguments the model passed to the tool.",
          "type": "object"
        },
        "output": {
          "description": "Result returned by the tool. Null when the call failed."
        },
        "errorText": {
          "description": "Error description. Null when the call succeeded.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "type",
        "toolName",
        "toolCallId",
        "state",
        "input",
        "output",
        "errorText"
      ],
      "additionalProperties": false,
      "allOf": [
        {
          "description": "A failed call carries no output.",
          "if": {
            "properties": {
              "state": {
                "const": "output-error"
              }
            },
            "required": [
              "state"
            ]
          },
          "then": {
            "properties": {
              "output": {
                "type": "null"
              }
            }
          }
        },
        {
          "description": "A successful call carries no error text.",
          "if": {
            "properties": {
              "state": {
                "const": "output-available"
              }
            },
            "required": [
              "state"
            ]
          },
          "then": {
            "properties": {
              "errorText": {
                "type": "null"
              }
            }
          }
        }
      ]
    },
    "toolCalls": {
      "title": "Tool calls",
      "type": "array",
      "items": {
        "$ref": "#/definitions/toolCall"
      }
    },
    "chatOptions": {
      "title": "Conversation options",
      "description": "Options active for a conversation. 'pseudonymize' means personal data was masked before the text was sent to the model provider.",
      "type": "array",
      "items": {
        "enum": [
          "pseudonymize"
        ]
      },
      "uniqueItems": true
    },
    "messageRole": {
      "title": "Message role",
      "type": "string",
      "enum": [
        "user",
        "assistant",
        "system",
        "tool_call",
        "tool_result"
      ]
    },
    "messageStatus": {
      "title": "Message status",
      "type": "string",
      "enum": [
        "pending",
        "success",
        "error",
        "stopped"
      ]
    },
    "message": {
      "title": "Message",
      "description": "A single message of a conversation. Chat messages and assistant-chat messages share this structure; only the conversation they belong to differs.",
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/definitions/exportId"
        },
        "role": {
          "$ref": "#/definitions/messageRole"
        },
        "status": {
          "$ref": "#/definitions/messageStatus"
        },
        "content": {
          "description": "Message text as authored or generated. The format is CommonMark, extended with tables and strikethrough. A strict CommonMark reader renders those two constructs as plain text and therefore loses their formatting, not their content.",
          "type": "string"
        },
        "pseudonymizationContent": {
          "description": "The redacted variant of content that was actually transmitted to the model provider, present only when the privacy filter was active. The mapping from placeholder back to the original value is deliberately not part of the export; see the exclusions section of the directory.",
          "type": [
            "string",
            "null"
          ]
        },
        "reasoning": {
          "description": "Reasoning trace of the model, where the model returned one.",
          "type": [
            "string",
            "null"
          ]
        },
        "toolCalls": {
          "anyOf": [
            {
              "$ref": "#/definitions/toolCalls"
            },
            {
              "type": "null"
            }
          ]
        },
        "modelConfiguration": {
          "$ref": "#/definitions/nullableModelConfiguration"
        },
        "imageModelConfiguration": {
          "$ref": "#/definitions/nullableModelConfiguration"
        },
        "tools": {
          "anyOf": [
            {
              "$ref": "#/definitions/toolConfiguration"
            },
            {
              "type": "null"
            }
          ]
        },
        "options": {
          "anyOf": [
            {
              "$ref": "#/definitions/chatOptions"
            },
            {
              "type": "null"
            }
          ]
        },
        "systemPrompt": {
          "anyOf": [
            {
              "$ref": "#/definitions/systemPrompt"
            },
            {
              "type": "null"
            }
          ]
        },
        "attachments": {
          "description": "Files attached to this message, referencing entries of the file index.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/fileReference"
          }
        },
        "isComplete": {
          "type": "boolean"
        },
        "completedAt": {
          "$ref": "#/definitions/nullableTimestamp"
        },
        "createdAt": {
          "$ref": "#/definitions/timestamp"
        },
        "updatedAt": {
          "$ref": "#/definitions/timestamp"
        }
      },
      "required": [
        "id",
        "role",
        "status",
        "content",
        "isComplete",
        "createdAt"
      ],
      "additionalProperties": false
    },
    "ability": {
      "title": "Ability",
      "description": "A permission that can be granted to a user or a group. This vocabulary is open: it grows with the service, so a consumer must accept values not listed here rather than reject the record. The values in use at the time of publication are given as examples.",
      "type": "string",
      "minLength": 1,
      "examples": [
        "assistants_create",
        "chats_create",
        "prompts_create",
        "invoices",
        "team",
        "usage",
        "users"
      ]
    },
    "permission": {
      "title": "Share permission",
      "description": "Grants one action on a shared object to a user, a group or the whole organisation.",
      "type": "object",
      "properties": {
        "ownerType": {
          "enum": [
            "user",
            "group",
            "team"
          ]
        },
        "ownerId": {
          "description": "The user, group or organisation the permission was granted to. Null when it applies to the organisation as a whole.",
          "$ref": "#/definitions/nullableExportId"
        },
        "action": {
          "enum": [
            "view",
            "use",
            "update",
            "delete"
          ]
        }
      },
      "required": [
        "ownerType",
        "ownerId",
        "action"
      ],
      "additionalProperties": false
    },
    "treePosition": {
      "title": "Position",
      "description": "Zero-based sort position among the siblings of the same parent.",
      "type": "integer",
      "minimum": 0
    },
    "folderNode": {
      "title": "Folder",
      "description": "One folder of a filing tree. Folders nest through parentId; a null parentId marks a root folder. Objects state which folder they sit in through their own folderId.",
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/definitions/exportId"
        },
        "parentId": {
          "$ref": "#/definitions/nullableExportId"
        },
        "ownerId": {
          "description": "The user whose personal filing tree this folder belongs to.",
          "$ref": "#/definitions/exportId"
        },
        "title": {
          "type": "string"
        },
        "position": {
          "$ref": "#/definitions/treePosition"
        },
        "createdAt": {
          "$ref": "#/definitions/timestamp"
        },
        "updatedAt": {
          "$ref": "#/definitions/timestamp"
        }
      },
      "required": [
        "id",
        "parentId",
        "ownerId",
        "title",
        "position"
      ],
      "additionalProperties": false
    },
    "fileReference": {
      "title": "File reference",
      "description": "Describes a file contained in the archive under files/ and is the only place that file is described. The file is identified by its identifier alone; the archive makes no promise about how the files are arranged inside that directory, so consumers must resolve a file through this identifier rather than by constructing a path.",
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/definitions/exportId"
        },
        "originalFilename": {
          "description": "File name as supplied by the user at upload time.",
          "type": "string"
        },
        "mimeType": {
          "$ref": "#/definitions/mimeType"
        },
        "sha256": {
          "$ref": "#/definitions/sha256"
        }
      },
      "required": [
        "id",
        "originalFilename"
      ],
      "additionalProperties": false
    },
    "nullableFileReference": {
      "title": "Optional file reference",
      "description": "A file reference, or null where no such file exists for the record.",
      "anyOf": [
        {
          "$ref": "#/definitions/fileReference"
        },
        {
          "type": "null"
        }
      ]
    },
    "expirationTime": {
      "title": "Chat retention period",
      "description": "After how long without activity a chat is deleted automatically. This vocabulary is open: it grows with the service, so a consumer must accept values not listed here rather than reject the record. The values in use at the time of publication are given as examples.",
      "type": "string",
      "minLength": 1,
      "examples": [
        "never",
        "one_day",
        "thirty_days",
        "one_year"
      ]
    },
    "chunkSize": {
      "title": "Chunk size",
      "description": "Character length of the segments a source document is split into before indexing. Which lengths the service offers is a configuration matter, so only the form is fixed here.",
      "type": "integer",
      "minimum": 1,
      "examples": [
        1000,
        2000,
        4000
      ]
    },
    "chunkOverlap": {
      "title": "Chunk overlap",
      "description": "Character overlap between consecutive segments.",
      "type": "integer",
      "minimum": 0,
      "examples": [
        100,
        200,
        400
      ]
    },
    "itemStatus": {
      "title": "Knowledge base item status",
      "description": "Processing state of a knowledge base entry. Further values express that the processing of an entry did not complete. This vocabulary is open: it grows with the service, so a consumer must accept values not listed here rather than reject the record. The values in use at the time of publication are given as examples.",
      "type": "string",
      "minLength": 1,
      "examples": [
        "draft",
        "pending",
        "embedded"
      ]
    },
    "itemType": {
      "title": "Knowledge base item type",
      "description": "Whether the entry originates from an uploaded document or from a retrieved URL.",
      "type": "string",
      "enum": [
        "document",
        "url"
      ]
    },
    "logReference": {
      "title": "Log reference",
      "description": "Reference to the record a log entry concerns, written as the kind of record and its identifier joined by a colon, for example chat:k7Qb2mXr9TfA. The set of kinds is open and grows with the service, so a consumer must accept kinds not seen before. The kind names an exported record, never an internal class.",
      "type": "string",
      "pattern": "^[a-z_]+:[A-Za-z0-9_-]+$"
    },
    "redactionNotice": {
      "title": "Redaction notice",
      "description": "Records that a single field was removed from the export. A visible gap is preferable to a silent one.",
      "type": "object",
      "properties": {
        "field": {
          "description": "Name of the omitted field.",
          "type": "string"
        },
        "reason": {
          "description": "Why it was omitted. The directory explains each reason in full.",
          "type": "string",
          "enum": [
            "credential",
            "third_party_credential",
            "personal_data_index",
            "derived_data",
            "vendor_content"
          ]
        }
      },
      "required": [
        "field",
        "reason"
      ],
      "additionalProperties": false
    }
  }
}

5.4.7 content-filters.schema.json — Content filters

Content filters that apply within the organisation. Filters the organisation defined itself are exported with their terms. Filters provided with the product are vendor content rather than data generated by using the service, so they are referenced by identifier and name only. Which filters are active for an individual user is recorded in settings.schema.json.

Top-level elements: contentFilters

Show schema definition content-filters.schema.json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Content filters",
  "description": "Content filters that apply within the organisation. Filters the organisation defined itself are exported with their terms. Filters provided with the product are vendor content rather than data generated by using the service, so they are referenced by identifier and name only. Which filters are active for an individual user is recorded in settings.schema.json.",
  "type": "object",
  "properties": {
    "contentFilters": {
      "description": "Content filters defined by the organisation. Filters provided by the vendor are not customer data and are referenced by identifier only.",
      "type": "array",
      "items": {
        "title": "Content filter",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "common.schema.json#/definitions/exportId"
          },
          "name": {
            "type": "string"
          },
          "scope": {
            "description": "Whether the filter was defined by the organisation or provided with the product.",
            "enum": [
              "organisation",
              "vendor"
            ]
          },
          "terms": {
            "description": "The blocked terms or patterns. Present only for filters the organisation defined itself.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "createdAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          },
          "updatedAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          }
        },
        "required": [
          "id",
          "name",
          "scope"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "contentFilters"
  ],
  "additionalProperties": false
}

5.4.8 knowledge-bases.schema.json — Knowledge bases

Knowledge bases of the organisation and the entries they are built from. The portable substance of an entry is its source document and the text extracted from it; both are contained in the archive under files/. The representations computed for retrieval are not exported.

Top-level elements: knowledgeBases, folders

Show schema definition knowledge-bases.schema.json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Knowledge bases",
  "description": "Knowledge bases of the organisation and the entries they are built from. The portable substance of an entry is its source document and the text extracted from it; both are contained in the archive under files/. The representations computed for retrieval are not exported.",
  "type": "object",
  "properties": {
    "knowledgeBases": {
      "type": "array",
      "items": {
        "title": "Knowledge base",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "common.schema.json#/definitions/exportId"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "creatorId": {
            "$ref": "common.schema.json#/definitions/nullableExportId"
          },
          "folderId": {
            "$ref": "common.schema.json#/definitions/nullableExportId"
          },
          "position": {
            "$ref": "common.schema.json#/definitions/treePosition"
          },
          "permissions": {
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/permission"
            }
          },
          "chunkSize": {
            "$ref": "common.schema.json#/definitions/chunkSize"
          },
          "chunkOverlap": {
            "$ref": "common.schema.json#/definitions/chunkOverlap"
          },
          "items": {
            "type": "array",
            "items": {
              "title": "Knowledge base item",
              "type": "object",
              "properties": {
                "id": {
                  "$ref": "common.schema.json#/definitions/exportId"
                },
                "title": {
                  "type": "string"
                },
                "type": {
                  "$ref": "common.schema.json#/definitions/itemType"
                },
                "status": {
                  "$ref": "common.schema.json#/definitions/itemStatus"
                },
                "sourceUrl": {
                  "description": "Address the entry was retrieved from, for entries of type 'url'.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "context": {
                  "description": "Additional context stored alongside the entry.",
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "chunkSize": {
                  "$ref": "common.schema.json#/definitions/chunkSize"
                },
                "chunkOverlap": {
                  "$ref": "common.schema.json#/definitions/chunkOverlap"
                },
                "sourceFile": {
                  "description": "The uploaded or retrieved source document.",
                  "$ref": "common.schema.json#/definitions/nullableFileReference"
                },
                "extractedTextFile": {
                  "description": "Plain text extracted from the source document and actually used for indexing.",
                  "$ref": "common.schema.json#/definitions/nullableFileReference"
                },
                "redactions": {
                  "description": "Fields omitted from this entry, in particular credentials held for authenticated sources.",
                  "type": "array",
                  "items": {
                    "$ref": "common.schema.json#/definitions/redactionNotice"
                  }
                },
                "createdAt": {
                  "$ref": "common.schema.json#/definitions/timestamp"
                },
                "updatedAt": {
                  "$ref": "common.schema.json#/definitions/timestamp"
                }
              },
              "required": [
                "id",
                "title",
                "type",
                "status",
                "createdAt"
              ],
              "additionalProperties": false
            }
          },
          "createdAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          },
          "updatedAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          }
        },
        "required": [
          "id",
          "title",
          "enabled",
          "creatorId",
          "items",
          "createdAt"
        ],
        "additionalProperties": false
      }
    },
    "folders": {
      "type": "array",
      "items": {
        "$ref": "common.schema.json#/definitions/folderNode"
      }
    }
  },
  "required": [
    "knowledgeBases",
    "folders"
  ],
  "additionalProperties": false
}

5.4.9 manifest.schema.json — Export manifest

Index of one export archive. It is the entry point for any consumer: it names the format version, lists every payload file with its checksum and record counts, and states explicitly which data was left out.

Top-level elements: formatVersion, generatedAt, characterEncoding, checksumAlgorithm, scope, timeRange, counts, files, excluded

Show schema definition manifest.schema.json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Export manifest",
  "description": "Index of one export archive. It is the entry point for any consumer: it names the format version, lists every payload file with its checksum and record counts, and states explicitly which data was left out.",
  "type": "object",
  "properties": {
    "formatVersion": {
      "description": "Version of the export format itself. It is independent of any software, release or service version of nele.ai and moves only when these schemas change: additive changes raise the minor version, breaking changes the major one. A release of the service does not raise it.",
      "type": "string",
      "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$"
    },
    "generatedAt": {
      "description": "When the archive was produced.",
      "$ref": "common.schema.json#/definitions/timestamp"
    },
    "characterEncoding": {
      "description": "Character encoding of every text file in the archive.",
      "const": "UTF-8"
    },
    "checksumAlgorithm": {
      "description": "Algorithm behind every checksum in this manifest.",
      "const": "SHA-256"
    },
    "scope": {
      "description": "The account the archive belongs to. An export always covers a whole organisation, which is the contracting party.",
      "type": "object",
      "properties": {
        "type": {
          "const": "account"
        },
        "accountId": {
          "$ref": "common.schema.json#/definitions/exportId"
        },
        "accountName": {
          "type": "string"
        }
      },
      "required": [
        "type",
        "accountId",
        "accountName"
      ],
      "additionalProperties": false
    },
    "timeRange": {
      "description": "Period the export covers. A null 'from' means the archive reaches back to the beginning of the account.",
      "type": "object",
      "properties": {
        "from": {
          "$ref": "common.schema.json#/definitions/nullableTimestamp"
        },
        "to": {
          "$ref": "common.schema.json#/definitions/timestamp"
        }
      },
      "required": [
        "from",
        "to"
      ],
      "additionalProperties": false
    },
    "counts": {
      "description": "Record counts across the whole archive, for a quick completeness check.",
      "type": "object",
      "additionalProperties": {
        "type": "integer",
        "minimum": 0
      }
    },
    "files": {
      "description": "Every payload file of the archive. Large collections may be split into several parts; each part validates against the same schema and is listed here separately.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "description": "Archive-relative path of the file.",
            "type": "string"
          },
          "schema": {
            "description": "File name of the schema this file validates against, resolvable inside the schemas/ directory of the archive.",
            "type": "string",
            "pattern": "\\.schema\\.json$"
          },
          "mediaType": {
            "$ref": "common.schema.json#/definitions/mimeType"
          },
          "sha256": {
            "$ref": "common.schema.json#/definitions/sha256"
          },
          "recordCounts": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "minimum": 0
            }
          }
        },
        "required": [
          "path",
          "schema",
          "mediaType",
          "sha256"
        ],
        "additionalProperties": false
      }
    },
    "excluded": {
      "description": "Data deliberately not contained in the archive. Stating the gaps here is what makes the export self-describing; the online directory carries the full reasoning.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "category": {
            "enum": [
              "credential",
              "third_party_credential",
              "personal_data_index",
              "derived_data",
              "vendor_content",
              "operational_telemetry",
              "legacy_data",
              "provider_configuration",
              "security_configuration"
            ]
          },
          "items": {
            "description": "The omitted fields or stores, named as in the directory.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "category",
          "items",
          "reason"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "formatVersion",
    "generatedAt",
    "characterEncoding",
    "checksumAlgorithm",
    "scope",
    "timeRange",
    "counts",
    "files",
    "excluded"
  ],
  "additionalProperties": false
}

5.4.10 prompts.schema.json — Prompts

Reusable prompts of the organisation. Title, description and template are held per locale. Prompts curated and shipped by the vendor are not part of the export; a copy a user made into their own prompt library is.

Top-level elements: prompts, folders, favorites

Show schema definition prompts.schema.json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Prompts",
  "description": "Reusable prompts of the organisation. Title, description and template are held per locale. Prompts curated and shipped by the vendor are not part of the export; a copy a user made into their own prompt library is.",
  "type": "object",
  "properties": {
    "prompts": {
      "type": "array",
      "items": {
        "title": "Prompt",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "common.schema.json#/definitions/exportId"
          },
          "enabled": {
            "type": "boolean"
          },
          "defaultLocale": {
            "$ref": "common.schema.json#/definitions/locale"
          },
          "title": {
            "$ref": "common.schema.json#/definitions/localeMap"
          },
          "description": {
            "$ref": "common.schema.json#/definitions/localeMap"
          },
          "template": {
            "description": "The prompt text itself, per locale.",
            "$ref": "common.schema.json#/definitions/localeMap"
          },
          "systemPrompt": {
            "$ref": "common.schema.json#/definitions/localizedSystemPrompt"
          },
          "creatorId": {
            "$ref": "common.schema.json#/definitions/nullableExportId"
          },
          "folderId": {
            "$ref": "common.schema.json#/definitions/nullableExportId"
          },
          "position": {
            "$ref": "common.schema.json#/definitions/treePosition"
          },
          "isShared": {
            "type": "boolean"
          },
          "permissions": {
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/permission"
            }
          },
          "modelConfiguration": {
            "$ref": "common.schema.json#/definitions/modelConfiguration"
          },
          "imageModelConfiguration": {
            "$ref": "common.schema.json#/definitions/nullableModelConfiguration"
          },
          "tools": {
            "$ref": "common.schema.json#/definitions/toolConfiguration"
          },
          "options": {
            "$ref": "common.schema.json#/definitions/chatOptions"
          },
          "knowledge": {
            "description": "The knowledge this prompt draws on: either automatic selection or an explicit list of knowledge bases.",
            "$ref": "common.schema.json#/definitions/knowledgeConfiguration"
          },
          "attachments": {
            "description": "Files appended to the first message when the prompt is used. Unlike an assistant's permanent knowledge these are not continuously part of the context.",
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/fileReference"
            }
          },
          "createdAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          },
          "updatedAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          }
        },
        "required": [
          "id",
          "enabled",
          "defaultLocale",
          "title",
          "template",
          "creatorId",
          "isShared",
          "createdAt"
        ],
        "additionalProperties": false
      }
    },
    "folders": {
      "type": "array",
      "items": {
        "$ref": "common.schema.json#/definitions/folderNode"
      }
    },
    "favorites": {
      "description": "Which user marked which prompt as a favourite.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "userId": {
            "$ref": "common.schema.json#/definitions/exportId"
          },
          "promptId": {
            "$ref": "common.schema.json#/definitions/exportId"
          }
        },
        "required": [
          "userId",
          "promptId"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "prompts",
    "folders",
    "favorites"
  ],
  "additionalProperties": false
}

5.4.11 settings.schema.json — Settings

Per-user preferences: default models, privacy filter, personal system prompt and which models and content filters are released for the user. The content filters themselves are defined in content-filters.schema.json and referenced here by identifier.

Top-level elements: userSettings

Show schema definition settings.schema.json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Settings",
  "description": "Per-user preferences: default models, privacy filter, personal system prompt and which models and content filters are released for the user. The content filters themselves are defined in content-filters.schema.json and referenced here by identifier.",
  "type": "object",
  "properties": {
    "userSettings": {
      "type": "array",
      "items": {
        "title": "User settings",
        "type": "object",
        "properties": {
          "userId": {
            "$ref": "common.schema.json#/definitions/exportId"
          },
          "defaultModel": {
            "$ref": "common.schema.json#/definitions/nullableModelConfiguration"
          },
          "defaultImageModel": {
            "$ref": "common.schema.json#/definitions/nullableModelConfiguration"
          },
          "defaultPrivacyFilterActive": {
            "type": "boolean"
          },
          "systemPrompt": {
            "$ref": "common.schema.json#/definitions/systemPrompt"
          },
          "enabledModels": {
            "description": "Models released for this user, named as the model provider names them — the same form modelConfiguration uses, so that a release list stays meaningful outside this service.",
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "enabledContentFilterIds": {
            "type": "array",
            "items": {
              "$ref": "common.schema.json#/definitions/exportId"
            }
          },
          "createdAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          },
          "updatedAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          }
        },
        "required": [
          "userId",
          "defaultPrivacyFilterActive",
          "systemPrompt"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "userSettings"
  ],
  "additionalProperties": false
}

5.4.12 transcriptions.schema.json — Transcriptions

Audio recordings submitted for transcription and their resulting text. The recording and the transcript are contained in the archive under files/ and are referenced here; the name and media type of each are carried by those references.

Top-level elements: transcriptions

Show schema definition transcriptions.schema.json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Transcriptions",
  "description": "Audio recordings submitted for transcription and their resulting text. The recording and the transcript are contained in the archive under files/ and are referenced here; the name and media type of each are carried by those references.",
  "type": "object",
  "properties": {
    "transcriptions": {
      "type": "array",
      "items": {
        "title": "Transcription",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "common.schema.json#/definitions/exportId"
          },
          "userId": {
            "$ref": "common.schema.json#/definitions/nullableExportId"
          },
          "status": {
            "enum": [
              "stored",
              "completed",
              "failed"
            ]
          },
          "failureReason": {
            "description": "Why the transcription failed, absent or null when it did not. This vocabulary is open: it grows with the service, so a consumer must accept values not listed here rather than reject the record.",
            "type": [
              "string",
              "null"
            ],
            "examples": [
              "credit_limit_exceeded",
              "transcription_failed"
            ]
          },
          "credits": {
            "$ref": "common.schema.json#/definitions/decimalString"
          },
          "audioFile": {
            "$ref": "common.schema.json#/definitions/nullableFileReference"
          },
          "transcriptFile": {
            "$ref": "common.schema.json#/definitions/nullableFileReference"
          },
          "createdAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          },
          "updatedAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          }
        },
        "required": [
          "id",
          "userId",
          "status",
          "credits",
          "createdAt"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "transcriptions"
  ],
  "additionalProperties": false
}

5.4.13 usage.schema.json — Usage

Consumption records and credit balances of the organisation. All amounts are carried as exact decimal strings. Records whose user account has since been deleted are retained in anonymised form for billing and appear here with a null userId.

Top-level elements: usages, creditBalances

Show schema definition usage.schema.json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Usage",
  "description": "Consumption records and credit balances of the organisation. All amounts are carried as exact decimal strings. Records whose user account has since been deleted are retained in anonymised form for billing and appear here with a null userId.",
  "type": "object",
  "properties": {
    "usages": {
      "type": "array",
      "items": {
        "title": "Usage record",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "common.schema.json#/definitions/exportId"
          },
          "userId": {
            "$ref": "common.schema.json#/definitions/nullableExportId"
          },
          "type": {
            "description": "What the consumption was charged for. This vocabulary is open: it grows as the service gains capabilities, so a consumer must accept values not listed here rather than reject the record. The values in use at the time of publication are given as examples.",
            "type": "string",
            "minLength": 1,
            "examples": [
              "embedding_generation",
              "image_generation",
              "speech_to_text",
              "text_generation",
              "web_search"
            ]
          },
          "subtype": {
            "description": "Name of the model the consumption is attributed to.",
            "type": "string"
          },
          "credits": {
            "$ref": "common.schema.json#/definitions/decimalString"
          },
          "creditBalanceId": {
            "$ref": "common.schema.json#/definitions/nullableExportId"
          },
          "createdAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          }
        },
        "required": [
          "id",
          "userId",
          "type",
          "subtype",
          "credits",
          "createdAt"
        ],
        "additionalProperties": false
      }
    },
    "creditBalances": {
      "type": "array",
      "items": {
        "title": "Credit balance",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "common.schema.json#/definitions/exportId"
          },
          "validFrom": {
            "$ref": "common.schema.json#/definitions/timestamp"
          },
          "validTo": {
            "$ref": "common.schema.json#/definitions/timestamp"
          },
          "creditsAllowance": {
            "$ref": "common.schema.json#/definitions/decimalString"
          },
          "creditsUsed": {
            "$ref": "common.schema.json#/definitions/decimalString"
          },
          "creditsBalance": {
            "$ref": "common.schema.json#/definitions/decimalString"
          },
          "createdAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          },
          "updatedAt": {
            "$ref": "common.schema.json#/definitions/timestamp"
          }
        },
        "required": [
          "id",
          "validFrom",
          "validTo",
          "creditsAllowance",
          "creditsUsed",
          "creditsBalance"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "usages",
    "creditBalances"
  ],
  "additionalProperties": false
}

5.5 Referenced Open Specifications

Abbreviation Title
RFC 8259 (STD 90)The JavaScript Object Notation (JSON) Data Interchange Format
RFC 3629UTF-8, a transformation format of ISO 10646
RFC 3339Date and Time on the Internet: Timestamps
RFC 2046MIME Part Two: Media Types
RFC 4180Common Format and MIME Type for CSV Files
RFC 5322Internet Message Format
RFC 6234US Secure Hash Algorithms
RFC 9110HTTP Semantics
JSON Schema Draft 07draft-handrews-json-schema-01, draft-handrews-json-schema-validation-01
CommonMark 0.31.2CommonMark Specification (in the service, plus the tables and strikethrough extensions)
OpenAPI 3.1.0OpenAPI Specification
ISO/IEC 21320-1:2015Document Container File — Core
PKWARE APPNOTE 6.3.10.ZIP File Format Specification
ECMA-376 / ISO/IEC 29500Office Open XML File Formats
ISO 32000-1:2008Portable Document Format (PDF 1.7)
EN 16931-1:2017Electronic invoicing — Semantic data model
CIUS XRechnung 3.0XRechnung Standard (KoSIT)
ISO 639-1Language codes
ISO 3166-1 Alpha-2Country codes
ISO 8601-1:2019Date and time information
FIPS PUB 180-4Secure Hash Standard

5.6 Status and Updating of the Directory

Format version 1.0.0. Changes to the schemas follow the versioning scheme described in the preamble; previously published major versions remain available for retrieval for as long as archives referring to them are in circulation.

Insofar as harmonised standards or common specifications for the interoperability of data processing services become binding for the respective type of service, this directory will be updated accordingly.

Last technical update of the directory: 10.09.2026

6. Interfaces and Interoperability

nele.ai provides the following interfaces and export options for transferring data:

Export function: Request via support@nele.ai; provided as a ZIP archive by email with a download link. The layout of the archive and the structure of the files it contains are described in Section 5.

API / open interface: REST API v1, described as an OpenAPI document in accordance with OpenAPI 3.1.0. Authentication is by API keys; their name, owner, expiry and last use are exported, but the key value itself is not (see api-keys.schema.json).

API format or protocol: JSON over HTTPS (RFC 9110, RFC 8259).

The interfaces intended for switching are provided for that purpose at no additional charge.

7. Known Technical Limitations and Constraints

The following technical limitations, in particular, must be taken into account when switching:

Limitation Possible Impact
Provider-specific or nele.ai-specific data structuresThe target system may be unable to adopt individual configurations directly
Internal technical representations are not exportedThe knowledge index must be recreated in the target system. The segmentation can be reproduced from the exported values for chunk size and overlap; the source document and the extracted text are included.
Assistants use nele.ai-specific toolsThe tools may not be available in the target system. The export records which tools an assistant was permitted to use.
Message content follows CommonMark plus the tables and strikethrough extensionsA parser that strictly follows CommonMark reads these two constructs as ordinary text. This results in the loss of their formatting, rather than their content.
The CSV export deliberately deviates from RFC 4180 (language-dependent delimiter, prepended UTF-8 BOM)Processing systems must detect the delimiter and skip the BOM. The deviation is intended to allow direct readability in spreadsheet applications.
No conformity with PDF/A-3 is guaranteed for the invoice PDFThe embedded CII-XML in accordance with XRechnung 3.0 is machine-readable; conformity of the document as a whole with archiving requirements must not be assumed, as the base document originates from the payment service provider.
Value lists are open (tools, permissions, processing states, languages, chunk sizes)Processing systems must accept unknown values and must not reject a record on that ground.
Identifiers are consistent within an archive, but are not stable across two archivesTwo archives of the same account cannot be matched by their identifiers.
Large collections are split across several part files within the archiveProcessing systems must read all part files listed in the manifest under files; each part file validates against the same schema.

During the switching process, GAL Digital informs the customer of any further specifically known risks to the continuity of the functions and services provided in accordance with the contract.

8. Security during Switching

GAL Digital maintains an appropriate level of security throughout the switching and retrieval periods.

These include, in particular:

  • access to exports only for persons authorised for that purpose
  • encrypted transmission of the data
  • protection of the data during the transitional and retrieval periods

9. Retrieval Period and Deletion

After the end of the transitional period, the exportable data remain available for retrieval for a further 30 calendar days.

Upon expiry of this retrieval period, the customer's exportable data and digital assets are deleted, insofar as no statutory retention obligations or other mandatory legal grounds preclude deletion.

Customers should therefore ensure that they have retrieved all required data in full within the retrieval period.

10. Switching Costs

GAL Digital does not charge separate switching or export fees for switching or for exporting the data.

Data traffic caused by the export is likewise not charged separately.

The contractually agreed fee for the continued provision and use of nele.ai during the transitional period remains unaffected.

11. ICT Infrastructure Used

An up-to-date overview of the locations and jurisdictions to which the ICT infrastructure used for nele.ai is subject:

The contractually agreed ICT services or the functions assigned to subcontractors are provided at the locations listed below:

Contractor (AN) / Subcontractor (UAN) Subject Matter of the Service Region of Service Provision Country of Service Provision Jurisdiction
Anthropic (UAN)Models Claude 3 Haiku, Claude 3 Opus, Claude 3.5 SonnetThird countryUSAUSA
AWS Bedrock (UAN)Models Claude 3 Haiku, Claude 3.5 SonnetEU/EEA*EU/EEA*The respective EU/EEA country in which the server is located
Azure (UAN)Models GPT-4o, GPT-4o mini, GPT-4 Turbo, GPT-3.5 Turbo, DALL·E 3, Mistral Large, Mistral SmallEU/EEA*EU/EEA*The respective EU/EEA country in which the server is located
BRAVE (UAN)BRAVE Search APIEU/EEA*EU/EEAThe respective EU/EEA country in which the server is located
Brevo (UAN)Email delivery and automation servicesEU/EEABE, FRBelgium and France
ElevenlabsGenerative Voice AIThird countryUSAUSA
GoogleGeminiEU/EEAEU/EEA*The respective EU/EEA country in which the server is located
Hetzner (UAN)Hosting/storage of customer dataEU/EEAGermanyGermany
Microsoft Azure (UAN)Hosting/storage of customer dataEU/EEAGermanyGermany
Microsoft Office 365Office software: email, Word, Excel, OneDriveEU/EEA*EU/EEA*The respective EU/EEA country in which the server is located
Mistral AI (UAN)Models Mistral Large, Mistral Small (directly via La Plateforme/API)EU/EEA*SE, NO, NLSweden, Norway and the Netherlands
nele.ai (AN)Provision of AI-based servicesGermanyDEGermany
OpenAI (UAN)Models GPT-4o, GPT-4o mini, GPT-4 Turbo, GPT-3.5 Turbo, DALL·E 3Third countryUSAUSA
PipedriveCustomer support / CRMEU/EEAEEEstonia
Scaleway (UAN)Generative APIs (AI text generation on own infrastructure)EU/EEAFRFrance

* The respective server location within the EU or the EEA determines the country and jurisdiction of service provision.

12. Protection against Incompatible Governmental Access from Third Countries

GAL Digital implements technical, organisational and contractual measures to protect non-personal customer data stored in the European Union against governmental access from third countries or a corresponding transfer, insofar as such access or transfer would be incompatible with Union law or the law of a Member State.

These measures include, in particular:

  • restricting access rights in accordance with the principle of necessity
  • encrypting data in transit
  • carefully selecting service providers used and placing them under contractual obligations
  • contractual requirements for handling requests for disclosure by public authorities
  • insofar as legally and factually possible, reviewing the lawfulness of requests for disclosure by public authorities
  • insofar as legally and factually possible, challenging requests for disclosure that conflict with requirements under Union law
  • informing affected customers of such access or requests for disclosure, insofar as legally permissible

Further information on the technical and organisational measures and the service providers used is available at /de/avv and /subcontractors.

13. Assistance and Contact

GAL Digital provides reasonable assistance to customers in planning and carrying out a switch and in developing an exit strategy.

Please address enquiries about switching and data portability to:

GAL Digital GmbH
Email: support@nele.ai

Please specify the customer account concerned in your enquiry and describe the desired switching or export scenario as precisely as possible.

nele.ai Logo -Datenschutzkonforme KI im Unternehmen einsetzen
  • Made in Germany
    Located in Obbornhofen
  • DSVGO-compliant
    as well as ISO 27001 certified
    German server location
  • Made for companies
    One license for all users
Certificates
Sichere Künstliche Intelligenz für Unternehmen: Grafik mit Auszeichnungen für nele.ai: KI Innovation-Award 2023, TOP-Innovator 2026, Best of technology 2024.
navigation
  • Start
  • Functions
  • Security
  • Pricing
  • AI models
Company
  • Changelog
  • Seminar
  • AI news & updates
  • Contact
  • Press releases
Legal
  • Imprint
  • Data protection
  • Terms of use
  • Accessibility
Language selection

Deutsch

English

social media


Copyright 2024 © nele.ai by GAL Digital GmbH
Sales & Support Chat
Do you need assistance?
Speak nowChat now

We need your consent

Before we start the conversation, we need your consent. Please then allow access to your microphone — of course, access is only available during the call

By clicking Agree and interacting with this AI assistant every time you interact with this AI assistant, you agree that your communications will be recorded, stored, and shared with external service providers — in accordance with the privacy policy.
‍
If you do not want your conversations to be recorded, please refrain from using this service.

AgreeReject
Sales & Support Chat
Disconnected
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.