With expiry off, { "enabled": false, "window_days": null, "next": null, "schedule": [] } for any id. With it on, a member who has never earned gets next: null and an empty schedule. A member session may name only its own user id; another id answers 404.
One entry per UTC day the member loses XP, earliest first. The first can already be past when the lapse run has not caught up; that XP is still spendable.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"4D OS Developer Docs","description":"Public developer documentation for the 4D OS partner platform","colors":{"primary":"#1865D1","light":"#80AAE6","dark":"#1353AE"},"logo":{"light":"https://mintcdn.com/4dos/zox555bidSKp__2J/logo/light.svg?fit=max\u0026auto=format\u0026n=zox555bidSKp__2J\u0026q=85\u0026s=f664509c181b052b368f5e6d97c443cb","dark":"https://mintcdn.com/4dos/zox555bidSKp__2J/logo/dark.svg?fit=max\u0026auto=format\u0026n=zox555bidSKp__2J\u0026q=85\u0026s=ae86b94c4df9a59c79ef008d269dd134"},"favicon":"https://mintcdn.com/4dos/zox555bidSKp__2J/favicon.svg?fit=max\u0026auto=format\u0026n=zox555bidSKp__2J\u0026q=85\u0026s=5e2a089a22e686c5e5c26a6abd8717e4","background":{"color":{"light":"#FFFFFF","dark":"#15161E"}},"footer":{"socials":{}},"fonts":{"heading":{"family":"Plus Jakarta Sans"},"body":{"family":"Inter"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"4dos","hasAudioNarration":false,"actualSubdomain":"4dos","customDomains":["docs.fourdos.dev"],"gitSource":{"type":"github","owner":"pellartech","repo":"fourdos-monorepo","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6af6f50f9a8829f8111d8247","clientVersion":"0.0.4124","searchFilterCounts":[{"language":"default","tag":"API Reference","count":53},{"language":"default","tag":"Endpoints","count":52},{"language":"default","tag":"Documentation","count":28},{"language":"default","tag":"Modules","count":17},{"language":"default","tag":"Concepts","count":10},{"language":"default","tag":"Walkthroughs","count":9},{"language":"default","tag":"Users","count":9},{"language":"default","tag":"External integrations","count":7},{"language":"default","tag":"Imports","count":7},{"language":"default","tag":"Content API","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"/* cyrillic-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwhsk.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwhsk.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwhsk.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwhsk.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwhsk.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwhsk.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwhsk.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwhsk.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwhsk.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwhsk.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwhsk.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwhsk.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwhsk.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwhsk.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwhsk.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'JetBrains Mono';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\nimg.nav-logo{height:2.5rem}code,pre,kbd,samp{font-family:\"JetBrains Mono\", ui-monospace, \"SF Mono\", Menlo, Consolas, monospace}"}],"page":{"pagePath":"api-reference/xp/read-when-a-members-xp-lapses","slug":"/api-reference/xp/read-when-a-members-xp-lapses","pageMetadata":{"title":"Read when a member's XP lapses","description":"With expiry off, `{ \"enabled\": false, \"window_days\": null, \"next\": null, \"schedule\": [] }` for any id. With it on, a member who has never earned gets `next: null` and an empty `schedule`. A member session may name only its own user id; another id answers 404.","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/users/{userId}/xp-expiry","href":"/api-reference/xp/read-when-a-members-xp-lapses","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"With expiry off, \", _jsx(_components.code, {\n children: \"{ \\\"enabled\\\": false, \\\"window_days\\\": null, \\\"next\\\": null, \\\"schedule\\\": [] }\"\n }), \" for any id. With it on, a member who has never earned gets \", _jsx(_components.code, {\n children: \"next: null\"\n }), \" and an empty \", _jsx(_components.code, {\n children: \"schedule\"\n }), \". A member session may name only its own user id; another id answers 404.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Read when a member's XP lapses","description":"With expiry off, `{ \"enabled\": false, \"window_days\": null, \"next\": null, \"schedule\": [] }` for any id. With it on, a member who has never earned gets `next: null` and an empty `schedule`. A member session may name only its own user id; another id answers 404.","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/users/{userId}/xp-expiry","href":"/api-reference/xp/read-when-a-members-xp-lapses","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"getMemberXpExpiry","tags":["XP"],"summary":"Read when a member's XP lapses","description":"With expiry off, `{ \"enabled\": false, \"window_days\": null, \"next\": null, \"schedule\": [] }` for any id. With it on, a member who has never earned gets `next: null` and an empty `schedule`. A member session may name only its own user id; another id answers 404.","security":["4380d6c9-3ab1-4f17-a26c-51a8d05e9235","4764aaf4-4336-4906-ae38-4b5f848e6d9f","c5a2002e-14a8-4853-8849-2519a0fa53b3"],"parameters":["c6fbd140-df6a-4260-8732-e6e76554324f"],"responses":{"200":"e17abc06-2fb0-47dd-9818-b069a9de1b8f","401":"c304b229-bad1-4b07-be97-5a39088b0699","404":"d67ccedf-bbb6-48d5-b0e6-af3578594b98"},"method":"get","type":"path","servers":["7548fbcb-cde8-4991-af4e-42d5cd435d3b"],"path":"/v1/users/{userId}/xp-expiry","baseUrlOptions":["https://api.develop.fourdos.dev"],"title":"Read when a member's XP lapses","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"c6fbd140-df6a-4260-8732-e6e76554324f":{"name":"userId","in":"path","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}}},"responses":{"e17abc06-2fb0-47dd-9818-b069a9de1b8f":{"description":"The expiry schedule","content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","isRequired":true,"uniqueKey":"enabled","typeLabel":"boolean"},"window_days":{"oneOf":[{"type":"integer","isRequired":true,"uniqueKey":"window_days.oneOf.0","typeLabel":"integer"},{"type":"null","isRequired":true,"uniqueKey":"window_days.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"window_days","typeLabel":"integer | null"},"next":{"oneOf":[{"type":"object","description":"The earliest entry still ahead of now.","required":["amount","expires_at"],"properties":{"amount":{"type":"string","description":"A non-negative integer as a decimal string.","isRequired":true,"uniqueKey":"next.oneOf.0.amount","typeLabel":"string"},"expires_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"next.oneOf.0.expires_at","typeLabel":"string\u003cdate-time>"}},"isRequired":true,"uniqueKey":"next.oneOf.0","typeLabel":"object"},{"type":"null","description":"The earliest entry still ahead of now.","isRequired":true,"uniqueKey":"next.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"next","typeLabel":"object | null"},"schedule":{"type":"array","description":"One entry per UTC day the member loses XP, earliest first. The first can already be past when the lapse run has not caught up; that XP is still spendable.","items":{"type":"object","properties":{"amount":{"type":"string","description":"A non-negative integer as a decimal string.","isRequired":true,"uniqueKey":"schedule.items.[INDEX].amount","typeLabel":"string"},"expires_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"schedule.items.[INDEX].expires_at","typeLabel":"string\u003cdate-time>"}},"required":["amount","expires_at"],"uniqueKey":"schedule.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"schedule","typeLabel":"object[]"}},"required":["enabled","window_days","next","schedule"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"enabled":true,"window_days":123,"next":{"amount":"\u003cstring>","expires_at":"2023-11-07T05:31:56Z"},"schedule":[{"amount":"\u003cstring>","expires_at":"2023-11-07T05:31:56Z"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"c304b229-bad1-4b07-be97-5a39088b0699":{"description":"`UNAUTHORIZED`: no valid credential","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"status":{"type":"integer","isRequired":true,"uniqueKey":"error.status","typeLabel":"integer"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","additionalProperties":true,"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","status","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","status":123,"message":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"d67ccedf-bbb6-48d5-b0e6-af3578594b98":{"description":"`NOT_FOUND`: the id is malformed; with expiry on, the user is not a member of your organization; or a member session named another user","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"status":{"type":"integer","isRequired":true,"uniqueKey":"error.status","typeLabel":"integer"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","additionalProperties":true,"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","status","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","status":123,"message":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"4380d6c9-3ab1-4f17-a26c-51a8d05e9235":{"partnerApiKey":{"type":"http","scheme":"bearer","description":"Organization API key (`org_...`) sent as `Authorization: Bearer \u003ckey>`. Keys are scoped to one organization; every request operates within that tenant.","scopes":[],"schemeName":"partnerApiKey"}},"4764aaf4-4336-4906-ae38-4b5f848e6d9f":{"adminSession":{"type":"http","scheme":"bearer","description":"Partner admin session token sent as `Authorization: Bearer \u003ctoken>`. Obtained by signing in (console or the email OTP endpoints) and completing the second factor; see the Authentication page.","scopes":[],"schemeName":"adminSession"}},"c5a2002e-14a8-4853-8849-2519a0fa53b3":{"memberSession":{"type":"http","scheme":"bearer","description":"A signed-in member's session token sent as `Authorization: Bearer \u003ctoken>`. Accepted only on the operations that list it, and each of those says which user ids a member may name. Your backend uses the organization API key instead.","scopes":[],"schemeName":"memberSession"}}},"servers":{"7548fbcb-cde8-4991-af4e-42d5cd435d3b":{"url":"https://api.develop.fourdos.dev"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Organization API key (`org_...`) sent as `Authorization: Bearer \u003ckey>`. Keys are scoped to one organization; every request operates within that tenant.","scopes":[],"schemeName":"partnerApiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Organization API key (`org_...`) sent as `Authorization: Bearer \u003ckey>`. Keys are scoped to one organization; every request operates within that tenant.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"partnerApiKey","name":"Authorization"}],"title":"partnerApiKey"},{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Partner admin session token sent as `Authorization: Bearer \u003ctoken>`. Obtained by signing in (console or the email OTP endpoints) and completing the second factor; see the Authentication page.","scopes":[],"schemeName":"adminSession"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Partner admin session token sent as `Authorization: Bearer \u003ctoken>`. Obtained by signing in (console or the email OTP endpoints) and completing the second factor; see the Authentication page.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"adminSession","name":"Authorization"}],"title":"adminSession"},{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"A signed-in member's session token sent as `Authorization: Bearer \u003ctoken>`. Accepted only on the operations that list it, and each of those says which user ids a member may name. Your backend uses the organization API key instead.","scopes":[],"schemeName":"memberSession"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"A signed-in member's session token sent as `Authorization: Bearer \u003ctoken>`. Accepted only on the operations that list it, and each of those says which user ids a member may name. Your backend uses the organization API key instead.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"memberSession","name":"Authorization"}],"title":"memberSession"}]},"originalFileLocation":"https://api.develop.fourdos.dev/openapi/partner.json"},"subdomain":"4dos","siteName":"4D OS Developer Docs","title":"Read when a member's XP lapses - 4D OS Developer Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-13T11:31:33.174Z","originalFileLocation":"api-reference/xp/read-when-a-members-xp-lapses.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"With expiry off, { \u0026quot;enabled\u0026quot;: false, \u0026quot;window_days\u0026quot;: null, \u0026quot;next\u0026quot;: null, \u0026quot;schedule\u0026quot;: [] } for any id. With it on, a member who has never earned gets next: null and an empty schedule. A member session may name only its own user id; another id answers 404.\">\u003cmeta data-mint-head name=\"application-name\" content=\"4D OS Developer Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/4dos/ncF7JlfIXB4OFvnM/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/4dos/ncF7JlfIXB4OFvnM/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/4dos/ncF7JlfIXB4OFvnM/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/4dos/ncF7JlfIXB4OFvnM/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/4dos/ncF7JlfIXB4OFvnM/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/4dos/ncF7JlfIXB4OFvnM/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/4dos/ncF7JlfIXB4OFvnM/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/4dos/ncF7JlfIXB4OFvnM/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/4dos/ncF7JlfIXB4OFvnM/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Read when a member\u0026#x27;s XP lapses - 4D OS Developer Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"With expiry off, { \u0026quot;enabled\u0026quot;: false, \u0026quot;window_days\u0026quot;: null, \u0026quot;next\u0026quot;: null, \u0026quot;schedule\u0026quot;: [] } for any id. With it on, a member who has never earned gets next: null and an empty schedule. A member session may name only its own user id; another id answers 404.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"4D OS Developer Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.fourdos.dev/api-reference/xp/read-when-a-members-xp-lapses\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://4dos.mintlify.site/_mintlify/api/og/v2?division=XP\u0026amp;title=Read+when+a+member%27s+XP+lapses\u0026amp;description=With+expiry+off%2C+%60%7B+%22enabled%22%3A+false%2C+%22window_days%22%3A+null%2C+%22next%22%3A+null%2C+%22schedule%22%3A+%5B%5D+%7D%60+for+any+id.+With+it+on%2C+a+member+who+has+never+earned+gets+%60next%3A+nul\u0026amp;theme=b85e85529419e0832c327540\u0026amp;signature=9c943f9e1e4d1af0ec7b07e56e44d69d8e29090dcd56b4227c0d10557bd4d7ed\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Read when a member\u0026#x27;s XP lapses - 4D OS Developer Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"With expiry off, { \u0026quot;enabled\u0026quot;: false, \u0026quot;window_days\u0026quot;: null, \u0026quot;next\u0026quot;: null, \u0026quot;schedule\u0026quot;: [] } for any id. With it on, a member who has never earned gets next: null and an empty schedule. A member session may name only its own user id; another id answers 404.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://4dos.mintlify.site/_mintlify/api/og/v2?division=XP\u0026amp;title=Read+when+a+member%27s+XP+lapses\u0026amp;description=With+expiry+off%2C+%60%7B+%22enabled%22%3A+false%2C+%22window_days%22%3A+null%2C+%22next%22%3A+null%2C+%22schedule%22%3A+%5B%5D+%7D%60+for+any+id.+With+it+on%2C+a+member+who+has+never+earned+gets+%60next%3A+nul\u0026amp;theme=b85e85529419e0832c327540\u0026amp;signature=9c943f9e1e4d1af0ec7b07e56e44d69d8e29090dcd56b4227c0d10557bd4d7ed\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/4dos/ncF7JlfIXB4OFvnM/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"4D OS Developer Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1865D1\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.fourdos.dev/api-reference/xp/read-when-a-members-xp-lapses\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/xp/read-when-a-members-xp-lapses.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.fourdos.dev/#organization\",\"name\":\"4D OS Developer Docs\",\"url\":\"https://docs.fourdos.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/4dos/zox555bidSKp__2J/logo/light.svg?fit=max\u0026auto=format\u0026n=zox555bidSKp__2J\u0026q=85\u0026s=f664509c181b052b368f5e6d97c443cb\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.fourdos.dev#website\",\"name\":\"4D OS Developer Docs\",\"url\":\"https://docs.fourdos.dev\",\"publisher\":{\"@id\":\"https://docs.fourdos.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.fourdos.dev/api-reference/xp/read-when-a-members-xp-lapses#webpage\",\"url\":\"https://docs.fourdos.dev/api-reference/xp/read-when-a-members-xp-lapses\",\"name\":\"Read when a member's XP lapses\",\"description\":\"With expiry off, { \\\"enabled\\\": false, \\\"window_days\\\": null, \\\"next\\\": null, \\\"schedule\\\": [] } for any id. With it on, a member who has never earned gets next: null and an empty schedule. A member session may name only its own user id; another id answers 404.\",\"dateModified\":\"2026-11-13T11:31:33.174Z\",\"isPartOf\":{\"@id\":\"https://docs.fourdos.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.fourdos.dev/api-reference/xp/read-when-a-members-xp-lapses#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.fourdos.dev/api-reference/xp/read-when-a-members-xp-lapses#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.fourdos.dev/api-reference/users/find-members-of-your-organization-by-name-or-email\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"XP\",\"item\":\"https://docs.fourdos.dev/api-reference/xp/read-a-members-spendable-balance-qualifying-xp-and-tier\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Read when a member's XP lapses\",\"item\":\"https://docs.fourdos.dev/api-reference/xp/read-when-a-members-xp-lapses\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.fourdos.dev/api-reference/xp/read-when-a-members-xp-lapses#apireference\",\"headline\":\"Read when a member's XP lapses\",\"name\":\"Read when a member's XP lapses\",\"description\":\"With expiry off, { \\\"enabled\\\": false, \\\"window_days\\\": null, \\\"next\\\": null, \\\"schedule\\\": [] } for any id. With it on, a member who has never earned gets next: null and an empty schedule. A member session may name only its own user id; another id answers 404.\",\"url\":\"https://docs.fourdos.dev/api-reference/xp/read-when-a-members-xp-lapses\",\"mainEntityOfPage\":{\"@id\":\"https://docs.fourdos.dev/api-reference/xp/read-when-a-members-xp-lapses#webpage\"},\"dateModified\":\"2026-11-13T11:31:33.174Z\",\"publisher\":{\"@id\":\"https://docs.fourdos.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.fourdos.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"4D OS Developer Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"4D OS Developer Docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/xp/read-when-a-members-xp-lapses.md","siteName":"4D OS Developer Docs","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"API reference overview","href":"/api-reference/overview"}]},{"group":"Endpoints","pages":[{"group":"Users","pages":[{"title":"Find members of your organization by name or email","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/users","href":"/api-reference/users/find-members-of-your-organization-by-name-or-email"},{"title":"Create or attach a user (idempotent via Idempotency-Key)","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/users","href":"/api-reference/users/create-or-attach-a-user-idempotent-via-idempotency-key"},{"title":"Fetch a user within the caller's organization","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/users/{userId}","href":"/api-reference/users/fetch-a-user-within-the-callers-organization"},{"title":"Update a user's profile fields","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json patch /v1/users/{userId}","href":"/api-reference/users/update-a-users-profile-fields"},{"title":"Lock the caller-org membership for a user","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/users/{userId}/lock","href":"/api-reference/users/lock-the-caller-org-membership-for-a-user"},{"title":"Unlock the caller-org membership for a user","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/users/{userId}/unlock","href":"/api-reference/users/unlock-the-caller-org-membership-for-a-user"},{"title":"List one member's engagement events, newest first","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/users/{userId}/engagement/events","href":"/api-reference/users/list-one-members-engagement-events-newest-first"},{"title":"List one member's XP history, newest first","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/users/{userId}/xp-history","href":"/api-reference/users/list-one-members-xp-history-newest-first"},{"title":"Remove (soft-delete) the caller-org membership for a user","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json delete /v1/users/{userId}/membership","href":"/api-reference/users/remove-soft-delete-the-caller-org-membership-for-a-user"},{"title":"Read a member's stored attribute values","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/users/{userId}/attributes","href":"/api-reference/users/read-a-members-stored-attribute-values"},{"title":"Set or clear a member's attribute values","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json put /v1/users/{userId}/attributes","href":"/api-reference/users/set-or-clear-a-members-attribute-values"}]},{"group":"Consents","pages":[{"title":"List a member's consents","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/users/{userId}/consents","href":"/api-reference/consents/list-a-members-consents"},{"title":"Grant a consent or accept an agreement","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/users/{userId}/consents","href":"/api-reference/consents/grant-a-consent-or-accept-an-agreement"},{"title":"Withdraw a consent","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json delete /v1/users/{userId}/consents/{scope}","href":"/api-reference/consents/withdraw-a-consent"}]},{"group":"Rewards","pages":[{"title":"List your published rewards with this member's verdict on each","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/users/{userId}/rewards","href":"/api-reference/rewards/list-your-published-rewards-with-this-members-verdict-on-each"},{"title":"Claim a reward for a member","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/users/{userId}/redeem","href":"/api-reference/rewards/claim-a-reward-for-a-member"},{"title":"List a member's claims, newest first","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/users/{userId}/redemptions","href":"/api-reference/rewards/list-a-members-claims-newest-first"},{"title":"Read one claim","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/users/{userId}/redemptions/{redemptionId}","href":"/api-reference/rewards/read-one-claim"},{"title":"Mark a claim's reward code used","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/users/{userId}/redemptions/{redemptionId}/use","href":"/api-reference/rewards/mark-a-claims-reward-code-used"}]},{"group":"XP","pages":[{"title":"Read a member's spendable balance, qualifying XP and tier","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/users/{userId}/balance","href":"/api-reference/xp/read-a-members-spendable-balance-qualifying-xp-and-tier"},{"title":"Read what a member can still earn today","description":"XP left against the member's daily cap, which actions still pay, when the day resets in your organization's zone, and today's refusals with the sentence each one shows. Fields are camelCase. With no earning controls configured, `limited` is false and the lists are empty. A member session may name only its own user id; another id answers 404.","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/users/{userId}/xp-earning","href":"/api-reference/xp/read-what-a-member-can-still-earn-today"},{"title":"Read when a member's XP lapses","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/users/{userId}/xp-expiry","href":"/api-reference/xp/read-when-a-members-xp-lapses"},{"title":"Read the XP boost a member earns under right now","description":"`{ \"boost\": null }` when no boost reaches the member now. `endsAt` is camelCase. A member session may name only its own user id; another id answers 404.","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/users/{userId}/xp-boost","href":"/api-reference/xp/read-the-xp-boost-a-member-earns-under-right-now"},{"title":"List what each event pays","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/xp/event-definitions","href":"/api-reference/xp/list-what-each-event-pays"}]},{"group":"Tiers","pages":[{"title":"List your organization's tiers, lowest first","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/tiers","href":"/api-reference/tiers/list-your-organizations-tiers-lowest-first"},{"title":"Read one tier","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/tiers/{tierId}","href":"/api-reference/tiers/read-one-tier"}]},{"group":"Webhooks","pages":[{"title":"List your webhook endpoints, oldest first","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/webhooks","href":"/api-reference/webhooks/list-your-webhook-endpoints-oldest-first"},{"title":"Register a webhook endpoint","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/webhooks","href":"/api-reference/webhooks/register-a-webhook-endpoint"},{"title":"Delete a webhook endpoint","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json delete /v1/webhooks/{id}","href":"/api-reference/webhooks/delete-a-webhook-endpoint"}]},{"group":"Events","pages":[{"title":"Refetch your organization's events from the last 30 days","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/events","href":"/api-reference/events/refetch-your-organizations-events-from-the-last-30-days"}]},{"group":"Imports","pages":[{"title":"Create a bulk import job (starts in `staging`)","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/imports","href":"/api-reference/imports/create-a-bulk-import-job-starts-in-`staging`"},{"title":"Page a job's per-row outcomes, optionally filtered by state","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/imports/{id}/rows","href":"/api-reference/imports/page-a-jobs-per-row-outcomes-optionally-filtered-by-state"},{"title":"Stage a chunk of rows onto a job (≤5k rows/request, job must be `staging`)","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/imports/{id}/rows","href":"/api-reference/imports/stage-a-chunk-of-rows-onto-a-job-≤5k-rowsrequest-job-must-be-`staging`"},{"title":"Seal staging and start async dry-run validation","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/imports/{id}/validate","href":"/api-reference/imports/seal-staging-and-start-async-dry-run-validation"},{"title":"Commit a validated job, or start validation with `dry_run: false` on a `staging` job","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/imports/{id}/commit","href":"/api-reference/imports/commit-a-validated-job-or-start-validation-with-`dry_run:-false`-on-a-`staging`-job"},{"title":"Fetch an import job's status and counts","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/imports/{id}","href":"/api-reference/imports/fetch-an-import-jobs-status-and-counts"},{"title":"Download the invalid+failed rows as CSV (also the console's download URL, cookie auth)","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/imports/{id}/error-report","href":"/api-reference/imports/download-the-invalid+failed-rows-as-csv-also-the-consoles-download-url-cookie-auth"}]},{"group":"API keys","pages":[{"title":"List organization API keys","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/api-keys","href":"/api-reference/api-keys/list-organization-api-keys"},{"title":"Issue an organization API key","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/api-keys","href":"/api-reference/api-keys/issue-an-organization-api-key"},{"title":"Revoke an organization API key","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json delete /v1/api-keys/{keyId}","href":"/api-reference/api-keys/revoke-an-organization-api-key"}]},{"group":"Modules","pages":[{"title":"List modules visible to the caller","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/modules","href":"/api-reference/modules/list-modules-visible-to-the-caller"},{"title":"Create a private module draft","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/modules","href":"/api-reference/modules/create-a-private-module-draft"},{"title":"Get a visible module","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/modules/{moduleId}","href":"/api-reference/modules/get-a-visible-module"},{"title":"List versions for a visible module","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/modules/{moduleId}/versions","href":"/api-reference/modules/list-versions-for-a-visible-module"},{"title":"Create a private module version draft","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/modules/{moduleId}/versions","href":"/api-reference/modules/create-a-private-module-version-draft"},{"title":"Publish a private module version","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/modules/{moduleId}/versions/{versionId}/publish","href":"/api-reference/modules/publish-a-private-module-version"},{"title":"Install a published module","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/modules/{moduleId}/install","href":"/api-reference/modules/install-a-published-module"},{"title":"List the organization's module installations","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/installations","href":"/api-reference/modules/list-the-organizations-module-installations"},{"title":"Get an organization module installation","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/installations/{installationId}","href":"/api-reference/modules/get-an-organization-module-installation"},{"title":"Disable a module installation","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json delete /v1/installations/{installationId}","href":"/api-reference/modules/disable-a-module-installation"},{"title":"Update an installation","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json patch /v1/installations/{installationId}","href":"/api-reference/modules/update-an-installation"},{"title":"List module credentials","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/installations/{installationId}/credentials","href":"/api-reference/modules/list-module-credentials"},{"title":"Issue a module ingest credential","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/installations/{installationId}/credentials","href":"/api-reference/modules/issue-a-module-ingest-credential"},{"title":"Rotate module ingest credentials","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/installations/{installationId}/credentials/rotate","href":"/api-reference/modules/rotate-module-ingest-credentials"},{"title":"Revoke a module ingest credential","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json delete /v1/installations/{installationId}/credentials/{credentialId}","href":"/api-reference/modules/revoke-a-module-ingest-credential"},{"title":"Create a module webhook endpoint","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/installations/{installationId}/webhook-endpoints","href":"/api-reference/modules/create-a-module-webhook-endpoint"},{"title":"Update a module webhook endpoint","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json patch /v1/installations/{installationId}/webhook-endpoints/{endpointId}","href":"/api-reference/modules/update-a-module-webhook-endpoint"}]},{"group":"Ingest","pages":[{"title":"Send a signed module event","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/ingest","href":"/api-reference/ingest/send-a-signed-module-event"}]},{"group":"Engagement","pages":[{"title":"Track engagement events (public, publishable tracking key)","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/track","href":"/api-reference/engagement/track-engagement-events-public-publishable-tracking-key"},{"title":"List the organization's tracking keys","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/engagement/keys","href":"/api-reference/engagement/list-the-organizations-tracking-keys"},{"title":"Issue a publishable tracking key","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/engagement/keys","href":"/api-reference/engagement/issue-a-publishable-tracking-key"},{"title":"Revoke a tracking key (idempotent)","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json delete /v1/engagement/keys/{id}","href":"/api-reference/engagement/revoke-a-tracking-key-idempotent"}]},{"group":"Revenue","pages":[{"title":"Record sales and refunds","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/revenue","href":"/api-reference/revenue/record-sales-and-refunds"}]},{"group":"Ad entries","pages":[{"title":"Enter a fan in a sponsor's draw on an ad campaign","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/ads/campaigns/{campaign_id}/entries","href":"/api-reference/ad-entries/enter-a-fan-in-a-sponsors-draw-on-an-ad-campaign"}]},{"group":"Ad delivery","pages":[{"title":"Mint a signed ad identity for a signed-in fan","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json post /v1/ads/identity-tokens","href":"/api-reference/ad-delivery/mint-a-signed-ad-identity-for-a-signed-in-fan"},{"title":"Fill one ad slot","deprecated":null,"version":null,"openapi":"https://api.develop.fourdos.dev/openapi/partner.json get /v1/ads/serve","href":"/api-reference/ad-delivery/fill-one-ad-slot"}]}]}]}]},"basePath":"","title":"Read when a member's XP lapses - 4D OS Developer Docs","buildId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","deploymentId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CDiBsYGW.js","utils-KF9rPlmF.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C26urKTX.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BdjmJAC1.js","snippetPresets-3IpDBjt3.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-D4x_2vvo.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BIWdc5Pa.js","shallow-LQqfiMNd.js","getApiPlaygroundDisplay-DryzlOZG.js","CodeSnippet-tcJujU4r.js","CodeSnippets-BHp0nVLL.js","Page-1CZdsdAn.js","getPastedJson-DU-1ayUv.js","icon-CZK2hPr4.js","MethodPill-DOaqmTFC.js","DuplicateIcon-B5-nUxxl.js","createIcon-CDP_U77G.js","DynamicMarkdown-GHvayGOn.js","SectionHeading-BYvpkmUD.js","axios-vUo_bRtp.js","Markdown-uxhlayGT.js","clsx-B35qUV0p.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BvrGG8gU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CAf0yVYe.js"]}