Skip to main content

Deliberate tolerances

Where a standard requires or allows a broker to accept something, Andromeda accepts it. These are the cases.

  • GeoJSON foreign members

    Kept, as GeoJSON allows.

  • Polygon winding order

    Not checked. GeoJSON says parsers shouldn't reject a polygon for it.

  • Geometries crossing the antimeridian

    Accepted. GeoJSON recommends cutting them but doesn't require it.

  • An attribute's own previous… member in a write

    Ignored, because the specification says members only a response carries are ignored.

  • createdAt and modifiedAt in a write

    Ignored at every level, since "NGSI-LD implementations shall ignore them", though they still have to parse. That lets you write back an entity you read with sysAttrs. Andromeda stamps the entity and its attribute instances itself. A sub-attribute holds no system time, and a sysAttrs representation shows none for it.

  • The members Andromeda generates on a subscription

    Ignored when you send them. They are status, createdAt and modifiedAt, plus timesSent, timesFailed, lastNotification, lastSuccess and lastFailure in notification. The specification says implementations "shall ignore them", which keeps a subscription you read legal to write back.

  • instanceId in a Core API write

    Ignored at every level, though it still has to be a URI. Andromeda makes up the instanceId of the instance the write adds to the history. A Temporal API write keeps the instanceId you give an instance, since that is how you address the instance afterwards.

  • Extra members of a context source registration

    Kept as Context Source Properties.

  • An NGSILD-Tenant entry or a binding-specific header in contextSourceInfo

    A registration whose contextSourceInfo holds one, such as Content-Length, is created with the entry stored as written, and no forwarded request carries it, because the specification says such information "shall be ignored". A forwarded request goes to the tenant in the registration's tenant member, or to the default tenant when there is none.

  • Member order in a hosted @context

    A hosted @context is stored as the text it was written in, and it is served with its members in the order you wrote them. JSON member order carries no meaning, and Andromeda doesn't impose one.

  • An unparsable Prefer header

    Leaves the defaults in place, as the Prefer specification requires.

  • A remote @context served as text/plain, or with no Content-Type

    Read as JSON. The specification sets no media type for a fetched context, and many published data model contexts are served as text/plain. This is wider than the JSON-LD 1.1 API document loader, which fails anything not served as JSON. The body still has to be UTF-8 JSON with a top-level @context.