Wechsel und Datenübertragbarkeit bei nele.ai
Stand: 10.09.2026
nele.ai unterstützt den Wechsel zu einem anderen Anbieter eines vergleichbaren Datenverarbeitungsdienstes oder zu einer eigenen IT-Infrastruktur sowie, soweit technisch möglich, die parallele Nutzung mehrerer Anbieter.
Auf dieser Seite finden Sie Informationen zu den Wechsel- und Übertragungsmöglichkeiten, zu den verfügbaren Import- und Exportformaten, zu technischen Beschränkungen sowie zu den Datenstrukturen und Interoperabilitätsstandards von nele.ai.
Inhalt
- 1. Wechsel von nele.ai zu einem anderen Anbieter
- 2. Wechsel zu nele.ai
- 3. Exportierbare Daten und digitale Vermögenswerte
- 4. Nicht exportierbare Daten und Bestandteile
- 5. Online-Verzeichnis der Datenstrukturen und Datenformate
- 6. Schnittstellen und Interoperabilität
- 7. Bekannte technische Beschränkungen und Grenzen
- 8. Sicherheit während des Wechsels
- 9. Abrufzeitraum und Löschung
- 10. Kosten des Wechsels
- 11. Eingesetzte IKT-Infrastruktur
- 12. Schutz vor unvereinbarem staatlichem Zugriff aus Drittstaaten
- 13. Unterstützung und Kontakt
1. Wechsel von nele.ai zu einem anderen Anbieter
Der Wechsel von nele.ai wird nach Ziffer 15 der Nutzungsbedingungen durch eine Kündigung beziehungsweise Wechselanfrage eingeleitet.
Eine Wechselanfrage kann über support@nele.ai gestellt werden.
Bitte geben Sie dabei möglichst folgende Informationen an:
- das betroffene Kundenkonto
- ob der Wechsel zu einem anderen Anbieter oder zu einer eigenen IT-Infrastruktur erfolgen soll
- bei einem Anbieterwechsel die erforderlichen Angaben zum neuen Anbieter
- welche Daten und Inhalte übertragen werden sollen
- den gewünschten Zeitpunkt des Wechsels
Ablauf des Wechsels
Nach Ablauf der maßgeblichen Ankündigungsfrist beginnt ein Übergangszeitraum von grundsätzlich höchstens 30 Kalendertagen. Während dieses Zeitraums steht nele.ai im bisherigen vertraglichen Umfang zur Verfügung und die Daten können exportiert und übertragen werden.
Der Kunde kann den Übergangszeitraum einmalig um einen von ihm für angemessen gehaltenen Zeitraum verlängern.
Ist ein Wechsel innerhalb von 30 Kalendertagen aus technischen Gründen nicht möglich, informiert GAL Digital den Kunden innerhalb von 14 Arbeitstagen nach Eingang der Wechselanfrage über die Gründe und die erforderliche alternative Übergangsfrist. Diese beträgt höchstens sieben Monate.
GAL Digital unterstützt den Kunden und von ihm autorisierte Dritte in angemessenem Umfang bei der Durchführung des Wechsels und bei der Umsetzung seiner Exit-Strategie.
Voraussichtliche technische Dauer eines üblichen Exports: 72 Stunden an Werktagen.
Die tatsächliche Dauer kann insbesondere vom Umfang der Daten und der gewählten Exportmethode abhängen.
2. Wechsel zu nele.ai
Für einen Wechsel von einem anderen Datenverarbeitungsdienst zu nele.ai stehen folgende Importmöglichkeiten zur Verfügung:
| Importmethode | Unterstützte Inhalte | Formate | Technische Hinweise |
|---|---|---|---|
| Datei-Upload | Chats, Wissensdatenbanken, Nutzer, Gruppen, Assistenten | Dateien (csv, doc, docx, html, json, jsonl, md, odp, ods, odt, pdf, ppt, pptx, rtf, txt, xls, xlsx, xml und ggf. weitere) | Einzelverarbeitung via Oberfläche |
| Unterstützter Import | Chats, Wissensdatenbanken | Originalformate (csv, doc, docx, html, json, jsonl, md, odp, ods, odt, pdf, ppt, pptx, rtf, txt, xls, xlsx, xml und ggf. weitere) und JSON für Konfigurationen und Chats. | Anfrage über support@nele.ai |
3. Exportierbare Daten und digitale Vermögenswerte
Grundsätzlich können die vom Kunden eingebrachten und im Rahmen der Nutzung für den Kunden erzeugten Daten und Inhalte exportiert werden.
Hierzu gehören insbesondere:
| Datenkategorie | Exportierbar | Exportformat | Exportmethode |
|---|---|---|---|
| Vom Kunden hochgeladene Inhalte und Dateien | Ja | Originalformat | E-Mail mit Downloadlink |
| Chats einschließlich Nutzereingaben | Ja | Originalformate und JSON | E-Mail mit Downloadlink |
| Von der KI erzeugte Antworten | Ja | Originalformate und JSON | E-Mail mit Downloadlink |
| Konfigurationen von Assistenten | Ja | Originalformate und JSON | E-Mail mit Downloadlink |
| Inhalte von Wissensdatenbanken | Ja | Originalformate und JSON | E-Mail mit Downloadlink |
| Permanentes Wissen | Ja | Originalformate und JSON | E-Mail mit Downloadlink |
| Zugehörige Metadaten | Ja | JSON | E-Mail mit Downloadlink |
Welche Strukturen und Formate diese Ausleitungen im Einzelnen haben, beschreibt Abschnitt 5.
4. Nicht exportierbare Daten und Bestandteile
Nicht Bestandteil des Exports sind Daten und technische Bestandteile, die nicht zu den exportierbaren Daten oder digitalen Vermögenswerten des Kunden gehören.
| Kategorie | Grund |
|---|---|
| Software und technische Bestandteile von nele.ai | Eigene technische Infrastruktur und Software von GAL Digital |
| KI-Modelle | Modelle der jeweiligen Modellanbieter beziehungsweise von GAL Digital |
| Interne technische Repräsentationen | Interne Funktionsweise beziehungsweise geschützte technische Strukturen |
| Daten Dritter, an denen der Kunde keine erforderlichen Rechte besitzt | Rechte Dritter |
| Passwörter, Zwei-Faktor-Codes, API-Schlüsselwerte | Ausschließlich als Einwegfunktion gespeichert. Es existiert kein portabler Klartext; eine Ausleitung des Hashwerts brächte keinen Nutzen, sondern wäre allein ein Angriffsziel. Von API-Schlüsseln werden Name, Inhaber, Ablauf und letzte Verwendung ausgeleitet, sodass der Bestand ausgestellter Schlüssel nachvollziehbar bleibt. |
| Zugangsdaten zu Fremdsystemen in Wissensdatenbank-Einträgen | Verschlüsselt hinterlegte Zugangsdaten des Kunden zu fremden Quellsystemen. Entschlüsselt in einem herunterladbaren Archiv wären sie ein Abflusskanal ohne Portabilitätsgewinn — der Kunde verfügt am Quellsystem ohnehin über sie. Ausgeleitet werden Typ, Quelle, Kontext und Status, sodass die Verbindung neu eingerichtet werden kann. |
| Zuordnungstabelle des Privatsphärefilters (Pseudonym → Originalwert) | Redundant und unverhältnismäßig risikobehaftet. Sowohl der Originaltext als auch die maskierte Fassung werden ausgeleitet; die Platzhalter tragen die Art der erkannten Angabe in sich. Die Zuordnung ist daraus rekonstruierbar. Die Tabelle selbst fügt dem Export keine Information hinzu, wohl aber einen gebündelten, maschinenlesbaren Index sämtlicher erkannter Personenbezüge. Der Verzicht kostet nichts und entfernt ein erhebliches Risiko. |
| Einbettungsvektoren der Wissensdatenbanken | Abgeleitete Daten, die erst durch zusätzliche Verarbeitung entstehen (vgl. Erwägungsgrund 15 der Datenverordnung), und ausschließlich mit demselben Einbettungsmodell verwertbar. Das portable Gut sind Quelldokument und extrahierter Text; beide sind enthalten. Die Segmentierung ist aus den ausgeleiteten Werten für Segmentgröße und Überlappung reproduzierbar. |
| Nutzungsaggregate der Auswertung | Tages- und Nutzerauswertungen entstehen durch Verdichtung der ohnehin enthaltenen Nutzungssätze. Sie tragen keine eigene Information und lassen sich aus den ausgeleiteten Sätzen jederzeit neu berechnen. |
| Segmenttexte und interne Segmentierungsdaten | Wörtliche Ausschnitte der ohnehin enthaltenen Quelldokumente. Eine zusätzliche Ausleitung würde das Archiv ohne Informationsgewinn erheblich vergrößern. |
| Herstellerseitig kuratierte Prompt-Vorlagen | Mit dem Produkt ausgelieferte Inhalte, keine durch die Nutzung des Dienstes entstandenen Daten. Übernimmt eine Nutzerin eine Vorlage in die eigene Prompt-Sammlung, ist diese Kopie enthalten. |
| Betriebstelemetrie, Fehler- und Auftragswarteschlangen, Sitzungen, Einmal-Anmeldetoken | Betriebs- und Diagnosedaten sowie flüchtiger Infrastrukturzustand. Sitzungen und Einmaltoken sind aktive Anmeldedaten. |
| Vom Anbieter festgelegte Merkmale der Organisation | Gebuchter Funktionsumfang, Abrechnungskennung, monatliches Kreditlimit der Organisation sowie die Kennzeichen zur Nutzungsüberwachung und zur automatischen Zahlungsfreigabe. Diese Werte legt der Anbieter im Rahmen des Vertragsverhältnisses fest; sie sind keine durch die Nutzung entstandenen Daten der Organisation. Die von der Organisation selbst vergebenen Limits ihrer Mitglieder und Gruppen sind enthalten. |
| Vom Anbieter oder über SSO gesetzte Merkmale am Benutzerkonto | Das Kennzeichen, ob ein Konto sein Passwort selbst ändern darf, sowie die vom Identitätsanbieter bei der Anmeldung übermittelten Gruppenbezeichnungen. Beides wird nicht von der Organisation gepflegt, sondern ergibt sich aus der Bereitstellung des Dienstes bzw. aus der angebundenen Anmeldung. |
| Konfiguration der Anmeldung über einen Identitätsanbieter (SSO) | Sicherheitstechnische Konfigurationsdaten. Sie beschreiben, wie der Zugang zum Dienst abgesichert ist, und sind keine durch die Nutzung des Dienstes entstandenen Inhalte. Dazu zählen die Verbindungsdaten und Zertifikate des Identitätsanbieters, die Zuordnung übermittelter Gruppen sowie der Schlüssel des Dienstanbieters, der ohnehin der Anwendung und nicht der Organisation zugeordnet ist. Die im Dienst geführten Gruppen selbst werden ausgeleitet. |
| Datenbestände und Kennungen des Zahlungsdienstleisters | Rechnungs- und Abonnementdaten werden beim Zahlungsdienstleister geführt. Weder ein Teilabbild dieser Bestände noch die dort verwendeten Kennungen für Kunde, Abonnement oder Rechnung werden ausgeleitet: es sind interne Verweise auf ein fremdes System, die außerhalb davon nicht bedeutungstragend sind. Ausgeleitet werden die Rechnungsdokumente selbst sowie die im Dienst geführten Kreditkontingente. |
| Gelöschte und abgelaufene Daten | Durch Aufbewahrungsregeln entfernte Chats und Bilder sind endgültig gelöscht und können nicht ausgeleitet werden. |
| Altdaten aus Version 1 des Dienstes | Werden von diesem Verzeichnis nicht beschrieben. Gegenstand des Verzeichnisses ist ausschließlich das aktuelle Datenmodell; für Bestände aus Version 1 wird kein Schema veröffentlicht. |
5. Online-Verzeichnis der Datenstrukturen und Datenformate
Dieses Verzeichnis wird gemäß Artikel 30 Absatz 1 der Verordnung (EU) 2023/2854 (Datenverordnung, „Data Act") bereitgestellt.
Das folgende Verzeichnis beschreibt die Strukturen und Formate, in denen die exportierbaren Daten von nele.ai zur Verfügung gestellt werden.
5.1 Grundlagen und Aufbau des Verzeichnisses
Bezugseinheit. Ein Export bezieht sich stets auf eine Organisation (das Konto des Vertragspartners), nicht auf einzelne Nutzerinnen und Nutzer. Viele Inhalte — Assistenten, Prompts, Wissensdatenbanken, Dateien — sind der Organisation zugeordnet und bestehen unabhängig davon fort, ob das erstellende Benutzerkonto noch existiert. Ein rein personenbezogener Ausschnitt würde daher Bestandteile des Kontos stillschweigend auslassen.
Aufbau. Die Ausleitung erfolgt als ZIP-Archiv. Es enthält die strukturierten Daten als JSON-Dateien unterhalb von data/, die zugehörigen Dateien im Originalformat unterhalb von files/ — dort unter ihrer jeweiligen Kennung — sowie unter schemas/ eine wortgleiche Kopie der Schemadefinitionen. Dadurch lässt sich ein Archiv vollständig offline prüfen, ohne Zugriff auf diese Seite.
Schemadefinitionen. Die verbindlichen Strukturbeschreibungen liegen als JSON Schema (Draft 07) vor und sind unter 5.4 vollständig und wortgleich abgedruckt. In den Tabellen ist jede Schemadatei namentlich genannt und als Sprungmarke innerhalb dieser Seite hinterlegt. Alle Verweise zwischen den Dateien sind relativ; die Schemata sind ohne Netzzugriff auflösbar.
Kennungen. Interne Bezeichner werden nicht ausgeleitet. Jeder Datensatz trägt eine eigene, nicht deutbare Kennung, aus der sich weder der interne Schlüssel noch eine Reihenfolge, ein Zählerstand oder ein Erstellungszeitpunkt ableiten lässt. Innerhalb eines Archivs ist diese Kennung konsistent, sodass Freigaben, Ordnerstrukturen und Dateibezüge auflösbar bleiben. Dateien werden unterhalb von files/ allein über ihre Kennung angesprochen; ein bestimmter Pfadaufbau innerhalb dieses Verzeichnisses wird nicht zugesichert und darf nicht aus den Angaben zusammengesetzt werden. Welche Datei zu welchem Datensatz gehört, ergibt sich allein aus der referenzierenden Stelle; dort wird die Datei auch beschrieben.
Formatversion. Die Version des Exportformats (manifest.formatVersion) ist unabhängig von jeder Software-, Release- oder Dienstversion von nele.ai. Sie ändert sich ausschließlich durch Änderungen an den hier veröffentlichten Schemata: ergänzende Änderungen erhöhen die Nebenversion, strukturbrechende die Hauptversion. Eine neue Version der Anwendung hebt sie nicht an.
Offene Wertelisten. Wo dieses Verzeichnis Werte aufzählt — Werkzeuge, Berechtigungen, Verarbeitungszustände, Sprachen, Segmentgrößen —, sind das Beispiele des Veröffentlichungsstands und keine abschließende Aufzählung. Diese Vokabulare wachsen mit dem Funktionsumfang des Dienstes. Verarbeitende Systeme müssen unbekannte Werte annehmen und dürfen einen Datensatz nicht deshalb zurückweisen. Abschließend sind nur die Angaben, die das Format selbst beschreiben, etwa Zeichencodierung, Prüfsummenverfahren und die Unterscheidung der Modellauswahl.
Vollständigkeit. Jedes Archiv weist im Manifest unter excluded selbst aus, welche Daten es nicht enthält. Abschnitt 4 begründet jede dieser Auslassungen.
5.2 Container und Querschnittsformate
| Datenkategorie | Format | Struktur / Schema | Zeichencodierung / Version | Relevante Norm oder offene Spezifikation |
|---|---|---|---|---|
| Exportarchiv (Container) | ZIP | manifest.json als Index; Verzeichnisse data/, files/, schemas/ | ZIP 6.3.10, Deflate/Store, unverschlüsselt | PKWARE APPNOTE 6.3.10; Profil nach ISO/IEC 21320-1:2015 |
| Exportmanifest | JSON | manifest.schema.json | UTF-8 / Formatversion 1.0.0 | RFC 8259 (STD 90) |
| Schemadefinitionen | JSON Schema | data-act-schemas/*.schema.json | UTF-8 / Draft 07 | JSON Schema Draft 07 (draft-handrews-json-schema-01 und -validation-01) |
| Zeichencodierung (alle Textdateien) | — | durchgehend UTF-8, ohne BOM | UTF-8 | RFC 3629; ISO/IEC 10646 |
| Zeitangaben | Zeichenkette | common.schema.json → timestamp; UTC mit Suffix Z | RFC-3339-Profil | RFC 3339 (Profil von ISO 8601-1:2019) |
| Prüfsummen | Zeichenkette (hexadezimal) | manifest.files[].sha256 | SHA-256 | FIPS PUB 180-4; RFC 6234 |
| Kennungen | Zeichenkette | common.schema.json → exportId | undurchsichtig, archivintern konsistent | keine externe Norm; bewusst herstellerspezifisch und nicht deutbar (siehe 5.1) |
| Beträge und Kreditwerte | Zeichenkette mit Dezimalpunkt | common.schema.json → decimalString | bis 64 Stellen, davon 16 Nachkommastellen | RFC 8259 Abschnitt 6 — als Zeichenkette geführt, um Genauigkeitsverlust zu vermeiden |
| Sprachkennungen | Zeichenkette | common.schema.json → locale | zweibuchstabig; der Satz angebotener Sprachen ist nicht festgeschrieben | ISO 639-1 |
| Länderkennungen | Zeichenkette | common.schema.json → countryCode | ALL sowie Alpha-2-Codes | ISO 3166-1 Alpha-2 |
| Medientypen | Zeichenkette | common.schema.json → mimeType | — | RFC 2046; IANA Media Types Registry |
| E-Mail-Adressen | Zeichenkette | account.schema.json | — | RFC 5322 |
5.3 Datenkategorien
| Datenkategorie | Format | Struktur / Schema | Zeichencodierung / Version | Relevante Norm oder offene Spezifikation |
|---|---|---|---|---|
| Chats | JSON | data/chats.json → chats.schema.json | UTF-8 / 1.0 | RFC 8259; JSON Schema Draft 07 |
| Nachrichteninhalte und KI-Antworten | Markdown in JSON-Zeichenkette | common.schema.json → message, Feld content | UTF-8 / CommonMark 0.31.2 | CommonMark 0.31.2, zuzüglich der Erweiterungen Tabellen und Durchstreichung; RFC 8259 |
| Denkschritte der KI (Reasoning) | Text in JSON-Zeichenkette | common.schema.json → message, Feld reasoning | UTF-8 / 1.0 | RFC 8259 |
| Werkzeugaufrufe der KI | JSON | common.schema.json → toolCalls | UTF-8 / 1.0 | RFC 8259 |
| Modellkonfiguration | JSON | common.schema.json → modelConfiguration | UTF-8 / 1.0 | RFC 8259 |
| Systemprompt- und Antwortkonfiguration | JSON | common.schema.json → systemPrompt | UTF-8 / 1.0 | RFC 8259 |
| Ordner- und Ablagestruktur | JSON | common.schema.json → folderNode, je Domänendatei unter folders | UTF-8 / 1.0 | RFC 8259 |
| Freigaben und Berechtigungen | JSON | common.schema.json → permission | UTF-8 / 1.0 | RFC 8259 |
| Assistenten | JSON | data/assistants.json → assistants.schema.json | UTF-8 / 1.0 | RFC 8259 |
| Assistenten-Chats und -Nachrichten | JSON | assistants.schema.json, Abschnitt assistantChats | UTF-8 / 1.0 | RFC 8259 |
| Permanentes Wissen (Assistentendateien) | Originalformat | Dateien unter files/, referenziert in assistants.schema.json unter permanentKnowledge | Originalkodierung; Index UTF-8 | RFC 2046; Formatnormen der jeweiligen Einzeldatei |
| Prompts (mehrsprachig) | JSON | data/prompts.json → prompts.schema.json; je Sprache eine Fassung, adressiert über die Sprachkennung | UTF-8 / 1.0 | RFC 8259; ISO 639-1 |
| Prompt-Anhänge | Originalformat | Dateien unter files/, referenziert in prompts.schema.json unter attachments | Originalkodierung | RFC 2046 |
| Wissensdatenbanken (Metadaten) | JSON | data/knowledge-bases.json → knowledge-bases.schema.json | UTF-8 / 1.0 | RFC 8259 |
| Wissensdatenbank-Quelldokumente | Originalformat | Dateien unter files/, referenziert in knowledge-bases.schema.json unter sourceFile | Originalkodierung | Formatnormen der Einzeldatei, z. B. ISO 32000-1 (PDF), ISO/IEC 29500 (DOCX) |
| Extrahierter Text aus Quelldokumenten | Nur-Text | Dateien unter files/, referenziert in knowledge-bases.schema.json unter extractedTextFile | UTF-8 / 1.0 | RFC 2046 (text/plain); RFC 3629 |
| Chat- und Nachrichtenanhänge | Originalformat | Dateien unter files/, referenziert in common.schema.json → message unter attachments | Originalkodierung | RFC 2046 |
| Audioaufnahmen | Originalformat | Dateien unter files/, referenziert in transcriptions.schema.json unter audioFile | Originalkodierung | RFC 2046 |
| Transkriptionen | Nur-Text + JSON | data/transcriptions.json → transcriptions.schema.json; Text unter files/ | UTF-8 / 1.0 | RFC 8259; RFC 3629 |
| Nutzerkonten | JSON | data/account.json → account.schema.json, Abschnitt users | UTF-8 / 1.0 | RFC 8259; RFC 5322 |
| Organisation und Gruppen | JSON | account.schema.json, Abschnitte account und groups | UTF-8 / 1.0 | RFC 8259 |
| Einladungen | JSON | account.schema.json, Abschnitt invitations | UTF-8 / 1.0 | RFC 8259 |
| Einstellungen | JSON | data/settings.json → settings.schema.json | UTF-8 / 1.0 | RFC 8259 |
| Inhaltsfilter | JSON | data/content-filters.json → content-filters.schema.json | UTF-8 / 1.0 | RFC 8259 |
| Nutzungsdaten und Kreditverbrauch | JSON | data/usage.json → usage.schema.json | UTF-8 / 1.0 | RFC 8259 |
| API-Schlüssel (nur Metadaten) | JSON | data/api-keys.json → api-keys.schema.json | UTF-8 / 1.0 | RFC 8259 |
| Aktivitätsprotokoll | JSON | data/activity-log.json → activity-log.schema.json | UTF-8 / 1.0 | RFC 8259 |
| Rechnungen | PDF mit eingebettetem XML | Rechnungsdokument des Zahlungsdienstleisters mit eingebettetem CII-XML | PDF 1.x; CII UN/CEFACT D16B | ISO 32000-1:2008; EN 16931-1:2017; CIUS XRechnung 3.0 (KoSIT); Einbettung nach ZUGFeRD 2.x / Factur-X |
5.4 Schemadefinitionen
Die folgenden 13 Dateien sind die verbindlichen Strukturbeschreibungen des Exportformats. Sie sind hier wortgleich zu den Dateien abgedruckt, die jedes Archiv unter schemas/ mitführt.
Jede Datei, jede Definition und jedes Element der obersten Ebene trägt eine eigene Sprungmarke der Form #schema-<datei> beziehungsweise #<datei>-definitions-<name>. Die Marken liegen innerhalb dieser Seite; jede Schemanennung in den Tabellen oben führt unmittelbar auf die zugehörige Definition, und jeder $ref innerhalb der Schemata verweist auf sein Ziel in dieser Seite.
| Schemadatei | Gegenstand | Umfang | Sprungmarke |
|---|---|---|---|
account.schema.json | Account | 4 Elemente | #schema-account |
activity-log.schema.json | Activity log | 1 Elemente | #schema-activity-log |
api-keys.schema.json | API keys | 1 Elemente | #schema-api-keys |
assistants.schema.json | Assistants | 3 Elemente | #schema-assistants |
chats.schema.json | Chats | 2 Elemente | #schema-chats |
common.schema.json | Common definitions | 37 Definitionen | #schema-common |
content-filters.schema.json | Content filters | 1 Elemente | #schema-content-filters |
knowledge-bases.schema.json | Knowledge bases | 2 Elemente | #schema-knowledge-bases |
manifest.schema.json | Export manifest | 9 Elemente | #schema-manifest |
prompts.schema.json | Prompts | 3 Elemente | #schema-prompts |
settings.schema.json | Settings | 1 Elemente | #schema-settings |
transcriptions.schema.json | Transcriptions | 1 Elemente | #schema-transcriptions |
usage.schema.json | Usage | 2 Elemente | #schema-usage |
Die Schemadefinitionen sind jeweils eingeklappt. Ein Sprung auf eine Definition klappt den zugehörigen Abschnitt auf.
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.
Elemente der obersten Ebene: account, users, groups, invitations
Schemadefinition account.schema.json anzeigen
{
"$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.
Elemente der obersten Ebene: activities
Schemadefinition activity-log.schema.json anzeigen
{
"$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.
Elemente der obersten Ebene: apiKeys
Schemadefinition api-keys.schema.json anzeigen
{
"$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.
Elemente der obersten Ebene: assistants, assistantChats, folders
Schemadefinition assistants.schema.json anzeigen
{
"$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.
Elemente der obersten Ebene: chats, folders
Schemadefinition chats.schema.json anzeigen
{
"$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"}.
Definitionen: 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
Schemadefinition common.schema.json anzeigen
{
"$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.
Elemente der obersten Ebene: contentFilters
Schemadefinition content-filters.schema.json anzeigen
{
"$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.
Elemente der obersten Ebene: knowledgeBases, folders
Schemadefinition knowledge-bases.schema.json anzeigen
{
"$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.
Elemente der obersten Ebene: formatVersion, generatedAt, characterEncoding, checksumAlgorithm, scope, timeRange, counts, files, excluded
Schemadefinition manifest.schema.json anzeigen
{
"$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.
Elemente der obersten Ebene: prompts, folders, favorites
Schemadefinition prompts.schema.json anzeigen
{
"$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.
Elemente der obersten Ebene: userSettings
Schemadefinition settings.schema.json anzeigen
{
"$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.
Elemente der obersten Ebene: transcriptions
Schemadefinition transcriptions.schema.json anzeigen
{
"$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.
Elemente der obersten Ebene: usages, creditBalances
Schemadefinition usage.schema.json anzeigen
{
"$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 Referenzierte offene Spezifikationen
| Kürzel | Titel |
|---|---|
| RFC 8259 (STD 90) | The JavaScript Object Notation (JSON) Data Interchange Format |
| RFC 3629 | UTF-8, a transformation format of ISO 10646 |
| RFC 3339 | Date and Time on the Internet: Timestamps |
| RFC 2046 | MIME Part Two: Media Types |
| RFC 4180 | Common Format and MIME Type for CSV Files |
| RFC 5322 | Internet Message Format |
| RFC 6234 | US Secure Hash Algorithms |
| RFC 9110 | HTTP Semantics |
| JSON Schema Draft 07 | draft-handrews-json-schema-01, draft-handrews-json-schema-validation-01 |
| CommonMark 0.31.2 | CommonMark Specification (im Dienst zuzüglich der Erweiterungen Tabellen und Durchstreichung) |
| OpenAPI 3.1.0 | OpenAPI Specification |
| ISO/IEC 21320-1:2015 | Document Container File — Core |
| PKWARE APPNOTE 6.3.10 | .ZIP File Format Specification |
| ECMA-376 / ISO/IEC 29500 | Office Open XML File Formats |
| ISO 32000-1:2008 | Portable Document Format (PDF 1.7) |
| EN 16931-1:2017 | Elektronische Rechnungsstellung — Semantisches Datenmodell |
| CIUS XRechnung 3.0 | Standard XRechnung (KoSIT) |
| ISO 639-1 | Sprachkennungen |
| ISO 3166-1 Alpha-2 | Länderkennungen |
| ISO 8601-1:2019 | Datums- und Zeitangaben |
| FIPS PUB 180-4 | Secure Hash Standard |
5.6 Stand und Aktualisierung des Verzeichnisses
Formatversion 1.0.0. Änderungen an den Schemata folgen dem in der Präambel beschriebenen Versionsschema; bereits veröffentlichte Hauptversionen bleiben abrufbar, solange Archive im Umlauf sind, die sich auf sie berufen.
Soweit für die jeweilige Dienstart harmonisierte Normen oder gemeinsame Spezifikationen für die Interoperabilität von Datenverarbeitungsdiensten verbindlich werden, wird dieses Verzeichnis entsprechend aktualisiert.
Letzte technische Aktualisierung des Verzeichnisses: 10.09.2026
6. Schnittstellen und Interoperabilität
Für die Übertragung von Daten stellt nele.ai folgende Schnittstellen und Exportmöglichkeiten zur Verfügung:
Exportfunktion: Anforderung über support@nele.ai; Bereitstellung als ZIP-Archiv per E-Mail mit Downloadlink. Der Aufbau des Archivs und die Struktur der enthaltenen Dateien sind in Abschnitt 5 beschrieben.
API / offene Schnittstelle: REST-API v1, beschrieben als OpenAPI-Dokument nach OpenAPI 3.1.0. Die Authentifizierung erfolgt über API-Schlüssel; von diesen werden Name, Inhaber, Ablauf und letzte Verwendung ausgeleitet, der Schlüsselwert selbst nicht (siehe api-keys.schema.json).
API-Format beziehungsweise Protokoll: JSON über HTTPS (RFC 9110, RFC 8259).
Die für einen Wechsel vorgesehenen Schnittstellen werden für diesen Zweck ohne zusätzliches Entgelt bereitgestellt.
7. Bekannte technische Beschränkungen und Grenzen
Bei einem Wechsel sind insbesondere folgende technische Beschränkungen zu beachten:
| Beschränkung | Mögliche Auswirkung |
|---|---|
| Anbieter- oder nele.ai-spezifische Datenstrukturen | Zielsystem kann einzelne Konfigurationen möglicherweise nicht unmittelbar übernehmen |
| Interne technische Repräsentationen werden nicht exportiert | Der Wissensindex muss im Zielsystem neu erstellt werden. Die Segmentierung ist aus den ausgeleiteten Werten für Segmentgröße und Überlappung reproduzierbar; Quelldokument und extrahierter Text sind enthalten. |
| Assistenten verwenden nele.ai-spezifische Werkzeuge | Die Werkzeuge stehen im Zielsystem möglicherweise nicht zur Verfügung. Welche Werkzeuge ein Assistent verwenden durfte, ist im Export vermerkt. |
| Nachrichteninhalte folgen CommonMark zuzüglich der Erweiterungen Tabellen und Durchstreichung | Ein streng nach CommonMark arbeitender Parser liest diese beiden Konstrukte als gewöhnlichen Text. Verloren geht dadurch deren Auszeichnung, nicht deren Inhalt. |
| Der CSV-Export weicht bewusst von RFC 4180 ab (sprachabhängiges Trennzeichen, vorangestelltes UTF-8-BOM) | Verarbeitende Systeme müssen das Trennzeichen erkennen und das BOM überlesen. Die Abweichung dient der direkten Lesbarkeit in Tabellenkalkulationen. |
| Für das Rechnungs-PDF wird keine Konformität zu PDF/A-3 zugesichert | Das eingebettete CII-XML nach XRechnung 3.0 ist maschinenlesbar; eine Archivierungskonformität des Gesamtdokuments darf nicht vorausgesetzt werden, da das Basisdokument vom Zahlungsdienstleister stammt. |
| Wertelisten sind offen (Werkzeuge, Berechtigungen, Verarbeitungszustände, Sprachen, Segmentgrößen) | Verarbeitende Systeme müssen unbekannte Werte annehmen und dürfen einen Datensatz nicht deshalb zurückweisen. |
| Kennungen sind innerhalb eines Archivs konsistent, über zwei Archive hinweg jedoch nicht stabil | Zwei Archive desselben Kontos lassen sich nicht über die Kennungen abgleichen. |
| Große Sammlungen werden im Archiv auf mehrere Teildateien verteilt | Verarbeitende Systeme müssen alle im Manifest unter files genannten Teildateien einlesen; jede Teildatei validiert gegen dasselbe Schema. |
GAL Digital informiert den Kunden während des Wechselprozesses über weitere konkret bekannte Risiken für die Kontinuität der vertragsgemäßen Funktionen und Dienste.
8. Sicherheit während des Wechsels
GAL Digital hält während des gesamten Wechsel- und Abrufzeitraums ein angemessenes Sicherheitsniveau aufrecht.
Hierzu gehören insbesondere:
- Zugriff auf Exporte nur für hierzu berechtigte Personen
- verschlüsselte Übertragung der Daten
- Schutz der Daten während des Übergangs- und Abrufzeitraums
9. Abrufzeitraum und Löschung
Nach Ende des Übergangszeitraums stehen die exportierbaren Daten noch für 30 Kalendertage zum Abruf zur Verfügung.
Nach Ablauf dieses Abrufzeitraums werden die exportierbaren Daten und digitalen Vermögenswerte des Kunden gelöscht, soweit keine gesetzlichen Aufbewahrungspflichten oder sonstigen zwingenden rechtlichen Gründe einer Löschung entgegenstehen.
Kunden sollten daher sicherstellen, dass sie sämtliche benötigten Daten innerhalb des Abrufzeitraums vollständig übernommen haben.
10. Kosten des Wechsels
GAL Digital erhebt für den Wechsel und für den Export der Daten keine gesonderten Wechsel- oder Exportentgelte.
Auch der durch den Export verursachte Datenverkehr wird nicht gesondert abgerechnet.
Das vertraglich vereinbarte Entgelt für die weitere Bereitstellung und Nutzung von nele.ai während des Übergangszeitraums bleibt hiervon unberührt.
11. Eingesetzte IKT-Infrastruktur
Eine aktuelle Übersicht über die Standorte und Gerichtsbarkeiten, denen die für nele.ai eingesetzte IKT-Infrastruktur unterliegt:
Die Bereitstellung der vertraglich vereinbarten IKT-Dienstleistungen oder der an Unterauftragnehmer vergebenen Funktionen erfolgt an den nachstehend aufgeführten Standorten:
| Auftragnehmer (AN) / Unterauftragnehmer (UAN) | Leistungsgegenstand | Region der Leistungserbringung | Land der Leistungserbringung | Gerichtsbarkeit |
|---|---|---|---|---|
| Anthropic (UAN) | Modelle Claude 3 Haiku, Claude 3 Opus, Claude 3.5 Sonnet | Drittstaat | USA | USA |
| AWS Bedrock (UAN) | Modelle Claude 3 Haiku, Claude 3.5 Sonnet | EU/EWR* | EU/EWR* | Jeweiliger EU-/EWR-Staat des Serverstandorts |
| Azure (UAN) | Modelle GPT-4o, GPT-4o mini, GPT-4 Turbo, GPT-3.5 Turbo, DALL·E 3, Mistral Large, Mistral Small | EU/EWR* | EU/EWR* | Jeweiliger EU-/EWR-Staat des Serverstandorts |
| BRAVE (UAN) | BRAVE Search API | EU/EWR* | EU/EWR | Jeweiliger EU-/EWR-Staat des Serverstandorts |
| Brevo (UAN) | E-Mail-Versand- und Automatisierungsdienste | EU/EWR | BE, FR | Belgien und Frankreich |
| Elevenlabs | Generative Voice AI | Drittstaat | USA | USA |
| Gemini | EU/EWR | EU/EWR* | Jeweiliger EU-/EWR-Staat des Serverstandorts | |
| Hetzner (UAN) | Hosting/Speicherung von Kundendaten | EU/EWR | Deutschland | Deutschland |
| Microsoft Azure (UAN) | Hosting/Speicherung von Kundendaten | EU/EWR | Deutschland | Deutschland |
| Microsoft Office 365 | Office-Software: E-Mail, Word, Excel, OneDrive | EU/EWR* | EU/EWR* | Jeweiliger EU-/EWR-Staat des Serverstandorts |
| Mistral AI (UAN) | Modelle Mistral Large, Mistral Small (direkt über La Plateforme/API) | EU/EWR* | SE, NO, NL | Schweden, Norwegen und Niederlande |
| nele.ai (AN) | Erbringung der AI-basierten Dienstleistungen | Deutschland | DE | Deutschland |
| OpenAI (UAN) | Modelle GPT-4o, GPT-4o mini, GPT-4 Turbo, GPT-3.5 Turbo, DALL·E 3 | Drittstaat | USA | USA |
| Pipedrive | Kundensupport / CRM | EU/EWR | EE | Estland |
| Scaleway (UAN) | Generative APIs (KI-Textgenerierung auf eigener Infrastruktur) | EU/EWR | FR | Frankreich |
* Der jeweilige Serverstandort innerhalb der EU beziehungsweise des EWR bestimmt Land und Gerichtsbarkeit der Leistungserbringung.
12. Schutz vor unvereinbarem staatlichem Zugriff aus Drittstaaten
GAL Digital setzt technische, organisatorische und vertragliche Maßnahmen ein, um in der Europäischen Union gespeicherte nicht-personenbezogene Kundendaten vor einem staatlichen Zugriff aus Drittstaaten oder einer entsprechenden Übermittlung zu schützen, soweit der Zugriff oder die Übermittlung mit dem Unionsrecht oder dem Recht eines Mitgliedstaats unvereinbar wäre.
Zu diesen Maßnahmen gehören insbesondere:
- die Beschränkung von Zugriffsrechten nach dem Erforderlichkeitsprinzip
- die Verschlüsselung von Daten bei der Übertragung
- die sorgfältige Auswahl und vertragliche Verpflichtung eingesetzter Dienstleister
- vertragliche Vorgaben zum Umgang mit behördlichen Herausgabeverlangen
- soweit rechtlich und tatsächlich möglich, die Prüfung der Rechtmäßigkeit behördlicher Herausgabeverlangen
- soweit rechtlich und tatsächlich möglich, die Anfechtung von Herausgabeverlangen, die unionsrechtlichen Anforderungen widersprechen
- die Information betroffener Kunden über entsprechende Zugriffe oder Herausgabeverlangen, soweit dies rechtlich zulässig ist
Weitere Informationen zu den technischen und organisatorischen Maßnahmen sowie zu den eingesetzten Dienstleistern finden Sie unter /de/avv und /subcontractors.
13. Unterstützung und Kontakt
GAL Digital unterstützt Kunden in angemessenem Umfang bei der Planung und Durchführung eines Wechsels sowie bei der Ausarbeitung einer Exit-Strategie.
Anfragen zum Wechsel und zur Datenübertragbarkeit richten Sie bitte an:
GAL Digital GmbH
E-Mail: support@nele.ai
Bitte nennen Sie bei Ihrer Anfrage das betroffene Kundenkonto und beschreiben Sie möglichst konkret das gewünschte Wechsel- oder Exportszenario.