{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["img","admonition"]},"type":"markdown"},"seo":{"title":"Authorization","description":"Find answers to your technical questions and learn how to integrate Mirakl products.","lang":"en-US","siteUrl":"https://developer.mirakl.com/","keywords":"mirakl, documentation, api","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"authorization","__idx":0},"children":["Authorization"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every call your connector makes to the Mirakl Connect Channel Platform REST APIs is authenticated."," ","This page describes the mechanism that secures those calls:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["how to obtain an access token,"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["how to present it on each request,"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["how to keep it fresh."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The events you receive carry no token of their own."," ","Mirakl Connect publishes them to the queue or the topic you own, and you grant it the permission to publish there."," ","Refer to ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/content/product/connect-channel-platform/developer-guide/receiving-events#choosing-a-destination"},"children":["Receiving events"]},"."]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/authorization.8f77532536d282e7931b34c75d1be7bf638ed8331f92af4f5122eb8bbe62c5e7.0929514f.png","alt":"Authorization","framed":false,"withLightbox":false,"width":"80%","height":"80%","align":"center"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"the-mechanism-oauth2-client-credentials","__idx":1},"children":["The mechanism: OAuth2 client credentials"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Mirakl Connect uses the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["OAuth2 client-credentials grant"]},"."," ","Your connector is a confidential client that acts as itself, with no end user involved."," ","It therefore authenticates with a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["client ID"]}," and a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["client secret"]},", and exchanges them for a short-lived ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["access token"]},"."," ","It then presents that token as a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Bearer token"]}," on every REST call."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Three facts define the whole flow:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Mirakl issues you a client ID and a client secret."]}," ","Mirakl provisions them for you, and you do not register yourself."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["You exchange them for a token at the token endpoint."]}," ","A ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST"]}," to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/oauth/token"]}," endpoint of the Mirakl Authentication System, with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["grant_type=client_credentials"]}," and your credentials, returns a Bearer access token and its lifetime."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["You send the token on every request."]}," ","Each REST call carries the header ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Authorization: Bearer <access_token>"]},"."," ","A request without a valid, unexpired token is rejected with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["401 Unauthorized"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The same client-credentials mechanism, and the same ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Authorization: Bearer"]}," header, secure both hosts your connector talks to: the Mirakl Connect host and the Mirakl Account host."," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/content/product/connect-channel-platform/getting-started/environments"},"children":["Environments"]}," lists the host URLs for each environment."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"requesting-the-api-credentials","__idx":2},"children":["Requesting the API credentials"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before you start, request a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["client ID"]}," and a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["client secret"]}," from your contact in the Mirakl Partner team."," ","Store these credentials securely, because they let your connector generate the access token."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"generating-and-using-the-access-token","__idx":3},"children":["Generating and using the access token"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"generating-the-access-token","__idx":4},"children":["Generating the access token"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To obtain the access token, call the Mirakl Authentication System:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Method: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Endpoint: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://auth.mirakl.net/oauth/token"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Content-Type: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["application/x-www-form-urlencoded"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Parameters, all of them mandatory:",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["grant_type"]},": must be equal to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["client_credentials"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["client_id"]},": your client ID"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["client_secret"]},": your client secret"]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The endpoint above is the production host."," ","In the test environment, use the test authentication host listed in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/content/product/connect-channel-platform/getting-started/environments"},"children":["Environments"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The token request is a standard client-credentials exchange, sent as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["application/x-www-form-urlencoded"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"POST /oauth/token\nContent-Type: application/x-www-form-urlencoded\n\ngrant_type=client_credentials&client_id=<client_id>&client_secret=<client_secret>\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If everything works as expected, the Mirakl Authentication System generates an access token and returns a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["200"]}," status, with a JSON response structured as follows:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"token_type\": \"Bearer\",\n  \"access_token\": \"***********\",\n  \"expires_in\": 3599,\n  \"target_app\": \"\",\n  \"resource_owner\": \"\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Three fields matter:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["token_type"]},": always ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Bearer"]}," in this workflow."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["access_token"]},": the Bearer token you present on every REST call."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expires_in"]},": the token's remaining lifetime, in seconds."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Build your connector's caching and refresh logic around ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expires_in"]},", and request a new token a few minutes before it elapses."," ","Read ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#token-lifecycle"},"children":["Token lifecycle"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"using-the-access-token","__idx":5},"children":["Using the access token"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every REST call to the Channel Platform presents the token on the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Authorization"]}," header:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"POST https://miraklconnect.com/api/channel-platform/<operation-path>\nAuthorization: Bearer <access_token>\nContent-Type: application/json\n\n{ \"...\": \"request body\" }\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"scopes","__idx":6},"children":["Scopes"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Access is not all or nothing."," ","Tokens carry ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["fine-grained scopes, one for each operation"]},", and each REST operation declares the scope it requires."," ","Scopes follow the pattern ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["connect-channel-platform:<area>:<action>"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["These examples come from the current API surface:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["connect-channel-platform:store:write"]}," grants the right to publish a store's business information."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["connect-channel-platform:channel-catalog:configure"]}," grants the right to configure a channel's catalog and taxonomy."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["connect-channel-platform:orders:upsert"]}," grants the right to synchronize the orders."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["connect-channel-platform:order-action:upsert"]}," grants the right to report the outcome of an order action."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["connect-channel-platform:order-returns:upsert"]}," grants the right to synchronize the returns."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your credentials are authorized for the scopes your connector needs, and the token you receive carries those scopes."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If a call returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["403 Forbidden"]}," rather than ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["401"]},", the token was valid but it did not carry the scope the operation requires."," ","That is a problem of authorization, not of authentication."," ","To resolve it, ask your Mirakl partner contact to adjust the scopes associated to your OAuth2 client."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"token-lifecycle","__idx":7},"children":["Token lifecycle"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Access tokens are short-lived by design."," ","Build your connector to obtain a token once, reuse it across many calls, and refresh it only as it nears its expiry."," ","Do ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["not"]}," request a fresh token for each call."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Cache the token."]}," ","Keep the access token and its expiry in memory, or in shared storage if several worker processes call the API."," ","Reuse it for every call until it is close to its expiry."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Refresh ahead of the expiry."]}," ","Treat the token as expired slightly before its real deadline, so that a request never fails in flight on a token that lapses in transit."," ","A ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["leeway of about 300 seconds, which is 5 minutes"]},", before ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expires_in"]}," is a safe margin."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Refresh on a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["401"]},"."]}," ","If a call is rejected with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["401 Unauthorized"]}," even so, discard the cached token, request a new one, and retry the call once."," ","This covers clock skew, and tokens revoked before their nominal expiry."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Serialize the refreshes."]}," ","If many calls run concurrently, make sure that only one refresh happens at a time, rather than every caller requesting its own token when the cached one lapses."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"the-flow-end-to-end","__idx":8},"children":["The flow end to end"]},{"$$mdtype":"Tag","name":"Diagram","attributes":{"data-language":"mermaid","align":"center","diagramType":"mermaid","diagramSource":"sequenceDiagram\n    box rgb(219,234,254) Mirakl\n    participant AS as Mirakl Auth System\n    participant API as Channel Platform API\n    end\n    box rgb(209,250,229) Middleware\n    participant C as Channel Connector\n    end\n\n    Note over C: No valid token cached\n    C->>AS: POST /oauth/token (client id + secret)\n    AS-->>C: access_token + expires_in\n    Note over C: Cache token until (expiry - 300s)\n\n    C->>API: Request + Authorization: Bearer <token>\n    API-->>C: 200 / 202 / 204\n\n    Note over C: Later, the cached token is still fresh\n    C->>API: Another request (reuse cached token)\n    API-->>C: 200 / 202 / 204\n\n    Note over C: Token expired or revoked\n    C->>API: Request + Authorization: Bearer <expired>\n    API-->>C: 401 Unauthorized\n    C->>AS: POST /oauth/token (refresh)\n    AS-->>C: new access_token + expires_in\n    C->>API: Retry request + Bearer <new token>\n    API-->>C: 200 / 202 / 204\n","diagramHtml":"<svg id=\"diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" style=\"max-width: 926.5px;\" viewBox=\"-50 -10 926.5 942\" role=\"graphics-document document\" aria-roledescription=\"sequence\"><style>\n    #diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae foreignObject {\n      overflow: visible;\n    }\n  </style><g><rect x=\"587\" y=\"-5\" fill=\"rgb(209,250,229)\" stroke=\"rgb(0,0,0, 0.5)\" width=\"209\" height=\"936\" class=\"rect\"></rect><text x=\"691.5\" y=\"13.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"text\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"691.5\" dy=\"0\">Middleware</tspan></text></g><g><rect x=\"-20\" y=\"-5\" fill=\"rgb(219,234,254)\" stroke=\"rgb(0,0,0, 0.5)\" width=\"430\" height=\"936\" class=\"rect\"></rect><text x=\"195\" y=\"13.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"text\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"195\" dy=\"0\">Mirakl</tspan></text></g><g><rect x=\"612\" y=\"846\" fill=\"#eaeaea\" stroke=\"#666\" width=\"159\" height=\"65\" name=\"C\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"691.5\" y=\"878.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"691.5\" dy=\"0\">Channel Connector</tspan></text></g><g><rect x=\"212\" y=\"846\" fill=\"#eaeaea\" stroke=\"#666\" width=\"173\" height=\"65\" name=\"API\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"298.5\" y=\"878.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"298.5\" dy=\"0\">Channel Platform API</tspan></text></g><g><rect x=\"5\" y=\"846\" fill=\"#eaeaea\" stroke=\"#666\" width=\"157\" height=\"65\" name=\"AS\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"83.5\" y=\"878.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"83.5\" dy=\"0\">Mirakl Auth System</tspan></text></g><g><line id=\"actor2\" x1=\"691.5\" y1=\"92\" x2=\"691.5\" y2=\"846\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"C\" data-et=\"life-line\" data-id=\"C\"></line><g id=\"root-2\" data-et=\"participant\" data-type=\"participant\" data-id=\"C\"><rect x=\"612\" y=\"27\" fill=\"#eaeaea\" stroke=\"#666\" width=\"159\" height=\"65\" name=\"C\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"691.5\" y=\"59.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"691.5\" dy=\"0\">Channel Connector</tspan></text></g></g><g><line id=\"actor1\" x1=\"298.5\" y1=\"92\" x2=\"298.5\" y2=\"846\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"API\" data-et=\"life-line\" data-id=\"API\"></line><g id=\"root-1\" data-et=\"participant\" data-type=\"participant\" data-id=\"API\"><rect x=\"212\" y=\"27\" fill=\"#eaeaea\" stroke=\"#666\" width=\"173\" height=\"65\" name=\"API\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"298.5\" y=\"59.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"298.5\" dy=\"0\">Channel Platform API</tspan></text></g></g><g><line id=\"actor0\" x1=\"83.5\" y1=\"92\" x2=\"83.5\" y2=\"846\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"AS\" data-et=\"life-line\" data-id=\"AS\"></line><g id=\"root-0\" data-et=\"participant\" data-type=\"participant\" data-id=\"AS\"><rect x=\"5\" y=\"27\" fill=\"#eaeaea\" stroke=\"#666\" width=\"157\" height=\"65\" name=\"AS\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"83.5\" y=\"59.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"83.5\" dy=\"0\">Mirakl Auth System</tspan></text></g></g><style>#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .error-icon{fill:#552222;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .error-text{fill:#552222;stroke:#552222;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .edge-thickness-normal{stroke-width:1px;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .edge-thickness-thick{stroke-width:3.5px;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .edge-pattern-solid{stroke-dasharray:0;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .edge-pattern-dashed{stroke-dasharray:3;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .edge-pattern-dotted{stroke-dasharray:2;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .marker{fill:#333333;stroke:#333333;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .marker.cross{stroke:#333333;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae svg{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae p{margin:0;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .actor{stroke:#9370DB;fill:#ECECFF;stroke-width:1;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae rect.actor.outer-path[data-look=\"neo\"]{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae rect.note[data-look=\"neo\"]{stroke:#aaaa33;fill:#fff5ad;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae text.actor&gt;tspan{fill:black;stroke:none;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .actor-line{stroke:#9370DB;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .innerArc{stroke-width:1.5;stroke-dasharray:none;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae [id$=\"-arrowhead\"] path{fill:#333;stroke:#333;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .sequenceNumber{fill:white;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae [id$=\"-sequencenumber\"]{fill:#333;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae [id$=\"-crosshead\"] path{fill:#333;stroke:#333;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .messageText{fill:#333;stroke:none;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .labelBox{stroke:#9370DB;fill:#ECECFF;filter:none;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .labelText,#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .labelText&gt;tspan{fill:black;stroke:none;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .loopText,#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .loopText&gt;tspan{fill:black;stroke:none;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .sectionTitle,#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .sectionTitle&gt;tspan{fill:black;stroke:none;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:#9370DB;fill:#9370DB;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .note{stroke:#aaaa33;fill:#fff5ad;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .noteText,#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .noteText&gt;tspan{fill:black;stroke:none;font-weight:normal;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .activation0{fill:#f4f4f4;stroke:#666;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .activation1{fill:#f4f4f4;stroke:#666;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .activation2{fill:#f4f4f4;stroke:#666;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .actorPopupMenu{position:absolute;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .actor-man circle,#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae line{fill:#ECECFF;stroke-width:2px;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae g rect.rect{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));stroke:#9370DB;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae .node .neo-node{stroke:#9370DB;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae [data-look=\"neo\"].node rect,#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae [data-look=\"neo\"].cluster rect,#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae [data-look=\"neo\"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae [data-look=\"neo\"].node path{stroke:#9370DB;stroke-width:1px;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae [data-look=\"neo\"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae [data-look=\"neo\"].node .neo-line path{stroke:#9370DB;filter:none;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae [data-look=\"neo\"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae [data-look=\"neo\"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae [data-look=\"neo\"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae :root{--mermaid-font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;}</style><g></g><defs><symbol id=\"diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-computer\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"></path></symbol></defs><defs><symbol id=\"diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-database\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"><path transform=\"scale(.5)\" d=\"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"></path></symbol></defs><defs><symbol id=\"diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-clock\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"></path></symbol></defs><defs><marker id=\"diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-arrowhead\" refX=\"7.9\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M -1 0 L 10 5 L 0 10 z\"></path></marker></defs><defs><marker id=\"diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-crosshead\" markerWidth=\"15\" markerHeight=\"8\" orient=\"auto\" refX=\"4\" refY=\"4.5\"><path fill=\"none\" stroke=\"#000000\" stroke-width=\"1pt\" d=\"M 1,2 L 6,7 M 6,2 L 1,7\" style=\"stroke-dasharray: 0, 0;\"></path></marker></defs><defs><marker id=\"diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-filled-head\" refX=\"15.5\" refY=\"7\" markerWidth=\"20\" markerHeight=\"28\" orient=\"auto\"><path d=\"M 18,7 L9,13 L14,7 L9,1 Z\"></path></marker></defs><defs><marker id=\"diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-sequencenumber\" refX=\"15\" refY=\"15\" markerWidth=\"60\" markerHeight=\"40\" orient=\"auto\"><circle cx=\"15\" cy=\"15\" r=\"6\"></circle></marker></defs><defs><marker id=\"diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-solidTopArrowHead\" refX=\"7.9\" refY=\"7.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 8 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-solidBottomArrowHead\" refX=\"7.9\" refY=\"0.75\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 0 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-stickTopArrowHead\" refX=\"7.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 7 7\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><defs><marker id=\"diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-stickBottomArrowHead\" refX=\"7.5\" refY=\"0\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 7 L 7 0\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><g data-et=\"note\" data-id=\"i0\"><rect x=\"603\" y=\"102\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"177\" height=\"37\" class=\"note\"></rect><text x=\"692\" y=\"107\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"692\">No valid token cached</tspan></text></g><g data-et=\"note\" data-id=\"i3\"><rect x=\"566.5\" y=\"241\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"250\" height=\"38\" class=\"note\"></rect><text x=\"692\" y=\"246\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"692\">Cache token until (expiry - 300s)</tspan></text></g><g data-et=\"note\" data-id=\"i6\"><rect x=\"556.5\" y=\"379\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"270\" height=\"37\" class=\"note\"></rect><text x=\"692\" y=\"384\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"692\">Later, the cached token is still fresh</tspan></text></g><g data-et=\"note\" data-id=\"i9\"><rect x=\"591.5\" y=\"516\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"200\" height=\"38\" class=\"note\"></rect><text x=\"692\" y=\"521\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"692\">Token expired or revoked</tspan></text></g><text x=\"389\" y=\"154\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">POST /oauth/token (client id + secret)</text><line x1=\"690.5\" y1=\"185\" x2=\"87.5\" y2=\"185\" class=\"messageLine0\" data-et=\"message\" data-id=\"i1\" data-from=\"C\" data-to=\"AS\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-arrowhead)\" style=\"fill: none;\"></line><text x=\"386\" y=\"200\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">access_token + expires_in</text><line x1=\"84.5\" y1=\"231\" x2=\"687.5\" y2=\"231\" class=\"messageLine1\" data-et=\"message\" data-id=\"i2\" data-from=\"AS\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"497\" y=\"294\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Request + Authorization: Bearer &lt;token&gt;</text><line x1=\"690.5\" y1=\"325\" x2=\"302.5\" y2=\"325\" class=\"messageLine0\" data-et=\"message\" data-id=\"i4\" data-from=\"C\" data-to=\"API\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-arrowhead)\" style=\"fill: none;\"></line><text x=\"494\" y=\"340\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">200 / 202 / 204</text><line x1=\"299.5\" y1=\"369\" x2=\"687.5\" y2=\"369\" class=\"messageLine1\" data-et=\"message\" data-id=\"i5\" data-from=\"API\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"497\" y=\"431\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Another request (reuse cached token)</text><line x1=\"690.5\" y1=\"462\" x2=\"302.5\" y2=\"462\" class=\"messageLine0\" data-et=\"message\" data-id=\"i7\" data-from=\"C\" data-to=\"API\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-arrowhead)\" style=\"fill: none;\"></line><text x=\"494\" y=\"477\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">200 / 202 / 204</text><line x1=\"299.5\" y1=\"506\" x2=\"687.5\" y2=\"506\" class=\"messageLine1\" data-et=\"message\" data-id=\"i8\" data-from=\"API\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"497\" y=\"569\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Request + Authorization: Bearer &lt;expired&gt;</text><line x1=\"690.5\" y1=\"600\" x2=\"302.5\" y2=\"600\" class=\"messageLine0\" data-et=\"message\" data-id=\"i10\" data-from=\"C\" data-to=\"API\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-arrowhead)\" style=\"fill: none;\"></line><text x=\"494\" y=\"615\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">401 Unauthorized</text><line x1=\"299.5\" y1=\"644\" x2=\"687.5\" y2=\"644\" class=\"messageLine1\" data-et=\"message\" data-id=\"i11\" data-from=\"API\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"389\" y=\"659\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">POST /oauth/token (refresh)</text><line x1=\"690.5\" y1=\"690\" x2=\"87.5\" y2=\"690\" class=\"messageLine0\" data-et=\"message\" data-id=\"i12\" data-from=\"C\" data-to=\"AS\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-arrowhead)\" style=\"fill: none;\"></line><text x=\"386\" y=\"705\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">new access_token + expires_in</text><line x1=\"84.5\" y1=\"736\" x2=\"687.5\" y2=\"736\" class=\"messageLine1\" data-et=\"message\" data-id=\"i13\" data-from=\"AS\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"497\" y=\"751\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Retry request + Bearer &lt;new token&gt;</text><line x1=\"690.5\" y1=\"782\" x2=\"302.5\" y2=\"782\" class=\"messageLine0\" data-et=\"message\" data-id=\"i14\" data-from=\"C\" data-to=\"API\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-arrowhead)\" style=\"fill: none;\"></line><text x=\"494\" y=\"797\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">200 / 202 / 204</text><line x1=\"299.5\" y1=\"826\" x2=\"687.5\" y2=\"826\" class=\"messageLine1\" data-et=\"message\" data-id=\"i15\" data-from=\"API\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-bedb2f6d24f10b340334a2cfbaf7095d455c9918fb86a894a339cd5470bab1ae-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line></svg>","diagramHtmlDark":"<svg id=\"diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" style=\"max-width: 926.5px;\" viewBox=\"-50 -10 926.5 942\" role=\"graphics-document document\" aria-roledescription=\"sequence\"><style>\n    #diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a foreignObject {\n      overflow: visible;\n    }\n  </style><g><rect x=\"587\" y=\"-5\" fill=\"rgb(209,250,229)\" stroke=\"rgb(0,0,0, 0.5)\" width=\"209\" height=\"936\" class=\"rect\"></rect><text x=\"691.5\" y=\"13.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"text\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"691.5\" dy=\"0\">Middleware</tspan></text></g><g><rect x=\"-20\" y=\"-5\" fill=\"rgb(219,234,254)\" stroke=\"rgb(0,0,0, 0.5)\" width=\"430\" height=\"936\" class=\"rect\"></rect><text x=\"195\" y=\"13.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"text\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"195\" dy=\"0\">Mirakl</tspan></text></g><g><rect x=\"612\" y=\"846\" fill=\"#eaeaea\" stroke=\"#666\" width=\"159\" height=\"65\" name=\"C\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"691.5\" y=\"878.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"691.5\" dy=\"0\">Channel Connector</tspan></text></g><g><rect x=\"212\" y=\"846\" fill=\"#eaeaea\" stroke=\"#666\" width=\"173\" height=\"65\" name=\"API\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"298.5\" y=\"878.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"298.5\" dy=\"0\">Channel Platform API</tspan></text></g><g><rect x=\"5\" y=\"846\" fill=\"#eaeaea\" stroke=\"#666\" width=\"157\" height=\"65\" name=\"AS\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"83.5\" y=\"878.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"83.5\" dy=\"0\">Mirakl Auth System</tspan></text></g><g><line id=\"actor2\" x1=\"691.5\" y1=\"92\" x2=\"691.5\" y2=\"846\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"C\" data-et=\"life-line\" data-id=\"C\"></line><g id=\"root-2\" data-et=\"participant\" data-type=\"participant\" data-id=\"C\"><rect x=\"612\" y=\"27\" fill=\"#eaeaea\" stroke=\"#666\" width=\"159\" height=\"65\" name=\"C\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"691.5\" y=\"59.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"691.5\" dy=\"0\">Channel Connector</tspan></text></g></g><g><line id=\"actor1\" x1=\"298.5\" y1=\"92\" x2=\"298.5\" y2=\"846\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"API\" data-et=\"life-line\" data-id=\"API\"></line><g id=\"root-1\" data-et=\"participant\" data-type=\"participant\" data-id=\"API\"><rect x=\"212\" y=\"27\" fill=\"#eaeaea\" stroke=\"#666\" width=\"173\" height=\"65\" name=\"API\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"298.5\" y=\"59.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"298.5\" dy=\"0\">Channel Platform API</tspan></text></g></g><g><line id=\"actor0\" x1=\"83.5\" y1=\"92\" x2=\"83.5\" y2=\"846\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"AS\" data-et=\"life-line\" data-id=\"AS\"></line><g id=\"root-0\" data-et=\"participant\" data-type=\"participant\" data-id=\"AS\"><rect x=\"5\" y=\"27\" fill=\"#eaeaea\" stroke=\"#666\" width=\"157\" height=\"65\" name=\"AS\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"83.5\" y=\"59.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"83.5\" dy=\"0\">Mirakl Auth System</tspan></text></g></g><style>#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .error-icon{fill:#a44141;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .error-text{fill:#ddd;stroke:#ddd;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .edge-thickness-normal{stroke-width:1px;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .edge-thickness-thick{stroke-width:3.5px;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .edge-pattern-solid{stroke-dasharray:0;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .edge-pattern-dashed{stroke-dasharray:3;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .edge-pattern-dotted{stroke-dasharray:2;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .marker{fill:lightgrey;stroke:lightgrey;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .marker.cross{stroke:lightgrey;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a svg{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a p{margin:0;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .actor{stroke:#ccc;fill:#1f2020;stroke-width:1;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a rect.actor.outer-path[data-look=\"neo\"]{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a rect.note[data-look=\"neo\"]{stroke:hsl(180, 0%, 18.3529411765%);fill:hsl(180, 1.5873015873%, 28.3529411765%);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a text.actor&gt;tspan{fill:lightgrey;stroke:none;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .actor-line{stroke:#ccc;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .innerArc{stroke-width:1.5;stroke-dasharray:none;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:lightgrey;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:lightgrey;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a [id$=\"-arrowhead\"] path{fill:lightgrey;stroke:lightgrey;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .sequenceNumber{fill:black;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a [id$=\"-sequencenumber\"]{fill:lightgrey;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a [id$=\"-crosshead\"] path{fill:lightgrey;stroke:lightgrey;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .messageText{fill:lightgrey;stroke:none;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .labelBox{stroke:#ccc;fill:#1f2020;filter:none;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .labelText,#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .labelText&gt;tspan{fill:lightgrey;stroke:none;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .loopText,#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .loopText&gt;tspan{fill:lightgrey;stroke:none;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .sectionTitle,#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .sectionTitle&gt;tspan{fill:lightgrey;stroke:none;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:#ccc;fill:#ccc;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .note{stroke:hsl(180, 0%, 18.3529411765%);fill:hsl(180, 1.5873015873%, 28.3529411765%);}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .noteText,#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .noteText&gt;tspan{fill:rgb(183.8476190475, 181.5523809523, 181.5523809523);stroke:none;font-weight:normal;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .activation0{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:#ccc;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .activation1{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:#ccc;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .activation2{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:#ccc;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .actorPopupMenu{position:absolute;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .actorPopupMenuPanel{position:absolute;fill:#1f2020;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .actor-man circle,#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a line{fill:#1f2020;stroke-width:2px;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a g rect.rect{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));stroke:#ccc;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a .node .neo-node{stroke:#ccc;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a [data-look=\"neo\"].node rect,#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a [data-look=\"neo\"].cluster rect,#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a [data-look=\"neo\"].node polygon{stroke:url(#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a [data-look=\"neo\"].node path{stroke:url(#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-gradient);stroke-width:1px;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a [data-look=\"neo\"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a [data-look=\"neo\"].node .neo-line path{stroke:#ccc;filter:none;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a [data-look=\"neo\"].node circle{stroke:url(#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a [data-look=\"neo\"].icon-shape .icon{fill:url(#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a [data-look=\"neo\"].icon-shape .icon-neo path{stroke:url(#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a :root{--mermaid-font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;}</style><g></g><defs><symbol id=\"diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-computer\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"></path></symbol></defs><defs><symbol id=\"diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-database\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"><path transform=\"scale(.5)\" d=\"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"></path></symbol></defs><defs><symbol id=\"diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-clock\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"></path></symbol></defs><defs><marker id=\"diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-arrowhead\" refX=\"7.9\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M -1 0 L 10 5 L 0 10 z\"></path></marker></defs><defs><marker id=\"diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-crosshead\" markerWidth=\"15\" markerHeight=\"8\" orient=\"auto\" refX=\"4\" refY=\"4.5\"><path fill=\"none\" stroke=\"#000000\" stroke-width=\"1pt\" d=\"M 1,2 L 6,7 M 6,2 L 1,7\" style=\"stroke-dasharray: 0, 0;\"></path></marker></defs><defs><marker id=\"diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-filled-head\" refX=\"15.5\" refY=\"7\" markerWidth=\"20\" markerHeight=\"28\" orient=\"auto\"><path d=\"M 18,7 L9,13 L14,7 L9,1 Z\"></path></marker></defs><defs><marker id=\"diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-sequencenumber\" refX=\"15\" refY=\"15\" markerWidth=\"60\" markerHeight=\"40\" orient=\"auto\"><circle cx=\"15\" cy=\"15\" r=\"6\"></circle></marker></defs><defs><marker id=\"diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-solidTopArrowHead\" refX=\"7.9\" refY=\"7.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 8 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-solidBottomArrowHead\" refX=\"7.9\" refY=\"0.75\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 0 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-stickTopArrowHead\" refX=\"7.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 7 7\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><defs><marker id=\"diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-stickBottomArrowHead\" refX=\"7.5\" refY=\"0\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 7 L 7 0\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><g data-et=\"note\" data-id=\"i0\"><rect x=\"603\" y=\"102\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"177\" height=\"37\" class=\"note\"></rect><text x=\"692\" y=\"107\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"692\">No valid token cached</tspan></text></g><g data-et=\"note\" data-id=\"i3\"><rect x=\"566.5\" y=\"241\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"250\" height=\"38\" class=\"note\"></rect><text x=\"692\" y=\"246\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"692\">Cache token until (expiry - 300s)</tspan></text></g><g data-et=\"note\" data-id=\"i6\"><rect x=\"556.5\" y=\"379\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"270\" height=\"37\" class=\"note\"></rect><text x=\"692\" y=\"384\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"692\">Later, the cached token is still fresh</tspan></text></g><g data-et=\"note\" data-id=\"i9\"><rect x=\"591.5\" y=\"516\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"200\" height=\"38\" class=\"note\"></rect><text x=\"692\" y=\"521\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"692\">Token expired or revoked</tspan></text></g><text x=\"389\" y=\"154\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">POST /oauth/token (client id + secret)</text><line x1=\"690.5\" y1=\"185\" x2=\"87.5\" y2=\"185\" class=\"messageLine0\" data-et=\"message\" data-id=\"i1\" data-from=\"C\" data-to=\"AS\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-arrowhead)\" style=\"fill: none;\"></line><text x=\"386\" y=\"200\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">access_token + expires_in</text><line x1=\"84.5\" y1=\"231\" x2=\"687.5\" y2=\"231\" class=\"messageLine1\" data-et=\"message\" data-id=\"i2\" data-from=\"AS\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"497\" y=\"294\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Request + Authorization: Bearer &lt;token&gt;</text><line x1=\"690.5\" y1=\"325\" x2=\"302.5\" y2=\"325\" class=\"messageLine0\" data-et=\"message\" data-id=\"i4\" data-from=\"C\" data-to=\"API\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-arrowhead)\" style=\"fill: none;\"></line><text x=\"494\" y=\"340\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">200 / 202 / 204</text><line x1=\"299.5\" y1=\"369\" x2=\"687.5\" y2=\"369\" class=\"messageLine1\" data-et=\"message\" data-id=\"i5\" data-from=\"API\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"497\" y=\"431\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Another request (reuse cached token)</text><line x1=\"690.5\" y1=\"462\" x2=\"302.5\" y2=\"462\" class=\"messageLine0\" data-et=\"message\" data-id=\"i7\" data-from=\"C\" data-to=\"API\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-arrowhead)\" style=\"fill: none;\"></line><text x=\"494\" y=\"477\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">200 / 202 / 204</text><line x1=\"299.5\" y1=\"506\" x2=\"687.5\" y2=\"506\" class=\"messageLine1\" data-et=\"message\" data-id=\"i8\" data-from=\"API\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"497\" y=\"569\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Request + Authorization: Bearer &lt;expired&gt;</text><line x1=\"690.5\" y1=\"600\" x2=\"302.5\" y2=\"600\" class=\"messageLine0\" data-et=\"message\" data-id=\"i10\" data-from=\"C\" data-to=\"API\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-arrowhead)\" style=\"fill: none;\"></line><text x=\"494\" y=\"615\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">401 Unauthorized</text><line x1=\"299.5\" y1=\"644\" x2=\"687.5\" y2=\"644\" class=\"messageLine1\" data-et=\"message\" data-id=\"i11\" data-from=\"API\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"389\" y=\"659\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">POST /oauth/token (refresh)</text><line x1=\"690.5\" y1=\"690\" x2=\"87.5\" y2=\"690\" class=\"messageLine0\" data-et=\"message\" data-id=\"i12\" data-from=\"C\" data-to=\"AS\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-arrowhead)\" style=\"fill: none;\"></line><text x=\"386\" y=\"705\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">new access_token + expires_in</text><line x1=\"84.5\" y1=\"736\" x2=\"687.5\" y2=\"736\" class=\"messageLine1\" data-et=\"message\" data-id=\"i13\" data-from=\"AS\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"497\" y=\"751\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Retry request + Bearer &lt;new token&gt;</text><line x1=\"690.5\" y1=\"782\" x2=\"302.5\" y2=\"782\" class=\"messageLine0\" data-et=\"message\" data-id=\"i14\" data-from=\"C\" data-to=\"API\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-arrowhead)\" style=\"fill: none;\"></line><text x=\"494\" y=\"797\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">200 / 202 / 204</text><line x1=\"299.5\" y1=\"826\" x2=\"687.5\" y2=\"826\" class=\"messageLine1\" data-et=\"message\" data-id=\"i15\" data-from=\"API\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-82591d706964dd91f24df72954409b0c92ea9c5c7b687299abc13717ab30da1a-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line></svg>"},"children":["sequenceDiagram\n    box rgb(219,234,254) Mirakl\n    participant AS as Mirakl Auth System\n    participant API as Channel Platform API\n    end\n    box rgb(209,250,229) Middleware\n    participant C as Channel Connector\n    end\n\n    Note over C: No valid token cached\n    C->>AS: POST /oauth/token (client id + secret)\n    AS-->>C: access_token + expires_in\n    Note over C: Cache token until (expiry - 300s)\n\n    C->>API: Request + Authorization: Bearer <token>\n    API-->>C: 200 / 202 / 204\n\n    Note over C: Later, the cached token is still fresh\n    C->>API: Another request (reuse cached token)\n    API-->>C: 200 / 202 / 204\n\n    Note over C: Token expired or revoked\n    C->>API: Request + Authorization: Bearer <expired>\n    API-->>C: 401 Unauthorized\n    C->>AS: POST /oauth/token (refresh)\n    AS-->>C: new access_token + expires_in\n    C->>API: Retry request + Bearer <new token>\n    API-->>C: 200 / 202 / 204\n"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"rotating-credentials","__idx":9},"children":["Rotating credentials"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["access token"]}," rotates automatically, because it is short-lived and your connector fetches it again as described above."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["client secret"]}," is a long-lived credential."," ","Treat it like any other secret: store it encrypted, never commit it to source control, never log it, and rotate it periodically."," ","Your contact in the Mirakl Partner team issues a new client secret."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related-pages","__idx":10},"children":["Related pages"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/content/product/connect-channel-platform/developer-guide/calling-the-apis"},"children":["Calling the APIs"]},": where to present the token, and the two hosts the calls are split across."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/content/product/connect-channel-platform/getting-started/prerequisite-resources"},"children":["Get access"]},": how you obtain the client credentials in the first place."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/content/product/connect-channel-platform/getting-started/environments"},"children":["Environments"]},": the test and production token endpoints."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/content/product/connect-channel-platform/developer-guide/best-practices"},"children":["Best practices"]},": how to handle a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["401"]}," against a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["403"]},", and what to log about each."]}]}]},"headings":[{"value":"Authorization","id":"authorization","depth":1},{"value":"The mechanism: OAuth2 client credentials","id":"the-mechanism-oauth2-client-credentials","depth":2},{"value":"Requesting the API credentials","id":"requesting-the-api-credentials","depth":2},{"value":"Generating and using the access token","id":"generating-and-using-the-access-token","depth":2},{"value":"Generating the access token","id":"generating-the-access-token","depth":3},{"value":"Using the access token","id":"using-the-access-token","depth":3},{"value":"Scopes","id":"scopes","depth":2},{"value":"Token lifecycle","id":"token-lifecycle","depth":2},{"value":"The flow end to end","id":"the-flow-end-to-end","depth":3},{"value":"Rotating credentials","id":"rotating-credentials","depth":2},{"value":"Related pages","id":"related-pages","depth":2}],"frontmatter":{"seo":{"title":"Authorization"}},"lastModified":"2026-08-28T13:10:01.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/content/product/connect-channel-platform/developer-guide/authorization","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}