Skip to main content

Standards

Andromeda implements NGSI-LD v1.9.1. This page lists every other standard Andromeda relies on and says what Andromeda takes from each. Most are cited by NGSI-LD v1.9.1 itself. The rest cover places where NGSI-LD v1.9.1 leaves the choice to the implementation. Links go to the publisher.

Some RFCs that NGSI-LD v1.9.1 cites have since been obsoleted. Their entries name the successor, and Andromeda follows the successor as well. Clause numbers on this page refer to NGSI-LD v1.9.1 unless an entry says otherwise.

NGSI-LD​

  • NGSI-LD v1.9.1 (2025-07), NGSI-LD API

    The specification Andromeda implements, covering operations, the query language, temporal and geospatial semantics, subscriptions, distribution and the error model. Andromeda's own additions are extensions, and each one is off by default.

  • ETSI GS CIM 006 v1.3.1, NGSI-LD Information Model

    Background for the entity, property and relationship concepts that NGSI-LD v1.9.1 clause 4 builds on. Andromeda implements the model only as NGSI-LD v1.9.1 states it.

  • ETSI GS CIM 004 v1.1.2, API

    The first NGSI-LD API specification, superseded by NGSI-LD v1.9.1. Andromeda does not implement it. It is listed for the clauses NGSI-LD v1.9.1 inherited from it.

  • ETSI GS CIM 019 v1.2.1, Provenance information

    Andromeda treats a signature proof (annex C.11) as ordinary data. It stores and returns the proof, and it neither produces nor verifies a signature.

  • ETSI GS CIM 047 v1.1.2, OpenAPI specification

    A machine-readable description of the API Andromeda serves. Use it to generate clients.

  • ETSI GS CIM 050 v1.1.1, Aligning with geo-information

    Proposes coordRefSys and four more georel relations (clause 6.6). Andromeda implements none of them. Geometries are WGS 84, and geoqueries use only the relations of NGSI-LD v1.9.1 clause 4.10.

Conformance testing​

Andromeda is tested against every case of the official ETSI NGSI-LD test suite. These documents define that suite.

Geospatial​

  • OGC 06-103r4, Simple feature access, Part 1: Common architecture

    The meaning of every georel relation, and the buffer that near measures against (clause 6.1.2.4). Its clause 6.1.2.5 makes spatial operations act on the two-dimensional footprint, so Andromeda keeps an altitude but no geoquery reads it.

  • RFC 7946, GeoJSON

    The geometry of every GeoProperty, the coordinates of a geoquery, and the application/geo+json representation. Positions with an altitude are accepted and returned. Foreign members are kept as written.

