Get the signed app config
# The Grona SDK makes this call. Your code does not.curl https://api.grona.ai/v1/mobile/workspaces/acme-market/config \ -H 'Accept: application/jose+json'Called by the Grona SDK, not by your code.
The config is public: the workspace key ships inside the app, and the config carries no
personal data and no identifiers. The body is a JWS in flattened JSON serialization,
signed with ES256, with the protected header exactly
{"alg":"ES256","kid":"...","typ":"grona-config+jws"}. The envelope is at most 768 KB
and the decoded payload at most 512 KB.
How the SDK handles the response:
200: verifies the signature and applies the config.304: keeps its current copy. This does not extend the config’sexpires_at.429,5xxand network errors: backs off with jitter and honoursRetry-After, waiting at most one hour.- Redirects and any other
4xx: keeps the last good config.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The public workspace key the app passes to the SDK.
Example
acme-marketHeader Parameters
Section titled “Header Parameters”The ETag of the copy the SDK holds. Not sent for the copy bundled with the app.
Responses
Section titled “Responses”The signed config.
JWS in flattened JSON serialization (RFC 7515, section 7.2.2). Base64url without padding.
object
Base64url of {"alg":"ES256","kid":"...","typ":"grona-config+jws"}. No other header fields.
Base64url of the config JSON.
Base64url of the 64-byte ES256 signature over protected + "." + payload.
Example generated
{ "protected": "example", "payload": "example", "signature": "example"}Headers
Section titled “Headers”Entity tag for the next conditional request.
Not modified. The SDK keeps its copy, and its expires_at does not move.
Too many requests. Retry with exponential backoff and jitter, and wait at least as long
as Retry-After when it is present. Branch on the status code; the body is not
guaranteed to use the error envelope.
Headers
Section titled “Headers”How long to wait before retrying, in seconds or as an HTTP date.
The SDK keeps its last good config.
The SDK keeps its last good config and retries with backoff.