Standards and specifications of the data service (reference)
This page lists the standards and specifications that the Wkl.Data.Gateway data service is based on, what each one requires, and how the service implements it. Use this page when you assess whether a client works with the service, or when you trace where a requirement comes from.
Types of sources
None of the sources is legally binding on the operator. They differ in how much interoperability or protection depends on them:
| Type | Meaning for the service |
|---|---|
| Protocol standard (OASIS Standard, standards-track RFC) | If the service deviates, standards-compliant clients don't understand it |
| Vendor specification (SQL Server, Windows) | Behavior that the service relies on toward the database and the operating system |
| Informational RFC, draft | a widespread method without standard status; the service follows it, a client doesn't have to |
Product definition (native API, vocabulary Wkl.Store.V1, headers X-Wkl-…) | a design decision of this product, described in this documentation |
Sources and their implementation
| Source | Type | What it defines, as far as the service is concerned | Implementation in the service | Limitations |
|---|---|---|---|---|
| OData 4.01 Part 1: Protocol | OASIS Standard | requests, responses, error format, next pages, ETags, create/update/delete | responds with OData-Version: 4.0; next pages via @odata.nextLink; @odata.etag and If-Match with 412 | $batch, delta, asynchronous requests, and media entities aren't supported |
| Part 2: URL Conventions | OASIS Standard | query options, literals, addressing | $select, $filter, $orderby, $top, $skip, $count, $skiptoken; POST …/$query (since 4.01); see OData v4 | $expand, $search, and the odata.maxpagesize preference aren't supported |
| CSDL XML 4.01 | OASIS Standard | schema document $metadata | entity sets per alias and schema, keys, facets, annotations; each caller sees only the objects they're permitted to use | no CSDL as JSON |
| OData JSON Format 4.01 | OASIS Standard | representation of values and errors | JSON; binary values as ordinary Base64, not base64url, because Power Query loads only ordinary Base64 | no Atom/XML; the native API also delivers XML |
| OData Extension for Data Aggregation 4.0 | OASIS Committee Specification, not an OASIS Standard | $apply with filter, compute, groupby, aggregate; announcement ApplySupported | these four transformations; COUNT(column) via the own method Wkl.Store.V1.count | other transformations and Rollup aren't supported |
| RFC 9110 HTTP Semantics | RFC, Internet Standard | conditional requests (If-Match, 412), 401 with WWW-Authenticate, 409, 422, 414 | write conflict 412, duplicate 409, rejected statement 422 | — |
| RFC 6585 | standards-track RFC | 429 Too Many Requests | limits for failed attempts and requests per caller | — |
| RFC 7617 Basic | standards-track RFC | user name and password, character set UTF-8 | SQL Server login, only over a protected connection; charset="UTF-8" in the challenge | — |
| RFC 4559 Negotiate | informational RFC | Kerberos or NTLM over HTTP | Windows sign-in with Kerberos or NTLM, groups via SID | — |
| RFC 6238 TOTP | informational RFC | time-based one-time codes | second factor, each code accepted only once | — |
| Idempotency-Key HTTP Header Field | IETF draft (expired), not a standard | repeating a change without a double effect | first response kept in memory for ten minutes | forgotten after a restart; not shared across multiple instances |
| RFC 8439 ChaCha20-Poly1305, RFC 5869 HKDF | informational RFCs | authenticated encryption, key derivation | connection strings and second factors sealed in the administration store (XChaCha20 variant with a 24-byte nonce), keys derived per purpose | XChaCha20 itself is described only in an IRTF draft |
X-Forwarded-For, X-Forwarded-Proto | common practice, not a standard (RFC 7239 standardizes the Forwarded header) | origin and scheme behind a proxy | evaluated only from proxies listed in TrustedProxies, starting from the nearest hop | Forwarded (RFC 7239) isn't read |
| EXECUTE AS, SESSION_CONTEXT | vendor specification | switching the execution context, session values | passing on the person, session context wkl.person/wkl.key/wkl.role, read-only | — |
| TLS via Kestrel or Windows (Schannel) | operating system | protocol versions, algorithms | leaves version and algorithms to the operating system; post-quantum key exchange where Windows offers it | — |
See also
en/wiki/data-conectivity/database-gateway/reference/standards.txt · Last modified: by Wolfgang van der Stille