HTTP and TLS​

  • RFC 9110, HTTP semantics

    Methods, status codes, Content-Range, Retry-After, conditional requests and content negotiation. It replaces RFC 7231, RFC 7232, RFC 7233, RFC 7235 and RFC 2818.

  • RFC 9111, HTTP caching

    Cache-Control and Expires. It replaces RFC 7234.

  • RFC 9112, HTTP/1.1

    Message syntax and routing. It replaces the parts of RFC 7230 that RFC 9110 doesn't.

  • RFC 9113, HTTP/2

    The protocol the TCP listener negotiates. It replaces RFC 7540 and RFC 8740.

  • RFC 7540, HTTP/2 as first published

    Replaced by RFC 9113.

  • RFC 9114, HTTP/3

    The protocol the HTTP/3 listener serves over QUIC.

  • RFC 9000, QUIC

    The transport under HTTP/3.

  • RFC 9001, Using TLS to secure QUIC

    The TLS 1.3 handshake that secures QUIC. The HTTP/3 listener uses TLS 1.3 only.

  • RFC 7838, HTTP Alternative Services

    The Alt-Svc header on the TCP responses, which advertises the HTTP/3 listener on the same host and port.

  • RFC 7239, Forwarded

    The standards-track field a trusted proxy may set to describe the original request. Andromeda reads it under the forwarded-header settings.

  • RFC 6585, 431 Request Header Fields Too Large

    The answer to a request header section over request_limits.max_header_section.

  • RFC 6797, HTTP Strict Transport Security

    The Strict-Transport-Security header Andromeda sends, with a max-age of 180 days (section 6.1.1).

  • RFC 7230, HTTP/1.1 message syntax and routing

    Header field names are compared case-insensitively wherever Andromeda reads one. Obsoleted by RFC 9110 and RFC 9112.

  • RFC 7231, HTTP/1.1 semantics and content

    Methods, status codes and content negotiation. When the datastore cannot be reached, Andromeda answers 503 with Retry-After (section 6.6.4). Obsoleted by RFC 9110.

  • RFC 7232, conditional requests

    If-None-Match is evaluated against each @context document Andromeda serves. Obsoleted by RFC 9110.

  • RFC 7233, range requests

    Content-Range on a partial (206) temporal response, with the unit DateTime (clause 6.3.10). Obsoleted by RFC 9110.

  • RFC 7234, caching

    Cache-Control (max-age, s-maxage) and Expires on a fetched remote @context decide how long Andromeda caches it. Obsoleted by RFC 9111.

  • RFC 7240, Prefer

    Read on requests as clause 6.3.6 describes. A batch operation sent with respond-async is answered before its temporal history is applied.

  • RFC 8288, Web Linking

    The Link header that carries the user @context in requests and responses, and the rel="next" and rel="prev" links of a paged response.

  • RFC 6906, the profile link relation

    The profile link of clause 6.3.21, which names the NGSI-LD API version a client writes against. Andromeda adapts its answer to that version.

  • RFC 2818, HTTP over TLS

    Clause 6.2 requires HTTPS. Andromeda terminates TLS itself or runs behind a reverse proxy that does. Obsoleted by RFC 9110.

  • RFC 5246, TLS 1.2

    Clause 6.2 requires TLS 1.2. The native TLS listener admits TLS 1.2 and 1.3. HTTP/3 uses TLS 1.3 only. Obsoleted by RFC 8446 and RFC 9846.

  • RFC 8446, TLS 1.3

    TLS 1.3, the version the native TLS listener and HTTP/3 both use. Obsoleted by RFC 9846.

  • RFC 9846, TLS 1.3

    The successor to RFC 8446, which also obsoletes RFC 5246. Andromeda follows it as well.

Addressing​

  • RFC 1918, Address allocation for private internets

    Private IPv4 space. A notification endpoint in it is refused, because delivery must not reach internal networks.

  • RFC 6052, IPv4/IPv6 translators

    The well-known NAT64 prefix 64:ff9b::/96. Delivery refuses it as not globally routable.

  • RFC 8215, local-use IPv4/IPv6 translation prefix

    The local-use NAT64 prefix 64:ff9b:1::/48, refused the same way.

Errors​

  • RFC 7807, Problem Details for HTTP APIs

    The body of every error response, with type, title, status and detail. Obsoleted by RFC 9457.

  • RFC 9457, Problem Details for HTTP APIs

    The successor Andromeda follows. The members NGSI-LD uses are the same as in RFC 7807.

Identifiers​

  • WHATWG URL Standard, URL parsing

    The parser behind the Url type. It isn't a URI validator, so Andromeda also checks the URI grammar of RFC 3986.

  • RFC 9562, Universally Unique IDentifiers

    The UUIDs Andromeda mints for identifiers, with the version chosen per use.

  • RFC 4122, UUID URN namespace

    The UUID form RFC 9562 replaces.

  • RFC 3986, URI generic syntax

    The syntax of every identifier and every Relationship target. Andromeda stores and serves a target exactly as written, because a percent-encoded reserved character is not the same as the character itself (section 6.2.2.2).

  • RFC 3987, Internationalized Resource Identifiers

    IRIs are accepted wherever NGSI-LD v1.9.1 asks for a URI (clause 4.6.2, NOTE 2). Their grammar is checked by iri-rs, which also explains the comparison rungs of section 5.3 and which one Andromeda uses.

  • RFC 8141, URN syntax

    Identifiers Andromeda mints are urn:ngsi-ld: URNs. Two URNs are equal when they differ only in the letter case of urn and the namespace identifier (section 3.1). The namespace-specific string stays case-sensitive.

