{"openapi":"3.1.0","info":{"contact":{"email":"hi@hedia.com","name":"Hedia ApS","url":"https://hedia.com"},"termsOfService":"https://www.hedia.com/terms-and-conditions","title":"OAuth 2.0","version":"1.0.0"},"servers":[{"url":"https://oauth2.hedia.com/"}],"tags":[{"name":"OAuth2","description":"Authorize using OAuth 2.0.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/operations#oauth2","description":"Documentation"}}],"paths":{"/authorize":{"get":{"operationId":"authorize","summary":"Request authorization","description":"Begin the request to grant authorization. The user may be required to authenticate and accept authorization. In a successful case, they will be redirected to the redirect URI with an authorization code that is valid for 1 minute.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/operations/authorize","description":"Documentation"},"parameters":[{"$ref":"#/components/parameters/AcceptLanguageHeaderParameter"},{"$ref":"#/components/parameters/AcrValuesQueryParameter"},{"$ref":"#/components/parameters/ClientIdQueryParameter"},{"$ref":"#/components/parameters/CodeChallengeMethodQueryParameter"},{"$ref":"#/components/parameters/CodeChallengeQueryParameter"},{"$ref":"#/components/parameters/InteractionIdQueryParameter"},{"$ref":"#/components/parameters/MaxAgeQueryParameter"},{"$ref":"#/components/parameters/PromptQueryParameter"},{"$ref":"#/components/parameters/RedirectUriQueryParameter"},{"$ref":"#/components/parameters/ResponseTypeQueryParameter"},{"$ref":"#/components/parameters/ScopeQueryParameter"},{"$ref":"#/components/parameters/StateQueryParameter"}],"responses":{"200":{"$ref":"#/components/responses/Ok"},"303":{"$ref":"#/components/responses/SeeOther"},"400":{"$ref":"#/components/responses/BadRequest"},"403":{"$ref":"#/components/responses/Forbidden"},"499":{"$ref":"#/components/responses/ClientClosedRequest"},"default":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"session":[]},{}],"tags":["OAuth2"]}},"/authorizations":{"post":{"operationId":"createAuthorization","summary":"Create an authorization","description":"When a user confirms they want to grant access, this will create the authorization. The user will be redirected to the callback URL, with an authorization code that can be exchanged for an access token.","parameters":[{"$ref":"#/components/parameters/CsrfTokenCookieParameter"}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/CreateAuthorizationRequestBody"}}}},"responses":{"303":{"$ref":"#/components/responses/SeeOther"},"400":{"$ref":"#/components/responses/BadRequest"},"499":{"$ref":"#/components/responses/ClientClosedRequest"},"default":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"session":[]}],"tags":["OAuth2"],"externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/operations/createAuthorization","description":"Documentation"}}},"/token":{"post":{"operationId":"token","summary":"Exchange token","description":"Exchange an authorization code or a refresh token for an access token. The content-type must be \"application/x-www-form-urlencoded\".","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/operations/token","description":"Documentation"},"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AuthorizationCodeRequestBody"},{"$ref":"#/components/schemas/RefreshTokenRequestBody"}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponseBody"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"499":{"$ref":"#/components/responses/ClientClosedRequest"},"default":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"client":[]}],"tags":["OAuth2"]}},"/revoke":{"post":{"operationId":"revoke","summary":"Revoke a token","description":"Revoke a token so it can no longer be exchanged for an access token. Only refresh tokens are currently supported.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/operations/revoke","description":"Documentation"},"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/RevokeRequestBody"}}}},"responses":{"200":{"description":"OK"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"499":{"$ref":"#/components/responses/ClientClosedRequest"},"default":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"client":[]}],"tags":["OAuth2"]}},"/userinfo":{"get":{"operationId":"getUserInfo","summary":"Get user info","description":"OpenID Connect UserInfo Endpoint. Returns claims about the authenticated end-user, gated by the access token's granted scopes. The access token is presented as a Bearer token in the Authorization header.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/operations/getUserInfo","description":"Documentation"},"responses":{"200":{"$ref":"#/components/responses/UserInfo"},"401":{"$ref":"#/components/responses/UserInfoUnauthorized"},"499":{"$ref":"#/components/responses/ClientClosedRequest"},"default":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"accessToken":[]}],"tags":["OAuth2"]}},"/.well-known/oauth-authorization-server":{"get":{"operationId":"getOAuthAuthorizationServerMetadata","summary":"Get the authorization server metadata","description":"The OAuth 2.0 Authorization Server Metadata, describing the endpoints and capabilities of this authorization server.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/operations/getOAuthAuthorizationServerMetadata","description":"Documentation"},"responses":{"200":{"description":"OK","headers":{"Cache-Control":{"required":true,"schema":{"$ref":"#/components/schemas/CacheControl"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizationServerMetadata"}}}},"499":{"$ref":"#/components/responses/ClientClosedRequest"},"default":{"$ref":"#/components/responses/InternalServerError"}},"security":[{}],"tags":["OAuth2"]}},"/.well-known/openid-configuration":{"get":{"operationId":"getOpenIDConfiguration","summary":"Get the OpenID provider configuration","description":"The OpenID Connect Discovery document, describing the endpoints and capabilities of this authorization server.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/operations/getOpenIDConfiguration","description":"Documentation"},"responses":{"200":{"description":"OK","headers":{"Cache-Control":{"required":true,"schema":{"$ref":"#/components/schemas/CacheControl"}}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/AuthorizationServerMetadata"},{"$ref":"#/components/schemas/OpenIDProviderMetadata"}]}}}},"499":{"$ref":"#/components/responses/ClientClosedRequest"},"default":{"$ref":"#/components/responses/InternalServerError"}},"security":[{}],"tags":["OAuth2"]}}},"components":{"securitySchemes":{"accessToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT"},"client":{"type":"http","scheme":"basic"},"session":{"type":"apiKey","in":"cookie","name":"__Secure-ID-Session"}},"schemas":{"AcceptLanguage":{"title":"Accept Language","description":"The Accept-Language request HTTP header indicates the natural language and locale that the client prefers.","type":"string","minLength":1,"maxLength":1024,"example":"da-DK, da;q=0.8, en;q=0.7","$id":"./components/schemas/AcceptLanguage","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/AcceptLanguage","description":"Documentation"}},"AcrValues":{"title":"Acr Values","description":"Space-separated Authentication Context Class Reference values the authentication is requested to satisfy,\nin order of preference.\n\n- `urn:hedia:acr:regular` — satisfied by any authenticated user.\n- `urn:hedia:acr:elevated` — requires the End-User to verify their password.\n\nThis parameter requests the `acr` Claim as a Voluntary Claim, so the Authorization Server attempts to\nsatisfy the requested class but does not treat an unmet one as a failed authentication. The class the\nauthentication actually satisfied is returned as the `acr` Claim of the ID token, and unrecognised values\nare ignored, so clients must check that claim.\n\nRequesting `acr` as an Essential Claim through the `claims` request parameter, which would require an\nunmet class to fail the request, is not supported.\n","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/AcrValues","description":"Documentation"},"type":"string","minLength":1,"maxLength":1024,"examples":["urn:hedia:acr:regular","urn:hedia:acr:elevated"],"$id":"./components/schemas/AcrValues"},"ClientId":{"title":"Client ID","description":"The client ID is a unique identifier for a client.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/ClientId","description":"Documentation"},"type":"string","format":"uuid","example":"9352258f-0263-47d1-b9c7-16cd93be7501","$id":"./components/schemas/ClientId"},"CodeChallengeMethod":{"title":"Code Challenge Method","description":"The code challenge method is used to indicate the hashing algorithm used to derive the code challenge.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/CodeChallengeMethod","description":"Documentation"},"type":"string","enum":["plain","S256"],"$id":"./components/schemas/CodeChallengeMethod"},"CodeChallenge":{"title":"Code Challenge","description":"The code challenge is a string that is derived from the code verifier. It is used in situations where the client secret cannot be stored securely.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/CodeChallenge","description":"Documentation"},"type":"string","minLength":43,"maxLength":128,"$id":"./components/schemas/CodeChallenge"},"InteractionId":{"title":"Interaction ID","description":"Reserved for the Authorization Server. Clients must not set it.","type":"string","format":"uuid","$id":"./components/schemas/InteractionId","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/InteractionId","description":"Documentation"}},"MaxAge":{"title":"MaxAge","description":"Maximum Authentication Age: the allowable elapsed time in seconds since the End-User was last actively\nauthenticated. If the elapsed time is greater than this value, the End-User is actively re-authenticated\nbefore the request continues, and `0` requires it on every request.\n\nA completed re-authentication satisfies the requirement, however long the End-User took over it. The\n`auth_time` Claim of the ID token reports when the authentication took place.\n","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/MaxAge","description":"Documentation"},"type":"number","minimum":0,"maximum":31536000,"example":3600,"$id":"./components/schemas/MaxAge"},"Prompt":{"title":"Prompt","description":"Space-delimited, case-sensitive list of values that specifies whether the Authorization Server prompts the End-User for reauthentication and consent.\n\n- `none` — no UI is shown. Returns `login_required` without an active session, or `consent_required` when the scopes are not yet approved.\n- `create` — the End-User must authenticate starting from the signup page, even with an active session, and can still switch to signing in with an existing account. Defined by [Prompt Create](https://openid.net/specs/openid-connect-prompt-create-1_0.html).\n- `login` — the End-User must reauthenticate, even with an active session.\n- `consent` — the End-User must approve the requested scopes again, even if approved previously; declining returns `access_denied`.\n\n`login consent` is the only supported combination; any other combination of known values is rejected with `invalid_request`.\n\nUnrecognised values are ignored, so clients must not rely on a prompt being honoured.\n\nIf omitted, or without a recognised value, the End-User is prompted only when needed.\n","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/Prompt","description":"Documentation"},"type":"string","maxLength":128,"examples":["none","create","login","consent","login consent"],"$id":"./components/schemas/Prompt"},"RedirectUri":{"title":"Redirect URI","description":"The redirect URI is where the End-User will be redirected after authorization.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/RedirectUri","description":"Documentation"},"type":"string","format":"uri","minLength":1,"maxLength":2048,"example":"https://example.com/callback","$id":"./components/schemas/RedirectUri"},"ResponseType":{"title":"Response Type","description":"The response type is a string that indicates the type of authorization request. The only supported response type is \"code\".","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/ResponseType","description":"Documentation"},"type":"string","const":"code","$id":"./components/schemas/ResponseType"},"Scope":{"title":"Scope","description":"Space-delimited, case-sensitive list of `<action>:<scope>` permissions, such as `read:name`.\n\nA client either follows the permissions the End-User has approved, or fixes a subset of them:\n\n- **omitted or empty** — the authorization follows the End-User's approved permissions, so each token carries whatever they allow at the time it is issued. Consent is requested again when the app gains a permission they have not approved.\n- **a subset** — the authorization is fixed to exactly those permissions. Requesting a permission the app is not allowed to ask for is rejected with `invalid_scope`, and requesting a different set later replaces the previous authorization.\n\nChanging the requested scope replaces the authorization: any authorization code not yet redeemed, and\nevery refresh token previously issued to this client for this user, stop working and the End-User authorizes\nagain. A client that needs different scopes for different surfaces should use a client per surface.\n\nOn a refresh request, the value may only narrow what was already granted.\n\nIn a token response, this is the scope actually granted — for an authorization that follows the End-User's permissions, the set approved at that moment.\n","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/Scope","description":"Documentation"},"type":["null","string"],"pattern":"^(?:(?:(?:read|write):[\\w]+ )*(?:read|write):[\\w]+)?$","minLength":0,"maxLength":1024,"example":"read:name read:bloodGlucose write:bloodGlucose","$id":"./components/schemas/Scope"},"State":{"title":"State","description":"The state is a random string generated by the client that can be used to protect against cross-site request forgery attacks.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/State","description":"Documentation"},"type":"string","minLength":1,"maxLength":1024,"example":"xyzABC123","$id":"./components/schemas/State"},"SetCookie":{"title":"Set Cookie","description":"The Set-Cookie HTTP response header is used to send cookies from the server to the user agent.","type":"string","example":"<cookie-name>=<cookie-value>; Domain=<domain-value>; Secure; HttpOnly","$id":"./components/schemas/SetCookie","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/SetCookie","description":"Documentation"}},"Html":{"title":"Html","description":"The HTML is the HTML content of the page.","type":"string","$id":"./components/schemas/Html","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/Html","description":"Documentation"}},"Location":{"title":"Location","description":"The URI to redirect a page to.","type":"string","format":"uri","example":"https://example.com/resource","$id":"./components/schemas/Location","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/Location","description":"Documentation"}},"CsrfToken":{"title":"CSRF Token","description":"The CSRF token is used to prevent cross-site request forgery attacks.","type":"string","format":"uuid","example":"87e3838f-ca02-4d8d-89da-5933ae9a82e6","$id":"./components/schemas/CsrfToken","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/CsrfToken","description":"Documentation"}},"CallbackUrl":{"title":"Callback URL","description":"The callback URL is where the End-User will be redirected.","type":"string","format":"uri","minLength":1,"maxLength":2048,"example":"https://example.com/callback","$id":"./components/schemas/CallbackUrl","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/CallbackUrl","description":"Documentation"}},"CreateAuthorizationRequestBody":{"title":"Create Authorization Request Body","description":"The request body for creating an authorization.","type":"object","properties":{"callbackUrl":{"$ref":"#/components/schemas/CallbackUrl"},"clientId":{"$ref":"#/components/schemas/ClientId"},"csrft":{"$ref":"#/components/schemas/CsrfToken"},"scope":{"$ref":"#/components/schemas/Scope"}},"required":["callbackUrl","clientId","csrft","scope"],"additionalProperties":false,"$id":"./components/schemas/CreateAuthorizationRequestBody","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/CreateAuthorizationRequestBody","description":"Documentation"}},"Code":{"title":"Code","description":"The code is an authentication code that is used to exchange for an access token.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/Code","description":"Documentation"},"type":"string","format":"uuid","$id":"./components/schemas/Code"},"CodeVerifier":{"title":"Code Verifier","description":"The code verifier is a random string generated by the client that was used to create the code challenge.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/CodeVerifier","description":"Documentation"},"type":"string","minLength":43,"maxLength":128,"$id":"./components/schemas/CodeVerifier"},"AuthorizationCodeGrantType":{"title":"Authorization Code Grant Type","description":"The grant type is the type of authorization request, indicating whether you are requesting an access token from an authorization code or a refresh token.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/AuthorizationCodeGrantType","description":"Documentation"},"type":"string","const":"authorization_code","$id":"./components/schemas/AuthorizationCodeGrantType"},"AuthorizationCodeRequestBody":{"type":"object","title":"Authorization Code Request Body","description":"The Authorization Code grant type is used by clients to exchange an authorization code for an access token.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/AuthorizationCodeRequestBody","description":"Documentation"},"properties":{"code":{"$ref":"#/components/schemas/Code"},"code_verifier":{"$ref":"#/components/schemas/CodeVerifier"},"grant_type":{"$ref":"#/components/schemas/AuthorizationCodeGrantType"},"redirect_uri":{"$ref":"#/components/schemas/RedirectUri"}},"required":["code","grant_type","redirect_uri"],"additionalProperties":false,"$id":"./components/schemas/AuthorizationCodeRequestBody"},"RefreshTokenGrantType":{"title":"Refresh Token Grant Type","description":"The grant type is the type of authorization request, indicating whether you are requesting an access token from an authorization code or a refresh token.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/RefreshTokenGrantType","description":"Documentation"},"type":"string","const":"refresh_token","$id":"./components/schemas/RefreshTokenGrantType"},"RefreshToken":{"title":"Refresh Token","description":"The refresh token is used to obtain a new access token. It expires 90 days after being issued and is only valid for a single use.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/RefreshToken","description":"Documentation"},"type":"string","minLength":1,"maxLength":4096,"$id":"./components/schemas/RefreshToken"},"RefreshTokenRequestBody":{"type":"object","title":"Refresh Token Request Body","description":"The Refresh Token grant type is used by clients to exchange a refresh token for an access token when the access token has expired.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/RefreshTokenRequestBody","description":"Documentation"},"properties":{"grant_type":{"$ref":"#/components/schemas/RefreshTokenGrantType"},"refresh_token":{"$ref":"#/components/schemas/RefreshToken"},"scope":{"$ref":"#/components/schemas/Scope"}},"required":["grant_type","refresh_token"],"additionalProperties":false,"$id":"./components/schemas/RefreshTokenRequestBody"},"AccessToken":{"title":"Access Token","description":"The access token is used to authenticate requests to the API. It expires 1 hour after being issued.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/AccessToken","description":"Documentation"},"type":"string","minLength":1,"maxLength":4096,"$id":"./components/schemas/AccessToken"},"ExpiresIn":{"title":"Expires In","description":"The expires in is the number of seconds until the access token expires.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/ExpiresIn","description":"Documentation"},"type":"number","minimum":0,"maximum":31536000,"example":3600,"$id":"./components/schemas/ExpiresIn"},"IdToken":{"title":"ID Token","description":"A JSON Web Token (JWT) containing claims about the identity and preferences of the authenticated user.\nIt is valid for 1 hour after being issued.\n\n- `sub` — the End-User's ID. Always present.\n- `aud` — the client ID the ID token was issued to. Always present.\n- `acr` — the Authentication Context Class the End-User's authentication satisfied.\n- `auth_time` — when the End-User authenticated.\n- `address`, `email`, `locale`, `name` — present only if the authorization's scope includes the corresponding read permission.\n","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/IdToken","description":"Documentation"},"type":"string","minLength":1,"maxLength":4096,"$id":"./components/schemas/IdToken"},"TokenType":{"title":"Token Type","description":"The token type is a string that indicates the type of token. The only supported token type is \"Bearer\".","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/TokenType","description":"Documentation"},"type":"string","const":"Bearer","$id":"./components/schemas/TokenType"},"TokenResponseBody":{"title":"Token Response Body","description":"The response body for a token request.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/TokenResponseBody","description":"Documentation"},"type":"object","properties":{"access_token":{"$ref":"#/components/schemas/AccessToken"},"expires_in":{"$ref":"#/components/schemas/ExpiresIn"},"id_token":{"$ref":"#/components/schemas/IdToken"},"refresh_token":{"$ref":"#/components/schemas/RefreshToken"},"scope":{"$ref":"#/components/schemas/Scope"},"token_type":{"$ref":"#/components/schemas/TokenType"}},"required":["access_token","expires_in","id_token","refresh_token","scope","token_type"],"additionalProperties":false,"$id":"./components/schemas/TokenResponseBody"},"TokenTypeHint":{"title":"Token Type Hint","description":"An advisory hint about the type of the token submitted for revocation.","type":"string","enum":["access_token","refresh_token"],"$id":"./components/schemas/TokenTypeHint","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/TokenTypeHint","description":"Documentation"}},"RevokeRequestBody":{"type":"object","title":"Revoke Request Body","description":"The request to revoke a refresh token.","properties":{"token":{"$ref":"#/components/schemas/RefreshToken"},"token_type_hint":{"$ref":"#/components/schemas/TokenTypeHint"}},"required":["token"],"additionalProperties":false,"$id":"./components/schemas/RevokeRequestBody","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/RevokeRequestBody","description":"Documentation"}},"UserId":{"title":"User ID","description":"The user ID is a unique identifier for a user.","type":"string","format":"uuid","example":"9352258f-0263-47d1-b9c7-16cd93be7501","$id":"./components/schemas/UserId","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/UserId","description":"Documentation"}},"UserName":{"title":"User Name","description":"The name is the user's name, and how they will be addressed in the app.","type":"string","pattern":".*\\S.*","minLength":1,"maxLength":255,"example":"John Doe","$id":"./components/schemas/UserName","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/UserName","description":"Documentation"}},"UserEmail":{"title":"User Email","description":"The email is a unique email address to identify and communicate with the user.","type":"string","format":"email","example":"john@doe.com","$id":"./components/schemas/UserEmail","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/UserEmail","description":"Documentation"}},"Locale":{"title":"Locale","description":"Two-letter language code (ISO 639-1).","type":"string","pattern":"^[a-z]{2}$","example":"da","$id":"./components/schemas/Locale","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/Locale","description":"Documentation"}},"Country":{"title":"Country","description":"The two-letter (A-2) ISO 3166-1 code for the user's country of residence.","type":"string","pattern":"^[A-Z]{2}$","example":"DK","$id":"./components/schemas/Country","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/Country","description":"Documentation"}},"UserAddress":{"title":"User Address","description":"The address is the user's postal address. Only the country of residence is known.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/UserAddress","description":"Documentation"},"type":"object","properties":{"country":{"$ref":"#/components/schemas/Country"}},"additionalProperties":false,"$id":"./components/schemas/UserAddress"},"UserInfo":{"title":"UserInfo","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/UserInfo","description":"Documentation"},"type":"object","properties":{"sub":{"$ref":"#/components/schemas/UserId"},"name":{"$ref":"#/components/schemas/UserName"},"email":{"$ref":"#/components/schemas/UserEmail"},"locale":{"$ref":"#/components/schemas/Locale"},"address":{"$ref":"#/components/schemas/UserAddress"}},"required":["sub"],"additionalProperties":false,"$id":"./components/schemas/UserInfo"},"CacheControl":{"title":"Cache Control","description":"The caching directives for the response.","type":"string","example":"public, max-age=60","$id":"./components/schemas/CacheControl","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/CacheControl","description":"Documentation"}},"AuthorizationServerMetadata":{"title":"Authorization Server Metadata","description":"The OAuth 2.0 Authorization Server Metadata, describing the endpoints and capabilities of this authorization server.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/AuthorizationServerMetadata","description":"Documentation"},"type":"object","properties":{"authorization_endpoint":{"type":"string","format":"uri"},"code_challenge_methods_supported":{"type":"array","items":{"type":"string"}},"grant_types_supported":{"type":"array","items":{"type":"string"}},"issuer":{"type":"string","format":"uri"},"jwks_uri":{"type":"string","format":"uri"},"response_modes_supported":{"type":"array","items":{"type":"string"}},"response_types_supported":{"type":"array","items":{"type":"string"}},"revocation_endpoint":{"type":"string","format":"uri"},"revocation_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}},"service_documentation":{"type":"string","format":"uri"},"token_endpoint":{"type":"string","format":"uri"},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"}},"ui_locales_supported":{"type":"array","items":{"type":"string"}}},"required":["authorization_endpoint","issuer","response_types_supported","token_endpoint"],"additionalProperties":true,"$id":"./components/schemas/AuthorizationServerMetadata"},"OpenIDProviderMetadata":{"title":"OpenID Provider Metadata","description":"The claims the OpenID Connect Discovery document adds to the OAuth 2.0 Authorization Server Metadata.","externalDocs":{"url":"https://developer.hedia.com/services/oauth2/app/components/schemas/OpenIDProviderMetadata","description":"Documentation"},"type":"object","properties":{"acr_values_supported":{"type":"array","items":{"type":"string"}},"claims_supported":{"type":"array","items":{"type":"string"}},"id_token_signing_alg_values_supported":{"type":"array","items":{"type":"string"}},"jwks_uri":{"type":"string","format":"uri"},"prompt_values_supported":{"type":"array","items":{"type":"string"}},"subject_types_supported":{"type":"array","items":{"type":"string"}},"userinfo_endpoint":{"type":"string","format":"uri"}},"required":["id_token_signing_alg_values_supported","jwks_uri","subject_types_supported"],"additionalProperties":true,"$id":"./components/schemas/OpenIDProviderMetadata"}},"parameters":{"AcceptLanguageHeaderParameter":{"name":"accept-language","in":"header","required":false,"schema":{"$ref":"#/components/schemas/AcceptLanguage"}},"AcrValuesQueryParameter":{"name":"acr_values","in":"query","required":false,"schema":{"$ref":"#/components/schemas/AcrValues"}},"ClientIdQueryParameter":{"name":"client_id","in":"query","required":true,"schema":{"$ref":"#/components/schemas/ClientId"}},"CodeChallengeMethodQueryParameter":{"name":"code_challenge_method","in":"query","schema":{"$ref":"#/components/schemas/CodeChallengeMethod"}},"CodeChallengeQueryParameter":{"name":"code_challenge","in":"query","schema":{"$ref":"#/components/schemas/CodeChallenge"}},"InteractionIdQueryParameter":{"name":"interaction_id","in":"query","required":false,"schema":{"$ref":"#/components/schemas/InteractionId"}},"MaxAgeQueryParameter":{"name":"max_age","in":"query","required":false,"schema":{"$ref":"#/components/schemas/MaxAge"}},"PromptQueryParameter":{"name":"prompt","in":"query","schema":{"$ref":"#/components/schemas/Prompt"}},"RedirectUriQueryParameter":{"name":"redirect_uri","in":"query","required":true,"schema":{"$ref":"#/components/schemas/RedirectUri"}},"ResponseTypeQueryParameter":{"name":"response_type","in":"query","required":true,"schema":{"$ref":"#/components/schemas/ResponseType"}},"ScopeQueryParameter":{"name":"scope","in":"query","schema":{"$ref":"#/components/schemas/Scope"}},"StateQueryParameter":{"name":"state","in":"query","schema":{"$ref":"#/components/schemas/State"}},"CsrfTokenCookieParameter":{"name":"CSRFT","in":"cookie","required":true,"schema":{"$ref":"#/components/schemas/CsrfToken"}}},"responses":{"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{}}},"Ok":{"description":"OK","headers":{"Set-Cookie":{"required":false,"schema":{"$ref":"#/components/schemas/SetCookie"}}},"content":{"text/html":{"schema":{"$ref":"#/components/schemas/Html"}}}},"SeeOther":{"description":"See Other","headers":{"Location":{"required":true,"schema":{"$ref":"#/components/schemas/Location"}}}},"BadRequest":{"description":"Bad Request","content":{"application/json":{}}},"Forbidden":{"description":"Forbidden","content":{"text/html":{"schema":{"$ref":"#/components/schemas/Html"}}}},"ClientClosedRequest":{"description":"Client Closed Request"},"Unauthorized":{"description":"Unauthorized","headers":{"WWW-Authenticate":{"required":false,"schema":{"type":"string"}}},"content":{"application/json":{}}},"UserInfo":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserInfo"}}}},"UserInfoUnauthorized":{"description":"Unauthorized","headers":{"WWW-Authenticate":{"required":true,"schema":{"type":"string"}}}}}},"externalDocs":{"url":"https://developer.hedia.com/","description":"Documentation"}}