{
    "variable": [
        {
            "id": "baseUrl",
            "key": "baseUrl",
            "type": "string",
            "name": "string",
            "value": "https:\/\/api.linkedwellness.ie"
        }
    ],
    "info": {
        "name": "Linked Wellbeing API Documentation",
        "_postman_id": "3035dff1-1578-4cc3-941f-c98be3616489",
        "description": "API documentation for Linked Wellness, including the V2 embedded-delivery SSO endpoints used by partner integrations.",
        "schema": "https:\/\/schema.getpostman.com\/json\/collection\/v2.1.0\/collection.json"
    },
    "item": [
        {
            "name": "V2 - Partner SSO",
            "description": "\nServer-to-server handoff that signs a member of your platform into their Linked\nWellness account without a password or registration form.\n\n**Sequence:**\n\n1. A member opens the embedded wellbeing product inside your platform.\n2. Your **backend** mints a short-lived HS256 JWT assertion and POSTs it to the\n   handoff endpoint below. Never do this from the browser \u2014 the shared secret\n   must not leave your servers.\n3. We verify the assertion, create or match the member's account, and return a\n   single-use `consume_url` (valid for 60 seconds).\n4. Your platform redirects the member's **browser** (top-level or iframe) to that\n   `consume_url`. That request sets the session cookie and lands them on their\n   dashboard \u2014 no further action from your side.\n\nAll error responses include a stable machine-readable `error` code (see the\nError catalog in the introduction) alongside a human-readable `message`.",
            "item": [
                {
                    "name": "Verify a member assertion and issue a one-time consume URL.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v2\/partners\/:partner\/sso",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v2\/partners\/:partner\/sso",
                            "variable": [
                                {
                                    "id": "partner",
                                    "key": "partner",
                                    "value": "acme",
                                    "description": "Partner slug issued to you during onboarding."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"assertion\":\"eyJhbGciOiJIUzI1NiJ9...\"}"
                        },
                        "description": "Rate limited to 30 requests per minute per IP; expect `429 Too Many Requests`\nwith a `Retry-After` header beyond that.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"consume_url\": \"https:\/\/example.linkedwellness.ie\/partner-sso\/consume?token=Xy82jbqT...\"\n}",
                            "name": "Assertion accepted"
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"error\": \"invalid_assertion\",\n  \"message\": \"The assertion signature is invalid or the token is malformed. Check the shared secret and HS256 signing.\"\n}",
                            "name": "Bad signature or malformed token"
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"error\": \"assertion_expired\",\n  \"message\": \"The assertion iat is missing or older than 90 seconds. Mint assertions immediately before posting them.\"\n}",
                            "name": "Assertion too old (iat\/exp)"
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"error\": \"assertion_replayed\",\n  \"message\": \"This assertion jti has already been used. Mint a new assertion with a fresh jti for every handoff.\"\n}",
                            "name": "jti reused"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"error\": \"integration_disabled\",\n  \"message\": \"This partner integration is currently disabled. Contact support.\"\n}",
                            "name": "Integration disabled"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"error\": \"unknown_partner\",\n  \"message\": \"Unknown partner \\\"acme\\\".\"\n}",
                            "name": "Unknown partner slug"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The assertion field is required.\",\n  \"errors\": { \"assertion\": [\"The assertion field is required.\"] }\n}",
                            "name": "Missing assertion field"
                        },
                        {
                            "header": [],
                            "code": 429,
                            "body": "{\n  \"message\": \"Too Many Attempts.\"\n}",
                            "name": "Rate limited"
                        }
                    ]
                },
                {
                    "name": "Consume a one-time sign-in link (browser navigation).",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "partner-sso\/consume",
                            "query": [
                                {
                                    "key": "token",
                                    "value": "Xy82jbqT...",
                                    "description": "The one-time token from `consume_url`, exactly as returned.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/partner-sso\/consume?token=Xy82jbqT..."
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "This is the URL returned by the handoff endpoint. It is **not an API call**:\nredirect the member's browser (top-level or iframe) to it as-is. It always\nresponds with a `302` redirect and never returns JSON.\n\nBehavior:\n- **Valid token** \u2014 the member's session is established (cookie set for the\n  tenant domain) and the browser is redirected to `\/dashboard`. On their very\n  first visit they may be asked to pick a life stage before the dashboard.\n- **Expired, reused, or unknown token** \u2014 redirected to the login page with a\n  friendly \"sign-in link has expired\" notice. Tokens are single-use and expire\n  60 seconds after issue, so redirect promptly and never cache or reuse a\n  consume URL; recover by requesting a fresh handoff.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 302,
                            "body": "{}",
                            "name": "Valid token: session established, redirect to \/dashboard"
                        },
                        {
                            "header": [],
                            "code": 302,
                            "body": "{}",
                            "name": "Expired\/reused token: redirect to \/login with an explanatory notice"
                        },
                        {
                            "header": [
                                {
                                    "key": "retry-after",
                                    "value": "60"
                                },
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                }
                            ],
                            "code": 503,
                            "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <meta http-equiv=\"refresh\" content=\"60\">\n    <title>Under maintenance - Linked Wellness<\/title>\n    <style>\n        * { box-sizing: border-box; }\n        :root {\n            --primary: #165d65;\n            --accent: #00b08b;\n            --background-start: #effcf9;\n            --background-end: #d9f7f0;\n            --surface: #ffffff;\n            --text: #0f172a;\n            --muted: #475569;\n            --border: rgba(15, 23, 42, 0.08);\n        }\n        body {\n            margin: 0;\n            min-height: 100vh;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            padding: 1.5rem;\n            font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n            color: var(--text);\n            background:\n                radial-gradient(circle at top, rgba(255, 255, 255, 0.95), transparent 35%),\n                linear-gradient(135deg, var(--background-start), var(--background-end));\n            -webkit-font-smoothing: antialiased;\n        }\n        .card {\n            width: 100%;\n            max-width: 34rem;\n            border-radius: 1.5rem;\n            border: 1px solid var(--border);\n            background: var(--surface);\n            padding: 2rem;\n            text-align: center;\n            box-shadow: 0 24px 60px rgba(15, 23, 42, 0.12);\n        }\n        .logo-wrap {\n            display: flex;\n            justify-content: center;\n            margin-bottom: 1.5rem;\n        }\n        .logo {\n            display: block;\n            max-width: min(100%, 16rem);\n            max-height: 4rem;\n            width: auto;\n            height: auto;\n        }\n        .eyebrow {\n            display: inline-flex;\n            align-items: center;\n            gap: 0.5rem;\n            border-radius: 9999px;\n            padding: 0.45rem 0.85rem;\n            background: color-mix(in srgb, var(--accent) 10%, white);\n            color: var(--primary);\n            font-size: 0.875rem;\n            font-weight: 700;\n            letter-spacing: 0.03em;\n            text-transform: uppercase;\n        }\n        h1 {\n            margin: 1.25rem 0 0.75rem;\n            color: var(--primary);\n            font-size: clamp(1.75rem, 4vw, 2.35rem);\n            line-height: 1.15;\n        }\n        p {\n            margin: 0;\n            color: var(--muted);\n            font-size: 1rem;\n            line-height: 1.7;\n        }\n        .retry {\n            margin-top: 1.25rem;\n            color: var(--primary);\n            font-size: 0.9375rem;\n            font-weight: 600;\n        }\n        .maintenance-progress-wrap {\n            margin-top: 1.5rem;\n            text-align: left;\n        }\n        .maintenance-progress-label {\n            display: flex;\n            justify-content: space-between;\n            align-items: baseline;\n            gap: 0.75rem;\n            margin-bottom: 0.5rem;\n            font-size: 0.875rem;\n            color: var(--muted);\n        }\n        .maintenance-progress-label strong {\n            color: var(--primary);\n            font-weight: 700;\n        }\n        .maintenance-track {\n            height: 0.5rem;\n            border-radius: 9999px;\n            background: color-mix(in srgb, var(--primary) 10%, white);\n            overflow: hidden;\n        }\n        .maintenance-bar {\n            height: 100%;\n            width: 0%;\n            border-radius: 9999px;\n            background: linear-gradient(90deg, var(--primary), var(--accent));\n            transition: width 0.25s linear;\n        }\n        .maintenance-eta {\n            margin-top: 0.75rem;\n            font-size: 0.875rem;\n            color: var(--muted);\n        }\n        .maintenance-eta strong {\n            color: var(--text);\n            font-weight: 600;\n        }\n        .maintenance-eta-local {\n            color: var(--muted);\n            font-weight: 400;\n        }\n        .divider {\n            width: 4rem;\n            height: 0.25rem;\n            margin: 1.25rem auto 1.5rem;\n            border-radius: 9999px;\n            background: linear-gradient(90deg, var(--primary), var(--accent));\n        }\n        @media (max-width: 640px) {\n            .card {\n                padding: 1.5rem;\n                border-radius: 1.25rem;\n            }\n            .logo {\n                max-width: 12rem;\n                max-height: 3.25rem;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n    <div class=\"card\">\n        <div class=\"logo-wrap\">\n            <img class=\"logo\" src=\"\/images\/Linked_Wellness_Logo_CMYK_Colour_Positive_Horizontal.svg\" alt=\"Linked Wellness\">\n        <\/div>\n        <div class=\"eyebrow\">Scheduled maintenance<\/div>\n        <h1>We\u2019ll be back shortly<\/h1>\n        <div class=\"divider\"><\/div>\n        <p>Linked Wellness is currently carrying out a short update. We\u2019ll check whether the site is back automatically; you can also refresh the page anytime.<\/p>\n        <div class=\"maintenance-progress-wrap\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n            <div class=\"maintenance-progress-label\">\n                <span>Checking again in<\/span>\n                <strong id=\"maintenance-countdown\">\u2014<\/strong>\n            <\/div>\n            <div class=\"maintenance-track\" aria-hidden=\"true\">\n                <div class=\"maintenance-bar\" id=\"maintenance-bar\"><\/div>\n            <\/div>\n            <p class=\"maintenance-eta\" id=\"maintenance-eta-line\">\n                <strong>Approximate time back:<\/strong>\n                <span id=\"maintenance-eta\">\u2014<\/span>\n                <span class=\"maintenance-eta-local\"> (your local time)<\/span>\n            <\/p>\n        <\/div>\n        <p class=\"retry\" id=\"maintenance-refresh-note\">This page will reload automatically when the timer ends.<\/p>\n    <\/div>\n    <script>\n        (function () {\n            var total = 60;\n            var bar = document.getElementById('maintenance-bar');\n            var countdownEl = document.getElementById('maintenance-countdown');\n            var etaEl = document.getElementById('maintenance-eta');\n            var started = Date.now();\n            function pad(n) { return n < 10 ? '0' + n : String(n); }\n            function formatRemaining(sec) {\n                if (sec <= 0) return '0:00';\n                var m = Math.floor(sec \/ 60);\n                var s = sec % 60;\n                return m > 0 ? m + ':' + pad(s) : '0:' + pad(s);\n            }\n            function tick() {\n                var elapsed = Math.floor((Date.now() - started) \/ 1000);\n                var left = Math.max(0, total - elapsed);\n                var pct = total > 0 ? Math.min(100, (elapsed \/ total) * 100) : 100;\n                if (bar) bar.style.width = pct + '%';\n                if (countdownEl) countdownEl.textContent = formatRemaining(left);\n                if (etaEl) {\n                    var eta = new Date(Date.now() + left * 1000);\n                    etaEl.textContent = eta.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' });\n                }\n                if (left <= 0) {\n                    window.location.reload();\n                    return;\n                }\n                setTimeout(tick, 250);\n            }\n            tick();\n        })();\n    <\/script>\n<\/body>\n<\/html>\n ",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "V1 - Content",
            "description": "\nRead-only content API. All endpoints require an API key, sent as an\n`X-API-Key` header (preferred) or an `api_key` query parameter.",
            "item": [
                {
                    "name": "List content",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/content",
                            "query": [
                                {
                                    "key": "website_env",
                                    "value": "all",
                                    "description": "Filter by website environment (your environment identifier is provided during onboarding), or `all`.",
                                    "disabled": false
                                },
                                {
                                    "key": "route",
                                    "value": "\/",
                                    "description": "Filter by route path.",
                                    "disabled": false
                                },
                                {
                                    "key": "type",
                                    "value": "page",
                                    "description": "Filter by content type.",
                                    "disabled": false
                                },
                                {
                                    "key": "key",
                                    "value": "welcome.title",
                                    "description": "Filter by content key.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/content?website_env=all&route=%2F&type=page&key=welcome.title"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "retry-after",
                                    "value": "60"
                                },
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 503,
                            "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <meta http-equiv=\"refresh\" content=\"60\">\n    <title>Under maintenance - Linked Wellness<\/title>\n    <style>\n        * { box-sizing: border-box; }\n        :root {\n            --primary: #165d65;\n            --accent: #00b08b;\n            --background-start: #effcf9;\n            --background-end: #d9f7f0;\n            --surface: #ffffff;\n            --text: #0f172a;\n            --muted: #475569;\n            --border: rgba(15, 23, 42, 0.08);\n        }\n        body {\n            margin: 0;\n            min-height: 100vh;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            padding: 1.5rem;\n            font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n            color: var(--text);\n            background:\n                radial-gradient(circle at top, rgba(255, 255, 255, 0.95), transparent 35%),\n                linear-gradient(135deg, var(--background-start), var(--background-end));\n            -webkit-font-smoothing: antialiased;\n        }\n        .card {\n            width: 100%;\n            max-width: 34rem;\n            border-radius: 1.5rem;\n            border: 1px solid var(--border);\n            background: var(--surface);\n            padding: 2rem;\n            text-align: center;\n            box-shadow: 0 24px 60px rgba(15, 23, 42, 0.12);\n        }\n        .logo-wrap {\n            display: flex;\n            justify-content: center;\n            margin-bottom: 1.5rem;\n        }\n        .logo {\n            display: block;\n            max-width: min(100%, 16rem);\n            max-height: 4rem;\n            width: auto;\n            height: auto;\n        }\n        .eyebrow {\n            display: inline-flex;\n            align-items: center;\n            gap: 0.5rem;\n            border-radius: 9999px;\n            padding: 0.45rem 0.85rem;\n            background: color-mix(in srgb, var(--accent) 10%, white);\n            color: var(--primary);\n            font-size: 0.875rem;\n            font-weight: 700;\n            letter-spacing: 0.03em;\n            text-transform: uppercase;\n        }\n        h1 {\n            margin: 1.25rem 0 0.75rem;\n            color: var(--primary);\n            font-size: clamp(1.75rem, 4vw, 2.35rem);\n            line-height: 1.15;\n        }\n        p {\n            margin: 0;\n            color: var(--muted);\n            font-size: 1rem;\n            line-height: 1.7;\n        }\n        .retry {\n            margin-top: 1.25rem;\n            color: var(--primary);\n            font-size: 0.9375rem;\n            font-weight: 600;\n        }\n        .maintenance-progress-wrap {\n            margin-top: 1.5rem;\n            text-align: left;\n        }\n        .maintenance-progress-label {\n            display: flex;\n            justify-content: space-between;\n            align-items: baseline;\n            gap: 0.75rem;\n            margin-bottom: 0.5rem;\n            font-size: 0.875rem;\n            color: var(--muted);\n        }\n        .maintenance-progress-label strong {\n            color: var(--primary);\n            font-weight: 700;\n        }\n        .maintenance-track {\n            height: 0.5rem;\n            border-radius: 9999px;\n            background: color-mix(in srgb, var(--primary) 10%, white);\n            overflow: hidden;\n        }\n        .maintenance-bar {\n            height: 100%;\n            width: 0%;\n            border-radius: 9999px;\n            background: linear-gradient(90deg, var(--primary), var(--accent));\n            transition: width 0.25s linear;\n        }\n        .maintenance-eta {\n            margin-top: 0.75rem;\n            font-size: 0.875rem;\n            color: var(--muted);\n        }\n        .maintenance-eta strong {\n            color: var(--text);\n            font-weight: 600;\n        }\n        .maintenance-eta-local {\n            color: var(--muted);\n            font-weight: 400;\n        }\n        .divider {\n            width: 4rem;\n            height: 0.25rem;\n            margin: 1.25rem auto 1.5rem;\n            border-radius: 9999px;\n            background: linear-gradient(90deg, var(--primary), var(--accent));\n        }\n        @media (max-width: 640px) {\n            .card {\n                padding: 1.5rem;\n                border-radius: 1.25rem;\n            }\n            .logo {\n                max-width: 12rem;\n                max-height: 3.25rem;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n    <div class=\"card\">\n        <div class=\"logo-wrap\">\n            <img class=\"logo\" src=\"\/images\/Linked_Wellness_Logo_CMYK_Colour_Positive_Horizontal.svg\" alt=\"Linked Wellness\">\n        <\/div>\n        <div class=\"eyebrow\">Scheduled maintenance<\/div>\n        <h1>We\u2019ll be back shortly<\/h1>\n        <div class=\"divider\"><\/div>\n        <p>Linked Wellness is currently carrying out a short update. We\u2019ll check whether the site is back automatically; you can also refresh the page anytime.<\/p>\n        <div class=\"maintenance-progress-wrap\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n            <div class=\"maintenance-progress-label\">\n                <span>Checking again in<\/span>\n                <strong id=\"maintenance-countdown\">\u2014<\/strong>\n            <\/div>\n            <div class=\"maintenance-track\" aria-hidden=\"true\">\n                <div class=\"maintenance-bar\" id=\"maintenance-bar\"><\/div>\n            <\/div>\n            <p class=\"maintenance-eta\" id=\"maintenance-eta-line\">\n                <strong>Approximate time back:<\/strong>\n                <span id=\"maintenance-eta\">\u2014<\/span>\n                <span class=\"maintenance-eta-local\"> (your local time)<\/span>\n            <\/p>\n        <\/div>\n        <p class=\"retry\" id=\"maintenance-refresh-note\">This page will reload automatically when the timer ends.<\/p>\n    <\/div>\n    <script>\n        (function () {\n            var total = 60;\n            var bar = document.getElementById('maintenance-bar');\n            var countdownEl = document.getElementById('maintenance-countdown');\n            var etaEl = document.getElementById('maintenance-eta');\n            var started = Date.now();\n            function pad(n) { return n < 10 ? '0' + n : String(n); }\n            function formatRemaining(sec) {\n                if (sec <= 0) return '0:00';\n                var m = Math.floor(sec \/ 60);\n                var s = sec % 60;\n                return m > 0 ? m + ':' + pad(s) : '0:' + pad(s);\n            }\n            function tick() {\n                var elapsed = Math.floor((Date.now() - started) \/ 1000);\n                var left = Math.max(0, total - elapsed);\n                var pct = total > 0 ? Math.min(100, (elapsed \/ total) * 100) : 100;\n                if (bar) bar.style.width = pct + '%';\n                if (countdownEl) countdownEl.textContent = formatRemaining(left);\n                if (etaEl) {\n                    var eta = new Date(Date.now() + left * 1000);\n                    etaEl.textContent = eta.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' });\n                }\n                if (left <= 0) {\n                    window.location.reload();\n                    return;\n                }\n                setTimeout(tick, 250);\n            }\n            tick();\n        })();\n    <\/script>\n<\/body>\n<\/html>\n ",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get content by route",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/content\/route\/:route",
                            "query": [
                                {
                                    "key": "website_env",
                                    "value": "all",
                                    "description": "Filter by website environment, or `all`.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/content\/route\/:route?website_env=all",
                            "variable": [
                                {
                                    "id": "route",
                                    "key": "route",
                                    "value": "\/",
                                    "description": "The route path."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "retry-after",
                                    "value": "60"
                                },
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 503,
                            "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <meta http-equiv=\"refresh\" content=\"60\">\n    <title>Under maintenance - Linked Wellness<\/title>\n    <style>\n        * { box-sizing: border-box; }\n        :root {\n            --primary: #165d65;\n            --accent: #00b08b;\n            --background-start: #effcf9;\n            --background-end: #d9f7f0;\n            --surface: #ffffff;\n            --text: #0f172a;\n            --muted: #475569;\n            --border: rgba(15, 23, 42, 0.08);\n        }\n        body {\n            margin: 0;\n            min-height: 100vh;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            padding: 1.5rem;\n            font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n            color: var(--text);\n            background:\n                radial-gradient(circle at top, rgba(255, 255, 255, 0.95), transparent 35%),\n                linear-gradient(135deg, var(--background-start), var(--background-end));\n            -webkit-font-smoothing: antialiased;\n        }\n        .card {\n            width: 100%;\n            max-width: 34rem;\n            border-radius: 1.5rem;\n            border: 1px solid var(--border);\n            background: var(--surface);\n            padding: 2rem;\n            text-align: center;\n            box-shadow: 0 24px 60px rgba(15, 23, 42, 0.12);\n        }\n        .logo-wrap {\n            display: flex;\n            justify-content: center;\n            margin-bottom: 1.5rem;\n        }\n        .logo {\n            display: block;\n            max-width: min(100%, 16rem);\n            max-height: 4rem;\n            width: auto;\n            height: auto;\n        }\n        .eyebrow {\n            display: inline-flex;\n            align-items: center;\n            gap: 0.5rem;\n            border-radius: 9999px;\n            padding: 0.45rem 0.85rem;\n            background: color-mix(in srgb, var(--accent) 10%, white);\n            color: var(--primary);\n            font-size: 0.875rem;\n            font-weight: 700;\n            letter-spacing: 0.03em;\n            text-transform: uppercase;\n        }\n        h1 {\n            margin: 1.25rem 0 0.75rem;\n            color: var(--primary);\n            font-size: clamp(1.75rem, 4vw, 2.35rem);\n            line-height: 1.15;\n        }\n        p {\n            margin: 0;\n            color: var(--muted);\n            font-size: 1rem;\n            line-height: 1.7;\n        }\n        .retry {\n            margin-top: 1.25rem;\n            color: var(--primary);\n            font-size: 0.9375rem;\n            font-weight: 600;\n        }\n        .maintenance-progress-wrap {\n            margin-top: 1.5rem;\n            text-align: left;\n        }\n        .maintenance-progress-label {\n            display: flex;\n            justify-content: space-between;\n            align-items: baseline;\n            gap: 0.75rem;\n            margin-bottom: 0.5rem;\n            font-size: 0.875rem;\n            color: var(--muted);\n        }\n        .maintenance-progress-label strong {\n            color: var(--primary);\n            font-weight: 700;\n        }\n        .maintenance-track {\n            height: 0.5rem;\n            border-radius: 9999px;\n            background: color-mix(in srgb, var(--primary) 10%, white);\n            overflow: hidden;\n        }\n        .maintenance-bar {\n            height: 100%;\n            width: 0%;\n            border-radius: 9999px;\n            background: linear-gradient(90deg, var(--primary), var(--accent));\n            transition: width 0.25s linear;\n        }\n        .maintenance-eta {\n            margin-top: 0.75rem;\n            font-size: 0.875rem;\n            color: var(--muted);\n        }\n        .maintenance-eta strong {\n            color: var(--text);\n            font-weight: 600;\n        }\n        .maintenance-eta-local {\n            color: var(--muted);\n            font-weight: 400;\n        }\n        .divider {\n            width: 4rem;\n            height: 0.25rem;\n            margin: 1.25rem auto 1.5rem;\n            border-radius: 9999px;\n            background: linear-gradient(90deg, var(--primary), var(--accent));\n        }\n        @media (max-width: 640px) {\n            .card {\n                padding: 1.5rem;\n                border-radius: 1.25rem;\n            }\n            .logo {\n                max-width: 12rem;\n                max-height: 3.25rem;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n    <div class=\"card\">\n        <div class=\"logo-wrap\">\n            <img class=\"logo\" src=\"\/images\/Linked_Wellness_Logo_CMYK_Colour_Positive_Horizontal.svg\" alt=\"Linked Wellness\">\n        <\/div>\n        <div class=\"eyebrow\">Scheduled maintenance<\/div>\n        <h1>We\u2019ll be back shortly<\/h1>\n        <div class=\"divider\"><\/div>\n        <p>Linked Wellness is currently carrying out a short update. We\u2019ll check whether the site is back automatically; you can also refresh the page anytime.<\/p>\n        <div class=\"maintenance-progress-wrap\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n            <div class=\"maintenance-progress-label\">\n                <span>Checking again in<\/span>\n                <strong id=\"maintenance-countdown\">\u2014<\/strong>\n            <\/div>\n            <div class=\"maintenance-track\" aria-hidden=\"true\">\n                <div class=\"maintenance-bar\" id=\"maintenance-bar\"><\/div>\n            <\/div>\n            <p class=\"maintenance-eta\" id=\"maintenance-eta-line\">\n                <strong>Approximate time back:<\/strong>\n                <span id=\"maintenance-eta\">\u2014<\/span>\n                <span class=\"maintenance-eta-local\"> (your local time)<\/span>\n            <\/p>\n        <\/div>\n        <p class=\"retry\" id=\"maintenance-refresh-note\">This page will reload automatically when the timer ends.<\/p>\n    <\/div>\n    <script>\n        (function () {\n            var total = 60;\n            var bar = document.getElementById('maintenance-bar');\n            var countdownEl = document.getElementById('maintenance-countdown');\n            var etaEl = document.getElementById('maintenance-eta');\n            var started = Date.now();\n            function pad(n) { return n < 10 ? '0' + n : String(n); }\n            function formatRemaining(sec) {\n                if (sec <= 0) return '0:00';\n                var m = Math.floor(sec \/ 60);\n                var s = sec % 60;\n                return m > 0 ? m + ':' + pad(s) : '0:' + pad(s);\n            }\n            function tick() {\n                var elapsed = Math.floor((Date.now() - started) \/ 1000);\n                var left = Math.max(0, total - elapsed);\n                var pct = total > 0 ? Math.min(100, (elapsed \/ total) * 100) : 100;\n                if (bar) bar.style.width = pct + '%';\n                if (countdownEl) countdownEl.textContent = formatRemaining(left);\n                if (etaEl) {\n                    var eta = new Date(Date.now() + left * 1000);\n                    etaEl.textContent = eta.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' });\n                }\n                if (left <= 0) {\n                    window.location.reload();\n                    return;\n                }\n                setTimeout(tick, 250);\n            }\n            tick();\n        })();\n    <\/script>\n<\/body>\n<\/html>\n ",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get content by key",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/content\/key\/:key",
                            "query": [
                                {
                                    "key": "website_env",
                                    "value": "all",
                                    "description": "Filter by website environment, or `all`.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/content\/key\/:key?website_env=all",
                            "variable": [
                                {
                                    "id": "key",
                                    "key": "key",
                                    "value": "welcome.title",
                                    "description": "The content key."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "retry-after",
                                    "value": "60"
                                },
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 503,
                            "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <meta http-equiv=\"refresh\" content=\"60\">\n    <title>Under maintenance - Linked Wellness<\/title>\n    <style>\n        * { box-sizing: border-box; }\n        :root {\n            --primary: #165d65;\n            --accent: #00b08b;\n            --background-start: #effcf9;\n            --background-end: #d9f7f0;\n            --surface: #ffffff;\n            --text: #0f172a;\n            --muted: #475569;\n            --border: rgba(15, 23, 42, 0.08);\n        }\n        body {\n            margin: 0;\n            min-height: 100vh;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            padding: 1.5rem;\n            font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n            color: var(--text);\n            background:\n                radial-gradient(circle at top, rgba(255, 255, 255, 0.95), transparent 35%),\n                linear-gradient(135deg, var(--background-start), var(--background-end));\n            -webkit-font-smoothing: antialiased;\n        }\n        .card {\n            width: 100%;\n            max-width: 34rem;\n            border-radius: 1.5rem;\n            border: 1px solid var(--border);\n            background: var(--surface);\n            padding: 2rem;\n            text-align: center;\n            box-shadow: 0 24px 60px rgba(15, 23, 42, 0.12);\n        }\n        .logo-wrap {\n            display: flex;\n            justify-content: center;\n            margin-bottom: 1.5rem;\n        }\n        .logo {\n            display: block;\n            max-width: min(100%, 16rem);\n            max-height: 4rem;\n            width: auto;\n            height: auto;\n        }\n        .eyebrow {\n            display: inline-flex;\n            align-items: center;\n            gap: 0.5rem;\n            border-radius: 9999px;\n            padding: 0.45rem 0.85rem;\n            background: color-mix(in srgb, var(--accent) 10%, white);\n            color: var(--primary);\n            font-size: 0.875rem;\n            font-weight: 700;\n            letter-spacing: 0.03em;\n            text-transform: uppercase;\n        }\n        h1 {\n            margin: 1.25rem 0 0.75rem;\n            color: var(--primary);\n            font-size: clamp(1.75rem, 4vw, 2.35rem);\n            line-height: 1.15;\n        }\n        p {\n            margin: 0;\n            color: var(--muted);\n            font-size: 1rem;\n            line-height: 1.7;\n        }\n        .retry {\n            margin-top: 1.25rem;\n            color: var(--primary);\n            font-size: 0.9375rem;\n            font-weight: 600;\n        }\n        .maintenance-progress-wrap {\n            margin-top: 1.5rem;\n            text-align: left;\n        }\n        .maintenance-progress-label {\n            display: flex;\n            justify-content: space-between;\n            align-items: baseline;\n            gap: 0.75rem;\n            margin-bottom: 0.5rem;\n            font-size: 0.875rem;\n            color: var(--muted);\n        }\n        .maintenance-progress-label strong {\n            color: var(--primary);\n            font-weight: 700;\n        }\n        .maintenance-track {\n            height: 0.5rem;\n            border-radius: 9999px;\n            background: color-mix(in srgb, var(--primary) 10%, white);\n            overflow: hidden;\n        }\n        .maintenance-bar {\n            height: 100%;\n            width: 0%;\n            border-radius: 9999px;\n            background: linear-gradient(90deg, var(--primary), var(--accent));\n            transition: width 0.25s linear;\n        }\n        .maintenance-eta {\n            margin-top: 0.75rem;\n            font-size: 0.875rem;\n            color: var(--muted);\n        }\n        .maintenance-eta strong {\n            color: var(--text);\n            font-weight: 600;\n        }\n        .maintenance-eta-local {\n            color: var(--muted);\n            font-weight: 400;\n        }\n        .divider {\n            width: 4rem;\n            height: 0.25rem;\n            margin: 1.25rem auto 1.5rem;\n            border-radius: 9999px;\n            background: linear-gradient(90deg, var(--primary), var(--accent));\n        }\n        @media (max-width: 640px) {\n            .card {\n                padding: 1.5rem;\n                border-radius: 1.25rem;\n            }\n            .logo {\n                max-width: 12rem;\n                max-height: 3.25rem;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n    <div class=\"card\">\n        <div class=\"logo-wrap\">\n            <img class=\"logo\" src=\"\/images\/Linked_Wellness_Logo_CMYK_Colour_Positive_Horizontal.svg\" alt=\"Linked Wellness\">\n        <\/div>\n        <div class=\"eyebrow\">Scheduled maintenance<\/div>\n        <h1>We\u2019ll be back shortly<\/h1>\n        <div class=\"divider\"><\/div>\n        <p>Linked Wellness is currently carrying out a short update. We\u2019ll check whether the site is back automatically; you can also refresh the page anytime.<\/p>\n        <div class=\"maintenance-progress-wrap\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n            <div class=\"maintenance-progress-label\">\n                <span>Checking again in<\/span>\n                <strong id=\"maintenance-countdown\">\u2014<\/strong>\n            <\/div>\n            <div class=\"maintenance-track\" aria-hidden=\"true\">\n                <div class=\"maintenance-bar\" id=\"maintenance-bar\"><\/div>\n            <\/div>\n            <p class=\"maintenance-eta\" id=\"maintenance-eta-line\">\n                <strong>Approximate time back:<\/strong>\n                <span id=\"maintenance-eta\">\u2014<\/span>\n                <span class=\"maintenance-eta-local\"> (your local time)<\/span>\n            <\/p>\n        <\/div>\n        <p class=\"retry\" id=\"maintenance-refresh-note\">This page will reload automatically when the timer ends.<\/p>\n    <\/div>\n    <script>\n        (function () {\n            var total = 60;\n            var bar = document.getElementById('maintenance-bar');\n            var countdownEl = document.getElementById('maintenance-countdown');\n            var etaEl = document.getElementById('maintenance-eta');\n            var started = Date.now();\n            function pad(n) { return n < 10 ? '0' + n : String(n); }\n            function formatRemaining(sec) {\n                if (sec <= 0) return '0:00';\n                var m = Math.floor(sec \/ 60);\n                var s = sec % 60;\n                return m > 0 ? m + ':' + pad(s) : '0:' + pad(s);\n            }\n            function tick() {\n                var elapsed = Math.floor((Date.now() - started) \/ 1000);\n                var left = Math.max(0, total - elapsed);\n                var pct = total > 0 ? Math.min(100, (elapsed \/ total) * 100) : 100;\n                if (bar) bar.style.width = pct + '%';\n                if (countdownEl) countdownEl.textContent = formatRemaining(left);\n                if (etaEl) {\n                    var eta = new Date(Date.now() + left * 1000);\n                    etaEl.textContent = eta.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' });\n                }\n                if (left <= 0) {\n                    window.location.reload();\n                    return;\n                }\n                setTimeout(tick, 250);\n            }\n            tick();\n        })();\n    <\/script>\n<\/body>\n<\/html>\n ",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get content for a website environment",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/content\/environment\/:env",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/content\/environment\/:env",
                            "variable": [
                                {
                                    "id": "env",
                                    "key": "env",
                                    "value": "master",
                                    "description": "Your website environment identifier, provided during onboarding."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "retry-after",
                                    "value": "60"
                                },
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 503,
                            "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <meta http-equiv=\"refresh\" content=\"60\">\n    <title>Under maintenance - Linked Wellness<\/title>\n    <style>\n        * { box-sizing: border-box; }\n        :root {\n            --primary: #165d65;\n            --accent: #00b08b;\n            --background-start: #effcf9;\n            --background-end: #d9f7f0;\n            --surface: #ffffff;\n            --text: #0f172a;\n            --muted: #475569;\n            --border: rgba(15, 23, 42, 0.08);\n        }\n        body {\n            margin: 0;\n            min-height: 100vh;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            padding: 1.5rem;\n            font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n            color: var(--text);\n            background:\n                radial-gradient(circle at top, rgba(255, 255, 255, 0.95), transparent 35%),\n                linear-gradient(135deg, var(--background-start), var(--background-end));\n            -webkit-font-smoothing: antialiased;\n        }\n        .card {\n            width: 100%;\n            max-width: 34rem;\n            border-radius: 1.5rem;\n            border: 1px solid var(--border);\n            background: var(--surface);\n            padding: 2rem;\n            text-align: center;\n            box-shadow: 0 24px 60px rgba(15, 23, 42, 0.12);\n        }\n        .logo-wrap {\n            display: flex;\n            justify-content: center;\n            margin-bottom: 1.5rem;\n        }\n        .logo {\n            display: block;\n            max-width: min(100%, 16rem);\n            max-height: 4rem;\n            width: auto;\n            height: auto;\n        }\n        .eyebrow {\n            display: inline-flex;\n            align-items: center;\n            gap: 0.5rem;\n            border-radius: 9999px;\n            padding: 0.45rem 0.85rem;\n            background: color-mix(in srgb, var(--accent) 10%, white);\n            color: var(--primary);\n            font-size: 0.875rem;\n            font-weight: 700;\n            letter-spacing: 0.03em;\n            text-transform: uppercase;\n        }\n        h1 {\n            margin: 1.25rem 0 0.75rem;\n            color: var(--primary);\n            font-size: clamp(1.75rem, 4vw, 2.35rem);\n            line-height: 1.15;\n        }\n        p {\n            margin: 0;\n            color: var(--muted);\n            font-size: 1rem;\n            line-height: 1.7;\n        }\n        .retry {\n            margin-top: 1.25rem;\n            color: var(--primary);\n            font-size: 0.9375rem;\n            font-weight: 600;\n        }\n        .maintenance-progress-wrap {\n            margin-top: 1.5rem;\n            text-align: left;\n        }\n        .maintenance-progress-label {\n            display: flex;\n            justify-content: space-between;\n            align-items: baseline;\n            gap: 0.75rem;\n            margin-bottom: 0.5rem;\n            font-size: 0.875rem;\n            color: var(--muted);\n        }\n        .maintenance-progress-label strong {\n            color: var(--primary);\n            font-weight: 700;\n        }\n        .maintenance-track {\n            height: 0.5rem;\n            border-radius: 9999px;\n            background: color-mix(in srgb, var(--primary) 10%, white);\n            overflow: hidden;\n        }\n        .maintenance-bar {\n            height: 100%;\n            width: 0%;\n            border-radius: 9999px;\n            background: linear-gradient(90deg, var(--primary), var(--accent));\n            transition: width 0.25s linear;\n        }\n        .maintenance-eta {\n            margin-top: 0.75rem;\n            font-size: 0.875rem;\n            color: var(--muted);\n        }\n        .maintenance-eta strong {\n            color: var(--text);\n            font-weight: 600;\n        }\n        .maintenance-eta-local {\n            color: var(--muted);\n            font-weight: 400;\n        }\n        .divider {\n            width: 4rem;\n            height: 0.25rem;\n            margin: 1.25rem auto 1.5rem;\n            border-radius: 9999px;\n            background: linear-gradient(90deg, var(--primary), var(--accent));\n        }\n        @media (max-width: 640px) {\n            .card {\n                padding: 1.5rem;\n                border-radius: 1.25rem;\n            }\n            .logo {\n                max-width: 12rem;\n                max-height: 3.25rem;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n    <div class=\"card\">\n        <div class=\"logo-wrap\">\n            <img class=\"logo\" src=\"\/images\/Linked_Wellness_Logo_CMYK_Colour_Positive_Horizontal.svg\" alt=\"Linked Wellness\">\n        <\/div>\n        <div class=\"eyebrow\">Scheduled maintenance<\/div>\n        <h1>We\u2019ll be back shortly<\/h1>\n        <div class=\"divider\"><\/div>\n        <p>Linked Wellness is currently carrying out a short update. We\u2019ll check whether the site is back automatically; you can also refresh the page anytime.<\/p>\n        <div class=\"maintenance-progress-wrap\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n            <div class=\"maintenance-progress-label\">\n                <span>Checking again in<\/span>\n                <strong id=\"maintenance-countdown\">\u2014<\/strong>\n            <\/div>\n            <div class=\"maintenance-track\" aria-hidden=\"true\">\n                <div class=\"maintenance-bar\" id=\"maintenance-bar\"><\/div>\n            <\/div>\n            <p class=\"maintenance-eta\" id=\"maintenance-eta-line\">\n                <strong>Approximate time back:<\/strong>\n                <span id=\"maintenance-eta\">\u2014<\/span>\n                <span class=\"maintenance-eta-local\"> (your local time)<\/span>\n            <\/p>\n        <\/div>\n        <p class=\"retry\" id=\"maintenance-refresh-note\">This page will reload automatically when the timer ends.<\/p>\n    <\/div>\n    <script>\n        (function () {\n            var total = 60;\n            var bar = document.getElementById('maintenance-bar');\n            var countdownEl = document.getElementById('maintenance-countdown');\n            var etaEl = document.getElementById('maintenance-eta');\n            var started = Date.now();\n            function pad(n) { return n < 10 ? '0' + n : String(n); }\n            function formatRemaining(sec) {\n                if (sec <= 0) return '0:00';\n                var m = Math.floor(sec \/ 60);\n                var s = sec % 60;\n                return m > 0 ? m + ':' + pad(s) : '0:' + pad(s);\n            }\n            function tick() {\n                var elapsed = Math.floor((Date.now() - started) \/ 1000);\n                var left = Math.max(0, total - elapsed);\n                var pct = total > 0 ? Math.min(100, (elapsed \/ total) * 100) : 100;\n                if (bar) bar.style.width = pct + '%';\n                if (countdownEl) countdownEl.textContent = formatRemaining(left);\n                if (etaEl) {\n                    var eta = new Date(Date.now() + left * 1000);\n                    etaEl.textContent = eta.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' });\n                }\n                if (left <= 0) {\n                    window.location.reload();\n                    return;\n                }\n                setTimeout(tick, 250);\n            }\n            tick();\n        })();\n    <\/script>\n<\/body>\n<\/html>\n ",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get content by ID",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/content\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/content\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The content ID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "retry-after",
                                    "value": "60"
                                },
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 503,
                            "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <meta http-equiv=\"refresh\" content=\"60\">\n    <title>Under maintenance - Linked Wellness<\/title>\n    <style>\n        * { box-sizing: border-box; }\n        :root {\n            --primary: #165d65;\n            --accent: #00b08b;\n            --background-start: #effcf9;\n            --background-end: #d9f7f0;\n            --surface: #ffffff;\n            --text: #0f172a;\n            --muted: #475569;\n            --border: rgba(15, 23, 42, 0.08);\n        }\n        body {\n            margin: 0;\n            min-height: 100vh;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            padding: 1.5rem;\n            font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n            color: var(--text);\n            background:\n                radial-gradient(circle at top, rgba(255, 255, 255, 0.95), transparent 35%),\n                linear-gradient(135deg, var(--background-start), var(--background-end));\n            -webkit-font-smoothing: antialiased;\n        }\n        .card {\n            width: 100%;\n            max-width: 34rem;\n            border-radius: 1.5rem;\n            border: 1px solid var(--border);\n            background: var(--surface);\n            padding: 2rem;\n            text-align: center;\n            box-shadow: 0 24px 60px rgba(15, 23, 42, 0.12);\n        }\n        .logo-wrap {\n            display: flex;\n            justify-content: center;\n            margin-bottom: 1.5rem;\n        }\n        .logo {\n            display: block;\n            max-width: min(100%, 16rem);\n            max-height: 4rem;\n            width: auto;\n            height: auto;\n        }\n        .eyebrow {\n            display: inline-flex;\n            align-items: center;\n            gap: 0.5rem;\n            border-radius: 9999px;\n            padding: 0.45rem 0.85rem;\n            background: color-mix(in srgb, var(--accent) 10%, white);\n            color: var(--primary);\n            font-size: 0.875rem;\n            font-weight: 700;\n            letter-spacing: 0.03em;\n            text-transform: uppercase;\n        }\n        h1 {\n            margin: 1.25rem 0 0.75rem;\n            color: var(--primary);\n            font-size: clamp(1.75rem, 4vw, 2.35rem);\n            line-height: 1.15;\n        }\n        p {\n            margin: 0;\n            color: var(--muted);\n            font-size: 1rem;\n            line-height: 1.7;\n        }\n        .retry {\n            margin-top: 1.25rem;\n            color: var(--primary);\n            font-size: 0.9375rem;\n            font-weight: 600;\n        }\n        .maintenance-progress-wrap {\n            margin-top: 1.5rem;\n            text-align: left;\n        }\n        .maintenance-progress-label {\n            display: flex;\n            justify-content: space-between;\n            align-items: baseline;\n            gap: 0.75rem;\n            margin-bottom: 0.5rem;\n            font-size: 0.875rem;\n            color: var(--muted);\n        }\n        .maintenance-progress-label strong {\n            color: var(--primary);\n            font-weight: 700;\n        }\n        .maintenance-track {\n            height: 0.5rem;\n            border-radius: 9999px;\n            background: color-mix(in srgb, var(--primary) 10%, white);\n            overflow: hidden;\n        }\n        .maintenance-bar {\n            height: 100%;\n            width: 0%;\n            border-radius: 9999px;\n            background: linear-gradient(90deg, var(--primary), var(--accent));\n            transition: width 0.25s linear;\n        }\n        .maintenance-eta {\n            margin-top: 0.75rem;\n            font-size: 0.875rem;\n            color: var(--muted);\n        }\n        .maintenance-eta strong {\n            color: var(--text);\n            font-weight: 600;\n        }\n        .maintenance-eta-local {\n            color: var(--muted);\n            font-weight: 400;\n        }\n        .divider {\n            width: 4rem;\n            height: 0.25rem;\n            margin: 1.25rem auto 1.5rem;\n            border-radius: 9999px;\n            background: linear-gradient(90deg, var(--primary), var(--accent));\n        }\n        @media (max-width: 640px) {\n            .card {\n                padding: 1.5rem;\n                border-radius: 1.25rem;\n            }\n            .logo {\n                max-width: 12rem;\n                max-height: 3.25rem;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n    <div class=\"card\">\n        <div class=\"logo-wrap\">\n            <img class=\"logo\" src=\"\/images\/Linked_Wellness_Logo_CMYK_Colour_Positive_Horizontal.svg\" alt=\"Linked Wellness\">\n        <\/div>\n        <div class=\"eyebrow\">Scheduled maintenance<\/div>\n        <h1>We\u2019ll be back shortly<\/h1>\n        <div class=\"divider\"><\/div>\n        <p>Linked Wellness is currently carrying out a short update. We\u2019ll check whether the site is back automatically; you can also refresh the page anytime.<\/p>\n        <div class=\"maintenance-progress-wrap\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n            <div class=\"maintenance-progress-label\">\n                <span>Checking again in<\/span>\n                <strong id=\"maintenance-countdown\">\u2014<\/strong>\n            <\/div>\n            <div class=\"maintenance-track\" aria-hidden=\"true\">\n                <div class=\"maintenance-bar\" id=\"maintenance-bar\"><\/div>\n            <\/div>\n            <p class=\"maintenance-eta\" id=\"maintenance-eta-line\">\n                <strong>Approximate time back:<\/strong>\n                <span id=\"maintenance-eta\">\u2014<\/span>\n                <span class=\"maintenance-eta-local\"> (your local time)<\/span>\n            <\/p>\n        <\/div>\n        <p class=\"retry\" id=\"maintenance-refresh-note\">This page will reload automatically when the timer ends.<\/p>\n    <\/div>\n    <script>\n        (function () {\n            var total = 60;\n            var bar = document.getElementById('maintenance-bar');\n            var countdownEl = document.getElementById('maintenance-countdown');\n            var etaEl = document.getElementById('maintenance-eta');\n            var started = Date.now();\n            function pad(n) { return n < 10 ? '0' + n : String(n); }\n            function formatRemaining(sec) {\n                if (sec <= 0) return '0:00';\n                var m = Math.floor(sec \/ 60);\n                var s = sec % 60;\n                return m > 0 ? m + ':' + pad(s) : '0:' + pad(s);\n            }\n            function tick() {\n                var elapsed = Math.floor((Date.now() - started) \/ 1000);\n                var left = Math.max(0, total - elapsed);\n                var pct = total > 0 ? Math.min(100, (elapsed \/ total) * 100) : 100;\n                if (bar) bar.style.width = pct + '%';\n                if (countdownEl) countdownEl.textContent = formatRemaining(left);\n                if (etaEl) {\n                    var eta = new Date(Date.now() + left * 1000);\n                    etaEl.textContent = eta.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' });\n                }\n                if (left <= 0) {\n                    window.location.reload();\n                    return;\n                }\n                setTimeout(tick, 250);\n            }\n            tick();\n        })();\n    <\/script>\n<\/body>\n<\/html>\n ",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "V1",
            "description": "",
            "item": [
                {
                    "name": "Get static data",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/data",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/data"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "",
                            "name": "success"
                        }
                    ]
                }
            ]
        }
    ],
    "auth": {
        "type": "apikey",
        "apikey": [
            {
                "key": "in",
                "value": "header",
                "type": "string"
            },
            {
                "key": "key",
                "value": "X-API-Key",
                "type": "string"
            }
        ]
    }
}