JSON​

  • RFC 8259, JSON

    The syntax of every request and response body. In q, string equality compares code units (section 8.3), as clause 4.9 requires, and a quoted value is a JSON string with its escapes. String ordering follows the Unicode Collation Algorithm instead (see Query language). The JSON-LD processor reads JSON with jstrict, which keeps the member order and repeated names this RFC leaves to the receiver.

  • JSON-LD 1.1, W3C Recommendation

    The format of every NGSI-LD body and @context. Section 6.2 defines the Link header that carries a @context beside a plain JSON body (see JSON-LD @context).

  • JSON-LD 1.1 Processing Algorithms and API, W3C Recommendation

    Expansion and compaction, which turn your short names into IRIs and back. Andromeda's JSON-LD library, jsonld, is tested against the W3C test suite for this specification.

  • RFC 7396, JSON Merge Patch

    Partial updates and merges apply the Fragment as a merge patch, and the NGSI-LD Null deletes a member. A Fragment that names no member changes nothing.

  • RFC 8785, JSON Canonicalization Scheme

    The canonical form of stored @context documents. Informational, not a Standards Track document.

  • RFC 6901, JSON Pointer

    Locates one node in a JSON document while the broker walks it.

  • RFC 6902, JSON Patch

    An informative reference of NGSI-LD v1.9.1. Andromeda accepts no JSON Patch body.

  • RFC 5234, ABNF

    The notation of the NGSI-LD v1.9.1 grammars, for example q (clause 4.9) and Scope (clause 4.18). Andromeda checks input against those grammars as printed.

Language​

  • RFC 4647, Matching of language tags

    How language ranges in lang and Accept-Language match a tag, in sections 2.2 and 3.3.2. Replaces RFC 3066 together with RFC 4646.

  • RFC 4646, Tags for identifying languages, first published

    Replaced by RFC 5646.

  • RFC 3066, Tags for identifying languages, earlier version

    Replaced by RFC 4646 and RFC 4647.

  • RFC 5646, language tags

    The tags of a languageMap and of the lang filter. Tags are compared case-insensitively (section 2.1.1).

  • RFC 3282, Content-Language headers

    Clause 4.15 cites it only for the language tag grammar of lang. Andromeda sends no Content-Language header.

  • RFC 6067, BCP 47 extension U

    The form of the collation an ordered query names, for example und-u-ks-identic. A value that is not a valid ICU collation is refused.

Time​

  • ISO 8601:2019, date and time representations

    The duration form of aggrPeriodDuration and the other ISO 8601 durations, and the DateTime and Date forms that NGSI-LD v1.9.1 clause 4.6.3 defines. Andromeda's reader admits exactly the forms clause 4.6.3 names.

  • RFC 3339, Date and time on the Internet

    Not cited by NGSI-LD v1.9.1. Andromeda spells the instants it sends in this form. Its reader doesn't accept general RFC 3339, only the clause 4.6.3 forms.

Messaging​

  • MQTT Version 3.1.1, OASIS Standard

    Notifications sent over MQTT. Andromeda's MQTT client speaks this version.

  • MQTT Version 5.0, OASIS Standard

    Notifications sent over MQTT. Andromeda's MQTT client speaks this version as well.

Unicode, numbers and hashing​

Web platform​

Units​

  • UN/CEFACT Recommendation 20, codes for units of measure

    The three-letter codes Andromeda accepts as a unitCode, such as KMH for kilometres per hour.

Background reading: ETSI group reports​

ETSI publishes these informative reports on how NGSI-LD is used and deployed. Andromeda implements nothing from them. If you are new to NGSI-LD, start with the Primer.