Common refusals
A client written for a more lenient broker tends to trip over the same few rules. Each entry below gives what you get back, why, and what to send instead.
-
400on a timestamp ending in+00:00Andromeda takes UTC only in the form ending in
Z, with at most six fractional digits. Convert the time to UTC and end it withZ. Date-times has the full rule. -
The value isn't a UN/CEFACT Recommendation 20 common code. The match is exact, so
kgmis refused as well askm/handCelsius. Send the code itself, such asCEL,KMHorKGM. -
400naming an attribute with a hyphen or a dotA name holds letters, digits and
_only, and that applies after a prefix too, soex:speed-limitis refused just likespeed-limit. Rename the attribute to something likespeedLimit, or map the term to an IRI in your@context. -
400naming an attribute calledvalue,unitCodeor another core termThe core
@contextreserves those names for the members of an attribute. Pick another name. Identifiers, units and scopes lists every reserved term. -
400InvalidRequestnaming a query parameterThe parameter is misspelt, or the endpoint doesn't define it. Andromeda refuses it rather than answer a different question from the one you asked. Fix the name.
-
400for a query that is too wideThe query names no
type,attrs,q, geoquery orid, and it isn'tlocal=true. Add one of them. -
en_USand spellings like it aren't BCP 47 tags. Useen-US. -
400naming a RelationshipobjectThe target is a bare name, and a Relationship points at an absolute URI. Use the target entity's full identifier, such as
urn:ngsi-ld:Building:1. -
The request has no
Content-Length, which is what happens when a client streams the body in chunks. Send the body with its length. -
Content-Typeis missing or isn't one Andromeda takes. Sendapplication/jsonorapplication/ld+json. -
400onapplication/ld+jsonwith a contextLinkheaderA request carries its
@contextin one place only. Put it in the body, or sendapplication/jsonwith theLinkheader.