Features

The nele.ai handbook: Get started easily & look up features.

All features
  • Features for users
  • Chats
    Manage communication with AI systems individually and clearly.
  • Prompts
    Manage and use your own and pre-made prompts centrally across the entire organization.
  • Application Settings
    Configure nele.ai just the way you like it. Dark mode, shortcuts, API, and much more.
  • Word / Excel Add-ins
    Use nele.ai in your existing Microsoft Word and Excel workflows.
  • nele.ai API integration feature
    API Integration
    Create your own API keys for seamless integration into your applications and systems.
  • Features for administrators
  • Admin Area
    Demo, tutorials, account setup, and support.
  • SSO with SAML 2.0
    Information on setting up SAML 2.0 single sign-on.
  • Good to know
  • General
    Everything about the AI platform and AI solution for organizations.
  • AI models
    Overview of all vetted and available AI models.
  • Ready to get started?
  • Schedule a demo
  • Free expert talk
  • Request training
  • Contact
All features
Resources
  • Software expertise
  • AI models
    Overview of all vetted and available AI models.
  • Security
    Learn more about our security concept for enhanced data security with AI.
  • Changelog
    New features, bug fixes, and content.
  • Skill enhancement
  • Schedule a demo
    Schedule a no-obligation initial consultation with our AI experts.
  • Free expert webinar
    Learn how to use nele.ai in your daily work
    in our regular free expert webinars.
  • Training
    Request customized AI training
    tailored to your industry and team.
  • General information
  • News
    AI updates, news, and reports.
  • Press releases
    Press reports & images.
PricingSecurity
Log in
Admin loginUser login
Sign upBook a demo — free of charge
Log in
  • Admin login
  • User login
Sign upBook a demo — free of charge

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.

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 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 (im Dienst zuzüglich der Erweiterungen Tabellen und Durchstreichung)
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:2017Elektronische Rechnungsstellung — Semantisches Datenmodell
CIUS XRechnung 3.0Standard XRechnung (KoSIT)
ISO 639-1Sprachkennungen
ISO 3166-1 Alpha-2Länderkennungen
ISO 8601-1:2019Datums- und Zeitangaben
FIPS PUB 180-4Secure 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 DatenstrukturenZielsystem kann einzelne Konfigurationen möglicherweise nicht unmittelbar übernehmen
Interne technische Repräsentationen werden nicht exportiertDer 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 WerkzeugeDie 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 DurchstreichungEin 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 zugesichertDas 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 stabilZwei Archive desselben Kontos lassen sich nicht über die Kennungen abgleichen.
Große Sammlungen werden im Archiv auf mehrere Teildateien verteiltVerarbeitende 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
bunny.net (UAN) Content Delivery Network (Auslieferung von Inhalten und Mediendateien) EU/EWR* EU/EWR* Jeweiliger EU-/EWR-Staat des Serverstandorts
Elevenlabs Generative Voice AI Drittstaat USA USA
Exoscale (UAN) Cloud-Infrastruktur (Compute, GPU-Server, Speicher, Datenbanken) EU/EWR*, Schweiz EU/EWR*, CH Jeweiliger EU-/EWR-Staat des Serverstandorts bzw. Schweiz
Google 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.

nele.ai logo - Deploying data-compliant AI in your company
  • Made in Germany
    Hungen location
  • GDPR-compliant
    and ISO 27001-certified
    German server location
  • Built for organizations
    One license for all users
Certificates
Awards for nele.ai: AI Innovation Award 2023, TOP Innovator 2026, Best of Technology 2024, TÜV certificate.
Navigation
  • Home
  • Features
  • Security
  • Pricing
  • AI models
Company
  • Changelog
  • Training
  • News
  • Contact
  • Press Information
Legal
  • Legal Notice
  • Privacy Policy
  • Terms of Use
  • Accessibility
Language Selection

Deutsch

English

Social Media


Copyright 2024 © nele.ai by GAL Digital GmbH
Sales & Support Chat
Need assistance? Use our support chat.
Speak NowChat Now

We need your consent

Before we begin the conversation, we need your consent. Please allow access to your microphone afterwards – naturally, access will only occur during the conversation.

By clicking "Agree" and each time you interact with this AI assistant, you consent to your communications being recorded, stored, and shared with external service providers in accordance with our privacy policy.
‍
If you do not wish for your conversations to be recorded, please do not use this service.

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