[{"data":1,"prerenderedAt":3055},["ShallowReactive",2],{"api_notifications":3,"nav-docs":2951,"nav-api":3008},{"id":4,"title":5,"body":6,"description":16,"extension":2945,"meta":2946,"navigation":306,"path":2947,"seo":2948,"stem":2949,"__hash__":2950},"api\u002Fapi\u002F12.notifications.md","Notifications",{"type":7,"value":8,"toc":2935},"minimark",[9,13,17,20,25,28,43,48,145,149,240,247,1582,1586,1591,1613,2248,2252,2255,2258,2314,2931],[10,11,5],"h1",{"id":12},"notifications",[14,15,16],"p",{},"What has happened on the boards an account can see — a comment, a card created\nor moved, an invitation, a due date coming up — and marking those as read.",[14,18,19],{},"Notifications belong to the account the key authenticates as. There is no\nparameter for whose notifications to read: it is always the key's own.",[21,22,24],"h2",{"id":23},"get-apidatanotifications","GET \u002Fapi\u002Fdata\u002Fnotifications",[14,26,27],{},"The account's notifications, newest first.",[14,29,30,31,35,36,38,39,42],{},"Without ",[32,33,34],"code",{},"limit"," the whole history comes back, which is what a client wants when\nit means to look at all of it. Pass ",[32,37,34],{}," to read it a page at a time, and\n",[32,40,41],{},"before"," to carry on from where the last page ended.",[44,45,47],"h3",{"id":46},"parameters","Parameters",[49,50,51,70],"table",{},[52,53,54],"thead",{},[55,56,57,61,64,67],"tr",{},[58,59,60],"th",{},"Name",[58,62,63],{},"Type",[58,65,66],{},"Required",[58,68,69],{},"Description",[71,72,73,93,113,128],"tbody",{},[55,74,75,80,83,86],{},[76,77,78],"td",{},[32,79,34],{},[76,81,82],{},"integer",[76,84,85],{},"no",[76,87,88,89,92],{},"Page size, at most ",[32,90,91],{},"100",". Omit for the whole history.",[55,94,95,99,101,103],{},[76,96,97],{},[32,98,41],{},[76,100,82],{},[76,102,85],{},[76,104,105,106,109,110,112],{},"The ",[32,107,108],{},"id"," of the last notification you already have; the answer starts just after it. Ignored without ",[32,111,34],{},".",[55,114,115,120,123,125],{},[76,116,117],{},[32,118,119],{},"unreadCards",[76,121,122],{},"any",[76,124,85],{},[76,126,127],{},"Answer with card ids instead of notifications — see below.",[55,129,130,135,137,139],{},[76,131,132],{},[32,133,134],{},"boardId",[76,136,82],{},[76,138,85],{},[76,140,141,142,144],{},"With ",[32,143,119],{},", limits the answer to one board.",[44,146,148],{"id":147},"what-comes-back","What comes back",[49,150,151,162],{},[52,152,153],{},[55,154,155,158,160],{},[58,156,157],{},"Field",[58,159,63],{},[58,161,69],{},[71,163,164,208,228],{},[55,165,166,170,173],{},[76,167,168],{},[32,169,12],{},[76,171,172],{},"array",[76,174,175,176,178,179,178,182,178,184,178,187,178,190,178,193,196,197,178,200,203,204,207],{},"The page, newest first. Each carries ",[32,177,108],{},", ",[32,180,181],{},"type",[32,183,134],{},[32,185,186],{},"cardId",[32,188,189],{},"message",[32,191,192],{},"isRead",[32,194,195],{},"createdAt",", and the actor's ",[32,198,199],{},"actorName",[32,201,202],{},"actorImage"," and ",[32,205,206],{},"actorType"," where one is recorded.",[55,209,210,215,218],{},[76,211,212],{},[32,213,214],{},"hasMore",[76,216,217],{},"boolean",[76,219,220,221,224,225,227],{},"Whether anything older exists past this page. Always ",[32,222,223],{},"false"," when no ",[32,226,34],{}," was given.",[55,229,230,235,237],{},[76,231,232],{},[32,233,234],{},"unreadCount",[76,236,82],{},[76,238,239],{},"Unread notifications on the whole account, not on this page — so a badge stays right while a page is held.",[14,241,242,243,246],{},"Paging is anchored to a notification rather than to a count of rows. A\nnotification arriving while somebody reads therefore cannot shift the window and\nmake a page repeat itself or skip an entry, which an ",[32,244,245],{},"offset"," would.",[248,249,250,340,657,1020,1507],"code-example",{},[251,252,254],"template",{"v-slot:curl":253},"",[255,256,260],"pre",{"className":257,"code":258,"language":259,"meta":253,"style":253},"language-bash shiki shiki-themes github-light github-dark","curl -X GET \"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?limit=25\" \\\n  -H \"X-API-Key: $LOKALBOARDS_KEY\"\n\n# the next page, carrying on from the last id of the previous one\ncurl -X GET \"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?limit=25&before=418\" \\\n  -H \"X-API-Key: $LOKALBOARDS_KEY\"\n","bash",[32,261,262,285,301,308,315,329],{"__ignoreMap":253},[263,264,267,271,275,279,282],"span",{"class":265,"line":266},"line",1,[263,268,270],{"class":269},"sScJk","curl",[263,272,274],{"class":273},"sj4cs"," -X",[263,276,278],{"class":277},"sZZnC"," GET",[263,280,281],{"class":277}," \"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?limit=25\"",[263,283,284],{"class":273}," \\\n",[263,286,288,291,294,298],{"class":265,"line":287},2,[263,289,290],{"class":273},"  -H",[263,292,293],{"class":277}," \"X-API-Key: ",[263,295,297],{"class":296},"sVt8B","$LOKALBOARDS_KEY",[263,299,300],{"class":277},"\"\n",[263,302,304],{"class":265,"line":303},3,[263,305,307],{"emptyLinePlaceholder":306},true,"\n",[263,309,311],{"class":265,"line":310},4,[263,312,314],{"class":313},"sJ8bj","# the next page, carrying on from the last id of the previous one\n",[263,316,318,320,322,324,327],{"class":265,"line":317},5,[263,319,270],{"class":269},[263,321,274],{"class":273},[263,323,278],{"class":277},[263,325,326],{"class":277}," \"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?limit=25&before=418\"",[263,328,284],{"class":273},[263,330,332,334,336,338],{"class":265,"line":331},6,[263,333,290],{"class":273},[263,335,293],{"class":277},[263,337,297],{"class":296},[263,339,300],{"class":277},[251,341,342],{"v-slot:js":253},[255,343,347],{"className":344,"code":345,"language":346,"meta":253,"style":253},"language-js shiki shiki-themes github-light github-dark","async function page(before) {\n  const url = new URL(\"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications\");\n  url.searchParams.set(\"limit\", \"25\");\n  if (before) url.searchParams.set(\"before\", before);\n\n  const response = await fetch(url, { headers: { \"X-API-Key\": apiKey } });\n  if (!response.ok) throw new Error(await response.text());\n  return response.json();\n}\n\n\u002F\u002F Walk the whole history a page at a time.\nconst all = [];\nlet cursor;\nlet more = true;\n\nwhile (more) {\n  const data = await page(cursor);\n  all.push(...data.notifications);\n  more = data.hasMore;\n  cursor = data.notifications.at(-1)?.id;\n}\n","js",[32,348,349,370,395,415,433,437,461,497,511,517,522,528,542,551,568,573,582,599,616,627,652],{"__ignoreMap":253},[263,350,351,355,358,361,364,367],{"class":265,"line":266},[263,352,354],{"class":353},"szBVR","async",[263,356,357],{"class":353}," function",[263,359,360],{"class":269}," page",[263,362,363],{"class":296},"(",[263,365,41],{"class":366},"s4XuR",[263,368,369],{"class":296},") {\n",[263,371,372,375,378,381,384,387,389,392],{"class":265,"line":287},[263,373,374],{"class":353},"  const",[263,376,377],{"class":273}," url",[263,379,380],{"class":353}," =",[263,382,383],{"class":353}," new",[263,385,386],{"class":269}," URL",[263,388,363],{"class":296},[263,390,391],{"class":277},"\"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications\"",[263,393,394],{"class":296},");\n",[263,396,397,400,403,405,408,410,413],{"class":265,"line":303},[263,398,399],{"class":296},"  url.searchParams.",[263,401,402],{"class":269},"set",[263,404,363],{"class":296},[263,406,407],{"class":277},"\"limit\"",[263,409,178],{"class":296},[263,411,412],{"class":277},"\"25\"",[263,414,394],{"class":296},[263,416,417,420,423,425,427,430],{"class":265,"line":310},[263,418,419],{"class":353},"  if",[263,421,422],{"class":296}," (before) url.searchParams.",[263,424,402],{"class":269},[263,426,363],{"class":296},[263,428,429],{"class":277},"\"before\"",[263,431,432],{"class":296},", before);\n",[263,434,435],{"class":265,"line":317},[263,436,307],{"emptyLinePlaceholder":306},[263,438,439,441,444,446,449,452,455,458],{"class":265,"line":331},[263,440,374],{"class":353},[263,442,443],{"class":273}," response",[263,445,380],{"class":353},[263,447,448],{"class":353}," await",[263,450,451],{"class":269}," fetch",[263,453,454],{"class":296},"(url, { headers: { ",[263,456,457],{"class":277},"\"X-API-Key\"",[263,459,460],{"class":296},": apiKey } });\n",[263,462,464,466,469,472,475,478,480,483,485,488,491,494],{"class":265,"line":463},7,[263,465,419],{"class":353},[263,467,468],{"class":296}," (",[263,470,471],{"class":353},"!",[263,473,474],{"class":296},"response.ok) ",[263,476,477],{"class":353},"throw",[263,479,383],{"class":353},[263,481,482],{"class":269}," Error",[263,484,363],{"class":296},[263,486,487],{"class":353},"await",[263,489,490],{"class":296}," response.",[263,492,493],{"class":269},"text",[263,495,496],{"class":296},"());\n",[263,498,500,503,505,508],{"class":265,"line":499},8,[263,501,502],{"class":353},"  return",[263,504,490],{"class":296},[263,506,507],{"class":269},"json",[263,509,510],{"class":296},"();\n",[263,512,514],{"class":265,"line":513},9,[263,515,516],{"class":296},"}\n",[263,518,520],{"class":265,"line":519},10,[263,521,307],{"emptyLinePlaceholder":306},[263,523,525],{"class":265,"line":524},11,[263,526,527],{"class":313},"\u002F\u002F Walk the whole history a page at a time.\n",[263,529,531,534,537,539],{"class":265,"line":530},12,[263,532,533],{"class":353},"const",[263,535,536],{"class":273}," all",[263,538,380],{"class":353},[263,540,541],{"class":296}," [];\n",[263,543,545,548],{"class":265,"line":544},13,[263,546,547],{"class":353},"let",[263,549,550],{"class":296}," cursor;\n",[263,552,554,556,559,562,565],{"class":265,"line":553},14,[263,555,547],{"class":353},[263,557,558],{"class":296}," more ",[263,560,561],{"class":353},"=",[263,563,564],{"class":273}," true",[263,566,567],{"class":296},";\n",[263,569,571],{"class":265,"line":570},15,[263,572,307],{"emptyLinePlaceholder":306},[263,574,576,579],{"class":265,"line":575},16,[263,577,578],{"class":353},"while",[263,580,581],{"class":296}," (more) {\n",[263,583,585,587,590,592,594,596],{"class":265,"line":584},17,[263,586,374],{"class":353},[263,588,589],{"class":273}," data",[263,591,380],{"class":353},[263,593,448],{"class":353},[263,595,360],{"class":269},[263,597,598],{"class":296},"(cursor);\n",[263,600,602,605,608,610,613],{"class":265,"line":601},18,[263,603,604],{"class":296},"  all.",[263,606,607],{"class":269},"push",[263,609,363],{"class":296},[263,611,612],{"class":353},"...",[263,614,615],{"class":296},"data.notifications);\n",[263,617,619,622,624],{"class":265,"line":618},19,[263,620,621],{"class":296},"  more ",[263,623,561],{"class":353},[263,625,626],{"class":296}," data.hasMore;\n",[263,628,630,633,635,638,641,643,646,649],{"class":265,"line":629},20,[263,631,632],{"class":296},"  cursor ",[263,634,561],{"class":353},[263,636,637],{"class":296}," data.notifications.",[263,639,640],{"class":269},"at",[263,642,363],{"class":296},[263,644,645],{"class":353},"-",[263,647,648],{"class":273},"1",[263,650,651],{"class":296},")?.id;\n",[263,653,655],{"class":265,"line":654},21,[263,656,516],{"class":296},[251,658,659],{"v-slot:vue":253},[255,660,664],{"className":661,"code":662,"language":663,"meta":253,"style":253},"language-vue shiki shiki-themes github-light github-dark","\u003Cscript setup>\nconst config = useRuntimeConfig();\n\nconst notifications = ref([]);\nconst hasMore = ref(false);\nconst unreadCount = ref(0);\n\nasync function load(before) {\n  const data = await $fetch(\"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications\", {\n    headers: { \"X-API-Key\": config.lokalBoardsKey },\n    query: { limit: 25, before },\n  });\n\n  notifications.value = before\n    ? [...notifications.value, ...data.notifications]\n    : data.notifications;\n  hasMore.value = data.hasMore;\n  unreadCount.value = data.unreadCount;\n}\n\nawait load();\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cp>{{ unreadCount }} unread\u003C\u002Fp>\n  \u003Cul>\n    \u003Cli v-for=\"item in notifications\" :key=\"item.id\">{{ item.message }}\u003C\u002Fli>\n  \u003C\u002Ful>\n  \u003Cbutton v-if=\"hasMore\" @click=\"load(notifications.at(-1).id)\">Show older\u003C\u002Fbutton>\n\u003C\u002Ftemplate>\n","vue",[32,665,666,681,695,699,714,731,749,753,768,788,798,809,814,818,828,846,854,863,873,877,881,889,899,904,913,928,938,970,980,1011],{"__ignoreMap":253},[263,667,668,671,675,678],{"class":265,"line":266},[263,669,670],{"class":296},"\u003C",[263,672,674],{"class":673},"s9eBZ","script",[263,676,677],{"class":269}," setup",[263,679,680],{"class":296},">\n",[263,682,683,685,688,690,693],{"class":265,"line":287},[263,684,533],{"class":353},[263,686,687],{"class":273}," config",[263,689,380],{"class":353},[263,691,692],{"class":269}," useRuntimeConfig",[263,694,510],{"class":296},[263,696,697],{"class":265,"line":303},[263,698,307],{"emptyLinePlaceholder":306},[263,700,701,703,706,708,711],{"class":265,"line":310},[263,702,533],{"class":353},[263,704,705],{"class":273}," notifications",[263,707,380],{"class":353},[263,709,710],{"class":269}," ref",[263,712,713],{"class":296},"([]);\n",[263,715,716,718,721,723,725,727,729],{"class":265,"line":317},[263,717,533],{"class":353},[263,719,720],{"class":273}," hasMore",[263,722,380],{"class":353},[263,724,710],{"class":269},[263,726,363],{"class":296},[263,728,223],{"class":273},[263,730,394],{"class":296},[263,732,733,735,738,740,742,744,747],{"class":265,"line":331},[263,734,533],{"class":353},[263,736,737],{"class":273}," unreadCount",[263,739,380],{"class":353},[263,741,710],{"class":269},[263,743,363],{"class":296},[263,745,746],{"class":273},"0",[263,748,394],{"class":296},[263,750,751],{"class":265,"line":463},[263,752,307],{"emptyLinePlaceholder":306},[263,754,755,757,759,762,764,766],{"class":265,"line":499},[263,756,354],{"class":353},[263,758,357],{"class":353},[263,760,761],{"class":269}," load",[263,763,363],{"class":296},[263,765,41],{"class":366},[263,767,369],{"class":296},[263,769,770,772,774,776,778,781,783,785],{"class":265,"line":513},[263,771,374],{"class":353},[263,773,589],{"class":273},[263,775,380],{"class":353},[263,777,448],{"class":353},[263,779,780],{"class":269}," $fetch",[263,782,363],{"class":296},[263,784,391],{"class":277},[263,786,787],{"class":296},", {\n",[263,789,790,793,795],{"class":265,"line":519},[263,791,792],{"class":296},"    headers: { ",[263,794,457],{"class":277},[263,796,797],{"class":296},": config.lokalBoardsKey },\n",[263,799,800,803,806],{"class":265,"line":524},[263,801,802],{"class":296},"    query: { limit: ",[263,804,805],{"class":273},"25",[263,807,808],{"class":296},", before },\n",[263,810,811],{"class":265,"line":530},[263,812,813],{"class":296},"  });\n",[263,815,816],{"class":265,"line":544},[263,817,307],{"emptyLinePlaceholder":306},[263,819,820,823,825],{"class":265,"line":553},[263,821,822],{"class":296},"  notifications.value ",[263,824,561],{"class":353},[263,826,827],{"class":296}," before\n",[263,829,830,833,836,838,841,843],{"class":265,"line":570},[263,831,832],{"class":353},"    ?",[263,834,835],{"class":296}," [",[263,837,612],{"class":353},[263,839,840],{"class":296},"notifications.value, ",[263,842,612],{"class":353},[263,844,845],{"class":296},"data.notifications]\n",[263,847,848,851],{"class":265,"line":575},[263,849,850],{"class":353},"    :",[263,852,853],{"class":296}," data.notifications;\n",[263,855,856,859,861],{"class":265,"line":584},[263,857,858],{"class":296},"  hasMore.value ",[263,860,561],{"class":353},[263,862,626],{"class":296},[263,864,865,868,870],{"class":265,"line":601},[263,866,867],{"class":296},"  unreadCount.value ",[263,869,561],{"class":353},[263,871,872],{"class":296}," data.unreadCount;\n",[263,874,875],{"class":265,"line":618},[263,876,516],{"class":296},[263,878,879],{"class":265,"line":629},[263,880,307],{"emptyLinePlaceholder":306},[263,882,883,885,887],{"class":265,"line":654},[263,884,487],{"class":353},[263,886,761],{"class":269},[263,888,510],{"class":296},[263,890,892,895,897],{"class":265,"line":891},22,[263,893,894],{"class":296},"\u003C\u002F",[263,896,674],{"class":673},[263,898,680],{"class":296},[263,900,902],{"class":265,"line":901},23,[263,903,307],{"emptyLinePlaceholder":306},[263,905,907,909,911],{"class":265,"line":906},24,[263,908,670],{"class":296},[263,910,251],{"class":673},[263,912,680],{"class":296},[263,914,916,919,921,924,926],{"class":265,"line":915},25,[263,917,918],{"class":296},"  \u003C",[263,920,14],{"class":673},[263,922,923],{"class":296},">{{ unreadCount }} unread\u003C\u002F",[263,925,14],{"class":673},[263,927,680],{"class":296},[263,929,931,933,936],{"class":265,"line":930},26,[263,932,918],{"class":296},[263,934,935],{"class":673},"ul",[263,937,680],{"class":296},[263,939,941,944,947,950,952,955,958,960,963,966,968],{"class":265,"line":940},27,[263,942,943],{"class":296},"    \u003C",[263,945,946],{"class":673},"li",[263,948,949],{"class":269}," v-for",[263,951,561],{"class":296},[263,953,954],{"class":277},"\"item in notifications\"",[263,956,957],{"class":269}," :key",[263,959,561],{"class":296},[263,961,962],{"class":277},"\"item.id\"",[263,964,965],{"class":296},">{{ item.message }}\u003C\u002F",[263,967,946],{"class":673},[263,969,680],{"class":296},[263,971,973,976,978],{"class":265,"line":972},28,[263,974,975],{"class":296},"  \u003C\u002F",[263,977,935],{"class":673},[263,979,680],{"class":296},[263,981,983,985,988,991,993,996,999,1001,1004,1007,1009],{"class":265,"line":982},29,[263,984,918],{"class":296},[263,986,987],{"class":673},"button",[263,989,990],{"class":269}," v-if",[263,992,561],{"class":296},[263,994,995],{"class":277},"\"hasMore\"",[263,997,998],{"class":269}," @click",[263,1000,561],{"class":296},[263,1002,1003],{"class":277},"\"load(notifications.at(-1).id)\"",[263,1005,1006],{"class":296},">Show older\u003C\u002F",[263,1008,987],{"class":673},[263,1010,680],{"class":296},[263,1012,1014,1016,1018],{"class":265,"line":1013},30,[263,1015,894],{"class":296},[263,1017,251],{"class":673},[263,1019,680],{"class":296},[251,1021,1022],{"v-slot:react":253},[255,1023,1027],{"className":1024,"code":1025,"language":1026,"meta":253,"style":253},"language-jsx shiki shiki-themes github-light github-dark","import { useCallback, useEffect, useState } from \"react\";\n\nexport function Example({ apiKey }) {\n  const [notifications, setNotifications] = useState([]);\n  const [hasMore, setHasMore] = useState(false);\n\n  const load = useCallback(\n    async (before) => {\n      const url = new URL(\"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications\");\n      url.searchParams.set(\"limit\", \"25\");\n      if (before) url.searchParams.set(\"before\", before);\n\n      const data = await fetch(url, { headers: { \"X-API-Key\": apiKey } }).then((r) =>\n        r.json(),\n      );\n\n      setNotifications((current) =>\n        before ? [...current, ...data.notifications] : data.notifications,\n      );\n      setHasMore(data.hasMore);\n    },\n    [apiKey],\n  );\n\n  useEffect(() => {\n    load();\n  }, [load]);\n\n  return (\n    \u003C>\n      \u003Cul>\n        {notifications.map((item) => (\n          \u003Cli key={item.id}>{item.message}\u003C\u002Fli>\n        ))}\n      \u003C\u002Ful>\n      {hasMore && (\n        \u003Cbutton onClick={() => load(notifications.at(-1).id)}>Show older\u003C\u002Fbutton>\n      )}\n    \u003C\u002F>\n  );\n}\n","jsx",[32,1028,1029,1045,1049,1068,1091,1116,1120,1134,1152,1171,1188,1203,1207,1240,1250,1255,1259,1273,1299,1303,1311,1316,1321,1326,1330,1342,1349,1354,1358,1365,1370,1380,1400,1420,1426,1436,1447,1485,1491,1497,1502],{"__ignoreMap":253},[263,1030,1031,1034,1037,1040,1043],{"class":265,"line":266},[263,1032,1033],{"class":353},"import",[263,1035,1036],{"class":296}," { useCallback, useEffect, useState } ",[263,1038,1039],{"class":353},"from",[263,1041,1042],{"class":277}," \"react\"",[263,1044,567],{"class":296},[263,1046,1047],{"class":265,"line":287},[263,1048,307],{"emptyLinePlaceholder":306},[263,1050,1051,1054,1056,1059,1062,1065],{"class":265,"line":303},[263,1052,1053],{"class":353},"export",[263,1055,357],{"class":353},[263,1057,1058],{"class":269}," Example",[263,1060,1061],{"class":296},"({ ",[263,1063,1064],{"class":366},"apiKey",[263,1066,1067],{"class":296}," }) {\n",[263,1069,1070,1072,1074,1076,1078,1081,1084,1086,1089],{"class":265,"line":310},[263,1071,374],{"class":353},[263,1073,835],{"class":296},[263,1075,12],{"class":273},[263,1077,178],{"class":296},[263,1079,1080],{"class":273},"setNotifications",[263,1082,1083],{"class":296},"] ",[263,1085,561],{"class":353},[263,1087,1088],{"class":269}," useState",[263,1090,713],{"class":296},[263,1092,1093,1095,1097,1099,1101,1104,1106,1108,1110,1112,1114],{"class":265,"line":317},[263,1094,374],{"class":353},[263,1096,835],{"class":296},[263,1098,214],{"class":273},[263,1100,178],{"class":296},[263,1102,1103],{"class":273},"setHasMore",[263,1105,1083],{"class":296},[263,1107,561],{"class":353},[263,1109,1088],{"class":269},[263,1111,363],{"class":296},[263,1113,223],{"class":273},[263,1115,394],{"class":296},[263,1117,1118],{"class":265,"line":331},[263,1119,307],{"emptyLinePlaceholder":306},[263,1121,1122,1124,1126,1128,1131],{"class":265,"line":463},[263,1123,374],{"class":353},[263,1125,761],{"class":273},[263,1127,380],{"class":353},[263,1129,1130],{"class":269}," useCallback",[263,1132,1133],{"class":296},"(\n",[263,1135,1136,1139,1141,1143,1146,1149],{"class":265,"line":499},[263,1137,1138],{"class":353},"    async",[263,1140,468],{"class":296},[263,1142,41],{"class":366},[263,1144,1145],{"class":296},") ",[263,1147,1148],{"class":353},"=>",[263,1150,1151],{"class":296}," {\n",[263,1153,1154,1157,1159,1161,1163,1165,1167,1169],{"class":265,"line":513},[263,1155,1156],{"class":353},"      const",[263,1158,377],{"class":273},[263,1160,380],{"class":353},[263,1162,383],{"class":353},[263,1164,386],{"class":269},[263,1166,363],{"class":296},[263,1168,391],{"class":277},[263,1170,394],{"class":296},[263,1172,1173,1176,1178,1180,1182,1184,1186],{"class":265,"line":519},[263,1174,1175],{"class":296},"      url.searchParams.",[263,1177,402],{"class":269},[263,1179,363],{"class":296},[263,1181,407],{"class":277},[263,1183,178],{"class":296},[263,1185,412],{"class":277},[263,1187,394],{"class":296},[263,1189,1190,1193,1195,1197,1199,1201],{"class":265,"line":524},[263,1191,1192],{"class":353},"      if",[263,1194,422],{"class":296},[263,1196,402],{"class":269},[263,1198,363],{"class":296},[263,1200,429],{"class":277},[263,1202,432],{"class":296},[263,1204,1205],{"class":265,"line":530},[263,1206,307],{"emptyLinePlaceholder":306},[263,1208,1209,1211,1213,1215,1217,1219,1221,1223,1226,1229,1232,1235,1237],{"class":265,"line":544},[263,1210,1156],{"class":353},[263,1212,589],{"class":273},[263,1214,380],{"class":353},[263,1216,448],{"class":353},[263,1218,451],{"class":269},[263,1220,454],{"class":296},[263,1222,457],{"class":277},[263,1224,1225],{"class":296},": apiKey } }).",[263,1227,1228],{"class":269},"then",[263,1230,1231],{"class":296},"((",[263,1233,1234],{"class":366},"r",[263,1236,1145],{"class":296},[263,1238,1239],{"class":353},"=>\n",[263,1241,1242,1245,1247],{"class":265,"line":553},[263,1243,1244],{"class":296},"        r.",[263,1246,507],{"class":269},[263,1248,1249],{"class":296},"(),\n",[263,1251,1252],{"class":265,"line":570},[263,1253,1254],{"class":296},"      );\n",[263,1256,1257],{"class":265,"line":575},[263,1258,307],{"emptyLinePlaceholder":306},[263,1260,1261,1264,1266,1269,1271],{"class":265,"line":584},[263,1262,1263],{"class":269},"      setNotifications",[263,1265,1231],{"class":296},[263,1267,1268],{"class":366},"current",[263,1270,1145],{"class":296},[263,1272,1239],{"class":353},[263,1274,1275,1278,1281,1283,1285,1288,1290,1293,1296],{"class":265,"line":601},[263,1276,1277],{"class":296},"        before ",[263,1279,1280],{"class":353},"?",[263,1282,835],{"class":296},[263,1284,612],{"class":353},[263,1286,1287],{"class":296},"current, ",[263,1289,612],{"class":353},[263,1291,1292],{"class":296},"data.notifications] ",[263,1294,1295],{"class":353},":",[263,1297,1298],{"class":296}," data.notifications,\n",[263,1300,1301],{"class":265,"line":618},[263,1302,1254],{"class":296},[263,1304,1305,1308],{"class":265,"line":629},[263,1306,1307],{"class":269},"      setHasMore",[263,1309,1310],{"class":296},"(data.hasMore);\n",[263,1312,1313],{"class":265,"line":654},[263,1314,1315],{"class":296},"    },\n",[263,1317,1318],{"class":265,"line":891},[263,1319,1320],{"class":296},"    [apiKey],\n",[263,1322,1323],{"class":265,"line":901},[263,1324,1325],{"class":296},"  );\n",[263,1327,1328],{"class":265,"line":906},[263,1329,307],{"emptyLinePlaceholder":306},[263,1331,1332,1335,1338,1340],{"class":265,"line":915},[263,1333,1334],{"class":269},"  useEffect",[263,1336,1337],{"class":296},"(() ",[263,1339,1148],{"class":353},[263,1341,1151],{"class":296},[263,1343,1344,1347],{"class":265,"line":930},[263,1345,1346],{"class":269},"    load",[263,1348,510],{"class":296},[263,1350,1351],{"class":265,"line":940},[263,1352,1353],{"class":296},"  }, [load]);\n",[263,1355,1356],{"class":265,"line":972},[263,1357,307],{"emptyLinePlaceholder":306},[263,1359,1360,1362],{"class":265,"line":982},[263,1361,502],{"class":353},[263,1363,1364],{"class":296}," (\n",[263,1366,1367],{"class":265,"line":1013},[263,1368,1369],{"class":296},"    \u003C>\n",[263,1371,1373,1376,1378],{"class":265,"line":1372},31,[263,1374,1375],{"class":296},"      \u003C",[263,1377,935],{"class":673},[263,1379,680],{"class":296},[263,1381,1383,1386,1389,1391,1394,1396,1398],{"class":265,"line":1382},32,[263,1384,1385],{"class":296},"        {notifications.",[263,1387,1388],{"class":269},"map",[263,1390,1231],{"class":296},[263,1392,1393],{"class":366},"item",[263,1395,1145],{"class":296},[263,1397,1148],{"class":353},[263,1399,1364],{"class":296},[263,1401,1403,1406,1408,1411,1413,1416,1418],{"class":265,"line":1402},33,[263,1404,1405],{"class":296},"          \u003C",[263,1407,946],{"class":673},[263,1409,1410],{"class":269}," key",[263,1412,561],{"class":353},[263,1414,1415],{"class":296},"{item.id}>{item.message}\u003C\u002F",[263,1417,946],{"class":673},[263,1419,680],{"class":296},[263,1421,1423],{"class":265,"line":1422},34,[263,1424,1425],{"class":296},"        ))}\n",[263,1427,1429,1432,1434],{"class":265,"line":1428},35,[263,1430,1431],{"class":296},"      \u003C\u002F",[263,1433,935],{"class":673},[263,1435,680],{"class":296},[263,1437,1439,1442,1445],{"class":265,"line":1438},36,[263,1440,1441],{"class":296},"      {hasMore ",[263,1443,1444],{"class":353},"&&",[263,1446,1364],{"class":296},[263,1448,1450,1453,1455,1458,1460,1463,1465,1467,1470,1472,1474,1476,1478,1481,1483],{"class":265,"line":1449},37,[263,1451,1452],{"class":296},"        \u003C",[263,1454,987],{"class":673},[263,1456,1457],{"class":269}," onClick",[263,1459,561],{"class":353},[263,1461,1462],{"class":296},"{() ",[263,1464,1148],{"class":353},[263,1466,761],{"class":269},[263,1468,1469],{"class":296},"(notifications.",[263,1471,640],{"class":269},[263,1473,363],{"class":296},[263,1475,645],{"class":353},[263,1477,648],{"class":273},[263,1479,1480],{"class":296},").id)}>Show older\u003C\u002F",[263,1482,987],{"class":673},[263,1484,680],{"class":296},[263,1486,1488],{"class":265,"line":1487},38,[263,1489,1490],{"class":296},"      )}\n",[263,1492,1494],{"class":265,"line":1493},39,[263,1495,1496],{"class":296},"    \u003C\u002F>\n",[263,1498,1500],{"class":265,"line":1499},40,[263,1501,1325],{"class":296},[263,1503,1505],{"class":265,"line":1504},41,[263,1506,516],{"class":296},[251,1508,1509],{"v-slot:php":253},[255,1510,1514],{"className":1511,"code":1512,"language":1513,"meta":253,"style":253},"language-php shiki shiki-themes github-light github-dark","\u003C?php\n\n$ch = curl_init('https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?limit=25');\n\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n    'X-API-Key: ' . $apiKey,\n]);\n\n$response = json_decode(curl_exec($ch), true);\ncurl_close($ch);\n\n\u002F\u002F The next page starts after the last notification of this one.\n$cursor = end($response['notifications'])['id'];\n","php",[32,1515,1516,1521,1525,1530,1534,1539,1544,1549,1554,1558,1563,1568,1572,1577],{"__ignoreMap":253},[263,1517,1518],{"class":265,"line":266},[263,1519,1520],{},"\u003C?php\n",[263,1522,1523],{"class":265,"line":287},[263,1524,307],{"emptyLinePlaceholder":306},[263,1526,1527],{"class":265,"line":303},[263,1528,1529],{},"$ch = curl_init('https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?limit=25');\n",[263,1531,1532],{"class":265,"line":310},[263,1533,307],{"emptyLinePlaceholder":306},[263,1535,1536],{"class":265,"line":317},[263,1537,1538],{},"curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n",[263,1540,1541],{"class":265,"line":331},[263,1542,1543],{},"curl_setopt($ch, CURLOPT_HTTPHEADER, [\n",[263,1545,1546],{"class":265,"line":463},[263,1547,1548],{},"    'X-API-Key: ' . $apiKey,\n",[263,1550,1551],{"class":265,"line":499},[263,1552,1553],{},"]);\n",[263,1555,1556],{"class":265,"line":513},[263,1557,307],{"emptyLinePlaceholder":306},[263,1559,1560],{"class":265,"line":519},[263,1561,1562],{},"$response = json_decode(curl_exec($ch), true);\n",[263,1564,1565],{"class":265,"line":524},[263,1566,1567],{},"curl_close($ch);\n",[263,1569,1570],{"class":265,"line":530},[263,1571,307],{"emptyLinePlaceholder":306},[263,1573,1574],{"class":265,"line":544},[263,1575,1576],{},"\u002F\u002F The next page starts after the last notification of this one.\n",[263,1578,1579],{"class":265,"line":553},[263,1580,1581],{},"$cursor = end($response['notifications'])['id'];\n",[44,1583,1585],{"id":1584},"only-the-cards-with-something-unread","Only the cards with something unread",[14,1587,1588,1590],{},[32,1589,119],{}," answers a narrower question: which cards still have an unread\nnotification on them. It is what a board view needs to mark its tiles, and it\nsends a handful of ids rather than every message and avatar in the history.",[14,1592,1593,1594,1596,1597,567,1600,178,1602,203,1604,1606,1607,1609,1610,1612],{},"Add ",[32,1595,134],{}," to ask about one board. The answer is ",[32,1598,1599],{},"{ \"cardIds\": [...] }",[32,1601,12],{},[32,1603,214],{},[32,1605,234],{}," are not part of it, and ",[32,1608,34],{}," and\n",[32,1611,41],{}," do not apply.",[248,1614,1615,1645,1746,1926,2195],{},[251,1616,1617],{"v-slot:curl":253},[255,1618,1620],{"className":257,"code":1619,"language":259,"meta":253,"style":253},"curl -X GET \"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?unreadCards=1&boardId=123\" \\\n  -H \"X-API-Key: $LOKALBOARDS_KEY\"\n",[32,1621,1622,1635],{"__ignoreMap":253},[263,1623,1624,1626,1628,1630,1633],{"class":265,"line":266},[263,1625,270],{"class":269},[263,1627,274],{"class":273},[263,1629,278],{"class":277},[263,1631,1632],{"class":277}," \"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?unreadCards=1&boardId=123\"",[263,1634,284],{"class":273},[263,1636,1637,1639,1641,1643],{"class":265,"line":287},[263,1638,290],{"class":273},[263,1640,293],{"class":277},[263,1642,297],{"class":296},[263,1644,300],{"class":277},[251,1646,1647],{"v-slot:js":253},[255,1648,1650],{"className":344,"code":1649,"language":346,"meta":253,"style":253},"const response = await fetch(\n  \"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?unreadCards=1&boardId=123\",\n  { headers: { \"X-API-Key\": apiKey } },\n);\n\nif (!response.ok) throw new Error(await response.text());\n\nconst { cardIds } = await response.json();\n",[32,1651,1652,1666,1674,1684,1688,1692,1719,1723],{"__ignoreMap":253},[263,1653,1654,1656,1658,1660,1662,1664],{"class":265,"line":266},[263,1655,533],{"class":353},[263,1657,443],{"class":273},[263,1659,380],{"class":353},[263,1661,448],{"class":353},[263,1663,451],{"class":269},[263,1665,1133],{"class":296},[263,1667,1668,1671],{"class":265,"line":287},[263,1669,1670],{"class":277},"  \"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?unreadCards=1&boardId=123\"",[263,1672,1673],{"class":296},",\n",[263,1675,1676,1679,1681],{"class":265,"line":303},[263,1677,1678],{"class":296},"  { headers: { ",[263,1680,457],{"class":277},[263,1682,1683],{"class":296},": apiKey } },\n",[263,1685,1686],{"class":265,"line":310},[263,1687,394],{"class":296},[263,1689,1690],{"class":265,"line":317},[263,1691,307],{"emptyLinePlaceholder":306},[263,1693,1694,1697,1699,1701,1703,1705,1707,1709,1711,1713,1715,1717],{"class":265,"line":331},[263,1695,1696],{"class":353},"if",[263,1698,468],{"class":296},[263,1700,471],{"class":353},[263,1702,474],{"class":296},[263,1704,477],{"class":353},[263,1706,383],{"class":353},[263,1708,482],{"class":269},[263,1710,363],{"class":296},[263,1712,487],{"class":353},[263,1714,490],{"class":296},[263,1716,493],{"class":269},[263,1718,496],{"class":296},[263,1720,1721],{"class":265,"line":463},[263,1722,307],{"emptyLinePlaceholder":306},[263,1724,1725,1727,1730,1733,1736,1738,1740,1742,1744],{"class":265,"line":499},[263,1726,533],{"class":353},[263,1728,1729],{"class":296}," { ",[263,1731,1732],{"class":273},"cardIds",[263,1734,1735],{"class":296}," } ",[263,1737,561],{"class":353},[263,1739,448],{"class":353},[263,1741,490],{"class":296},[263,1743,507],{"class":269},[263,1745,510],{"class":296},[251,1747,1748],{"v-slot:vue":253},[255,1749,1751],{"className":661,"code":1750,"language":663,"meta":253,"style":253},"\u003Cscript setup>\nconst config = useRuntimeConfig();\n\nconst { data } = await useAsyncData(\"unread-cards\", () =>\n  $fetch(\"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications\", {\n    headers: { \"X-API-Key\": config.lokalBoardsKey },\n    query: { unreadCards: 1, boardId: 123 },\n  }),\n);\n\nconst unread = computed(() => new Set(data.value?.cardIds ?? []));\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cp>{{ unread.size }} card(s) with unread changes\u003C\u002Fp>\n\u003C\u002Ftemplate>\n",[32,1752,1753,1763,1775,1779,1807,1818,1826,1842,1847,1851,1855,1885,1893,1897,1905,1918],{"__ignoreMap":253},[263,1754,1755,1757,1759,1761],{"class":265,"line":266},[263,1756,670],{"class":296},[263,1758,674],{"class":673},[263,1760,677],{"class":269},[263,1762,680],{"class":296},[263,1764,1765,1767,1769,1771,1773],{"class":265,"line":287},[263,1766,533],{"class":353},[263,1768,687],{"class":273},[263,1770,380],{"class":353},[263,1772,692],{"class":269},[263,1774,510],{"class":296},[263,1776,1777],{"class":265,"line":303},[263,1778,307],{"emptyLinePlaceholder":306},[263,1780,1781,1783,1785,1788,1790,1792,1794,1797,1799,1802,1805],{"class":265,"line":310},[263,1782,533],{"class":353},[263,1784,1729],{"class":296},[263,1786,1787],{"class":273},"data",[263,1789,1735],{"class":296},[263,1791,561],{"class":353},[263,1793,448],{"class":353},[263,1795,1796],{"class":269}," useAsyncData",[263,1798,363],{"class":296},[263,1800,1801],{"class":277},"\"unread-cards\"",[263,1803,1804],{"class":296},", () ",[263,1806,1239],{"class":353},[263,1808,1809,1812,1814,1816],{"class":265,"line":317},[263,1810,1811],{"class":269},"  $fetch",[263,1813,363],{"class":296},[263,1815,391],{"class":277},[263,1817,787],{"class":296},[263,1819,1820,1822,1824],{"class":265,"line":331},[263,1821,792],{"class":296},[263,1823,457],{"class":277},[263,1825,797],{"class":296},[263,1827,1828,1831,1833,1836,1839],{"class":265,"line":463},[263,1829,1830],{"class":296},"    query: { unreadCards: ",[263,1832,648],{"class":273},[263,1834,1835],{"class":296},", boardId: ",[263,1837,1838],{"class":273},"123",[263,1840,1841],{"class":296}," },\n",[263,1843,1844],{"class":265,"line":499},[263,1845,1846],{"class":296},"  }),\n",[263,1848,1849],{"class":265,"line":513},[263,1850,394],{"class":296},[263,1852,1853],{"class":265,"line":519},[263,1854,307],{"emptyLinePlaceholder":306},[263,1856,1857,1859,1862,1864,1867,1869,1871,1873,1876,1879,1882],{"class":265,"line":524},[263,1858,533],{"class":353},[263,1860,1861],{"class":273}," unread",[263,1863,380],{"class":353},[263,1865,1866],{"class":269}," computed",[263,1868,1337],{"class":296},[263,1870,1148],{"class":353},[263,1872,383],{"class":353},[263,1874,1875],{"class":269}," Set",[263,1877,1878],{"class":296},"(data.value?.cardIds ",[263,1880,1881],{"class":353},"??",[263,1883,1884],{"class":296}," []));\n",[263,1886,1887,1889,1891],{"class":265,"line":530},[263,1888,894],{"class":296},[263,1890,674],{"class":673},[263,1892,680],{"class":296},[263,1894,1895],{"class":265,"line":544},[263,1896,307],{"emptyLinePlaceholder":306},[263,1898,1899,1901,1903],{"class":265,"line":553},[263,1900,670],{"class":296},[263,1902,251],{"class":673},[263,1904,680],{"class":296},[263,1906,1907,1909,1911,1914,1916],{"class":265,"line":570},[263,1908,918],{"class":296},[263,1910,14],{"class":673},[263,1912,1913],{"class":296},">{{ unread.size }} card(s) with unread changes\u003C\u002F",[263,1915,14],{"class":673},[263,1917,680],{"class":296},[263,1919,1920,1922,1924],{"class":265,"line":575},[263,1921,894],{"class":296},[263,1923,251],{"class":673},[263,1925,680],{"class":296},[251,1927,1928],{"v-slot:react":253},[255,1929,1931],{"className":1024,"code":1930,"language":1026,"meta":253,"style":253},"import { useEffect, useState } from \"react\";\n\nexport function Example({ apiKey }) {\n  const [cardIds, setCardIds] = useState([]);\n\n  useEffect(() => {\n    const controller = new AbortController();\n\n    fetch(\n      \"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?unreadCards=1&boardId=123\",\n      { headers: { \"X-API-Key\": apiKey }, signal: controller.signal },\n    )\n      .then((response) => response.json())\n      .then((data) => setCardIds(data.cardIds))\n      .catch((error) => {\n        if (error.name !== \"AbortError\") console.error(error);\n      });\n\n    return () => controller.abort();\n  }, [apiKey]);\n\n  return \u003Cp>{cardIds.length} card(s) with unread changes\u003C\u002Fp>;\n}\n",[32,1932,1933,1946,1950,1964,1985,1989,1999,2016,2020,2027,2034,2044,2049,2072,2092,2110,2132,2137,2141,2159,2164,2168,2191],{"__ignoreMap":253},[263,1934,1935,1937,1940,1942,1944],{"class":265,"line":266},[263,1936,1033],{"class":353},[263,1938,1939],{"class":296}," { useEffect, useState } ",[263,1941,1039],{"class":353},[263,1943,1042],{"class":277},[263,1945,567],{"class":296},[263,1947,1948],{"class":265,"line":287},[263,1949,307],{"emptyLinePlaceholder":306},[263,1951,1952,1954,1956,1958,1960,1962],{"class":265,"line":303},[263,1953,1053],{"class":353},[263,1955,357],{"class":353},[263,1957,1058],{"class":269},[263,1959,1061],{"class":296},[263,1961,1064],{"class":366},[263,1963,1067],{"class":296},[263,1965,1966,1968,1970,1972,1974,1977,1979,1981,1983],{"class":265,"line":310},[263,1967,374],{"class":353},[263,1969,835],{"class":296},[263,1971,1732],{"class":273},[263,1973,178],{"class":296},[263,1975,1976],{"class":273},"setCardIds",[263,1978,1083],{"class":296},[263,1980,561],{"class":353},[263,1982,1088],{"class":269},[263,1984,713],{"class":296},[263,1986,1987],{"class":265,"line":317},[263,1988,307],{"emptyLinePlaceholder":306},[263,1990,1991,1993,1995,1997],{"class":265,"line":331},[263,1992,1334],{"class":269},[263,1994,1337],{"class":296},[263,1996,1148],{"class":353},[263,1998,1151],{"class":296},[263,2000,2001,2004,2007,2009,2011,2014],{"class":265,"line":463},[263,2002,2003],{"class":353},"    const",[263,2005,2006],{"class":273}," controller",[263,2008,380],{"class":353},[263,2010,383],{"class":353},[263,2012,2013],{"class":269}," AbortController",[263,2015,510],{"class":296},[263,2017,2018],{"class":265,"line":499},[263,2019,307],{"emptyLinePlaceholder":306},[263,2021,2022,2025],{"class":265,"line":513},[263,2023,2024],{"class":269},"    fetch",[263,2026,1133],{"class":296},[263,2028,2029,2032],{"class":265,"line":519},[263,2030,2031],{"class":277},"      \"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?unreadCards=1&boardId=123\"",[263,2033,1673],{"class":296},[263,2035,2036,2039,2041],{"class":265,"line":524},[263,2037,2038],{"class":296},"      { headers: { ",[263,2040,457],{"class":277},[263,2042,2043],{"class":296},": apiKey }, signal: controller.signal },\n",[263,2045,2046],{"class":265,"line":530},[263,2047,2048],{"class":296},"    )\n",[263,2050,2051,2054,2056,2058,2061,2063,2065,2067,2069],{"class":265,"line":544},[263,2052,2053],{"class":296},"      .",[263,2055,1228],{"class":269},[263,2057,1231],{"class":296},[263,2059,2060],{"class":366},"response",[263,2062,1145],{"class":296},[263,2064,1148],{"class":353},[263,2066,490],{"class":296},[263,2068,507],{"class":269},[263,2070,2071],{"class":296},"())\n",[263,2073,2074,2076,2078,2080,2082,2084,2086,2089],{"class":265,"line":553},[263,2075,2053],{"class":296},[263,2077,1228],{"class":269},[263,2079,1231],{"class":296},[263,2081,1787],{"class":366},[263,2083,1145],{"class":296},[263,2085,1148],{"class":353},[263,2087,2088],{"class":269}," setCardIds",[263,2090,2091],{"class":296},"(data.cardIds))\n",[263,2093,2094,2096,2099,2101,2104,2106,2108],{"class":265,"line":570},[263,2095,2053],{"class":296},[263,2097,2098],{"class":269},"catch",[263,2100,1231],{"class":296},[263,2102,2103],{"class":366},"error",[263,2105,1145],{"class":296},[263,2107,1148],{"class":353},[263,2109,1151],{"class":296},[263,2111,2112,2115,2118,2121,2124,2127,2129],{"class":265,"line":575},[263,2113,2114],{"class":353},"        if",[263,2116,2117],{"class":296}," (error.name ",[263,2119,2120],{"class":353},"!==",[263,2122,2123],{"class":277}," \"AbortError\"",[263,2125,2126],{"class":296},") console.",[263,2128,2103],{"class":269},[263,2130,2131],{"class":296},"(error);\n",[263,2133,2134],{"class":265,"line":584},[263,2135,2136],{"class":296},"      });\n",[263,2138,2139],{"class":265,"line":601},[263,2140,307],{"emptyLinePlaceholder":306},[263,2142,2143,2146,2149,2151,2154,2157],{"class":265,"line":618},[263,2144,2145],{"class":353},"    return",[263,2147,2148],{"class":296}," () ",[263,2150,1148],{"class":353},[263,2152,2153],{"class":296}," controller.",[263,2155,2156],{"class":269},"abort",[263,2158,510],{"class":296},[263,2160,2161],{"class":265,"line":629},[263,2162,2163],{"class":296},"  }, [apiKey]);\n",[263,2165,2166],{"class":265,"line":654},[263,2167,307],{"emptyLinePlaceholder":306},[263,2169,2170,2172,2175,2177,2180,2183,2186,2188],{"class":265,"line":891},[263,2171,502],{"class":353},[263,2173,2174],{"class":296}," \u003C",[263,2176,14],{"class":673},[263,2178,2179],{"class":296},">{cardIds.",[263,2181,2182],{"class":273},"length",[263,2184,2185],{"class":296},"} card(s) with unread changes\u003C\u002F",[263,2187,14],{"class":673},[263,2189,2190],{"class":296},">;\n",[263,2192,2193],{"class":265,"line":901},[263,2194,516],{"class":296},[251,2196,2197],{"v-slot:php":253},[255,2198,2200],{"className":1511,"code":2199,"language":1513,"meta":253,"style":253},"\u003C?php\n\n$ch = curl_init('https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?unreadCards=1&boardId=123');\n\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n    'X-API-Key: ' . $apiKey,\n]);\n\n$cardIds = json_decode(curl_exec($ch), true)['cardIds'];\ncurl_close($ch);\n",[32,2201,2202,2206,2210,2215,2219,2223,2227,2231,2235,2239,2244],{"__ignoreMap":253},[263,2203,2204],{"class":265,"line":266},[263,2205,1520],{},[263,2207,2208],{"class":265,"line":287},[263,2209,307],{"emptyLinePlaceholder":306},[263,2211,2212],{"class":265,"line":303},[263,2213,2214],{},"$ch = curl_init('https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?unreadCards=1&boardId=123');\n",[263,2216,2217],{"class":265,"line":310},[263,2218,307],{"emptyLinePlaceholder":306},[263,2220,2221],{"class":265,"line":317},[263,2222,1538],{},[263,2224,2225],{"class":265,"line":331},[263,2226,1543],{},[263,2228,2229],{"class":265,"line":463},[263,2230,1548],{},[263,2232,2233],{"class":265,"line":499},[263,2234,1553],{},[263,2236,2237],{"class":265,"line":513},[263,2238,307],{"emptyLinePlaceholder":306},[263,2240,2241],{"class":265,"line":519},[263,2242,2243],{},"$cardIds = json_decode(curl_exec($ch), true)['cardIds'];\n",[263,2245,2246],{"class":265,"line":524},[263,2247,1567],{},[21,2249,2251],{"id":2250},"patch-apidatanotifications","PATCH \u002Fapi\u002Fdata\u002Fnotifications",[14,2253,2254],{},"Marks notifications read. Give exactly one of the three.",[44,2256,47],{"id":2257},"parameters-1",[49,2259,2260,2272],{},[52,2261,2262],{},[55,2263,2264,2266,2268,2270],{},[58,2265,60],{},[58,2267,63],{},[58,2269,66],{},[58,2271,69],{},[71,2273,2274,2288,2301],{},[55,2275,2276,2280,2282,2285],{},[76,2277,2278],{},[32,2279,186],{},[76,2281,82],{},[76,2283,2284],{},"one of",[76,2286,2287],{},"Everything unread about this card.",[55,2289,2290,2294,2296,2298],{},[76,2291,2292],{},[32,2293,134],{},[76,2295,82],{},[76,2297,2284],{},[76,2299,2300],{},"The board's own notifications — an invitation, say. What belongs to a card on it stays unread until the card is read.",[55,2302,2303,2307,2309,2311],{},[76,2304,2305],{},[32,2306,108],{},[76,2308,82],{},[76,2310,2284],{},[76,2312,2313],{},"A single notification.",[248,2315,2316,2347,2444,2658,2874],{},[251,2317,2318],{"v-slot:curl":253},[255,2319,2321],{"className":257,"code":2320,"language":259,"meta":253,"style":253},"curl -X PATCH \"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?cardId=501\" \\\n  -H \"X-API-Key: $LOKALBOARDS_KEY\"\n",[32,2322,2323,2337],{"__ignoreMap":253},[263,2324,2325,2327,2329,2332,2335],{"class":265,"line":266},[263,2326,270],{"class":269},[263,2328,274],{"class":273},[263,2330,2331],{"class":277}," PATCH",[263,2333,2334],{"class":277}," \"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?cardId=501\"",[263,2336,284],{"class":273},[263,2338,2339,2341,2343,2345],{"class":265,"line":287},[263,2340,290],{"class":273},[263,2342,293],{"class":277},[263,2344,297],{"class":296},[263,2346,300],{"class":277},[251,2348,2349],{"v-slot:js":253},[255,2350,2352],{"className":344,"code":2351,"language":346,"meta":253,"style":253},"const response = await fetch(\n  \"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?cardId=501\",\n  { method: \"PATCH\", headers: { \"X-API-Key\": apiKey } },\n);\n\nif (!response.ok) throw new Error(await response.text());\n\nconst data = await response.json();\n",[32,2353,2354,2368,2375,2390,2394,2398,2424,2428],{"__ignoreMap":253},[263,2355,2356,2358,2360,2362,2364,2366],{"class":265,"line":266},[263,2357,533],{"class":353},[263,2359,443],{"class":273},[263,2361,380],{"class":353},[263,2363,448],{"class":353},[263,2365,451],{"class":269},[263,2367,1133],{"class":296},[263,2369,2370,2373],{"class":265,"line":287},[263,2371,2372],{"class":277},"  \"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?cardId=501\"",[263,2374,1673],{"class":296},[263,2376,2377,2380,2383,2386,2388],{"class":265,"line":303},[263,2378,2379],{"class":296},"  { method: ",[263,2381,2382],{"class":277},"\"PATCH\"",[263,2384,2385],{"class":296},", headers: { ",[263,2387,457],{"class":277},[263,2389,1683],{"class":296},[263,2391,2392],{"class":265,"line":310},[263,2393,394],{"class":296},[263,2395,2396],{"class":265,"line":317},[263,2397,307],{"emptyLinePlaceholder":306},[263,2399,2400,2402,2404,2406,2408,2410,2412,2414,2416,2418,2420,2422],{"class":265,"line":331},[263,2401,1696],{"class":353},[263,2403,468],{"class":296},[263,2405,471],{"class":353},[263,2407,474],{"class":296},[263,2409,477],{"class":353},[263,2411,383],{"class":353},[263,2413,482],{"class":269},[263,2415,363],{"class":296},[263,2417,487],{"class":353},[263,2419,490],{"class":296},[263,2421,493],{"class":269},[263,2423,496],{"class":296},[263,2425,2426],{"class":265,"line":463},[263,2427,307],{"emptyLinePlaceholder":306},[263,2429,2430,2432,2434,2436,2438,2440,2442],{"class":265,"line":499},[263,2431,533],{"class":353},[263,2433,589],{"class":273},[263,2435,380],{"class":353},[263,2437,448],{"class":353},[263,2439,490],{"class":296},[263,2441,507],{"class":269},[263,2443,510],{"class":296},[251,2445,2446],{"v-slot:vue":253},[255,2447,2449],{"className":661,"code":2448,"language":663,"meta":253,"style":253},"\u003Cscript setup>\nconst config = useRuntimeConfig();\nconst pending = ref(false);\n\nasync function markRead() {\n  pending.value = true;\n  try {\n    return await $fetch(\"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications\", {\n      method: \"PATCH\",\n      headers: { \"X-API-Key\": config.lokalBoardsKey },\n      query: { cardId: 501 },\n    });\n  } finally {\n    pending.value = false;\n  }\n}\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cbutton :disabled=\"pending\" @click=\"markRead()\">Mark read\u003C\u002Fbutton>\n\u003C\u002Ftemplate>\n",[32,2450,2451,2461,2473,2490,2494,2506,2517,2524,2538,2547,2556,2566,2571,2581,2593,2598,2602,2610,2614,2622,2650],{"__ignoreMap":253},[263,2452,2453,2455,2457,2459],{"class":265,"line":266},[263,2454,670],{"class":296},[263,2456,674],{"class":673},[263,2458,677],{"class":269},[263,2460,680],{"class":296},[263,2462,2463,2465,2467,2469,2471],{"class":265,"line":287},[263,2464,533],{"class":353},[263,2466,687],{"class":273},[263,2468,380],{"class":353},[263,2470,692],{"class":269},[263,2472,510],{"class":296},[263,2474,2475,2477,2480,2482,2484,2486,2488],{"class":265,"line":303},[263,2476,533],{"class":353},[263,2478,2479],{"class":273}," pending",[263,2481,380],{"class":353},[263,2483,710],{"class":269},[263,2485,363],{"class":296},[263,2487,223],{"class":273},[263,2489,394],{"class":296},[263,2491,2492],{"class":265,"line":310},[263,2493,307],{"emptyLinePlaceholder":306},[263,2495,2496,2498,2500,2503],{"class":265,"line":317},[263,2497,354],{"class":353},[263,2499,357],{"class":353},[263,2501,2502],{"class":269}," markRead",[263,2504,2505],{"class":296},"() {\n",[263,2507,2508,2511,2513,2515],{"class":265,"line":331},[263,2509,2510],{"class":296},"  pending.value ",[263,2512,561],{"class":353},[263,2514,564],{"class":273},[263,2516,567],{"class":296},[263,2518,2519,2522],{"class":265,"line":463},[263,2520,2521],{"class":353},"  try",[263,2523,1151],{"class":296},[263,2525,2526,2528,2530,2532,2534,2536],{"class":265,"line":499},[263,2527,2145],{"class":353},[263,2529,448],{"class":353},[263,2531,780],{"class":269},[263,2533,363],{"class":296},[263,2535,391],{"class":277},[263,2537,787],{"class":296},[263,2539,2540,2543,2545],{"class":265,"line":513},[263,2541,2542],{"class":296},"      method: ",[263,2544,2382],{"class":277},[263,2546,1673],{"class":296},[263,2548,2549,2552,2554],{"class":265,"line":519},[263,2550,2551],{"class":296},"      headers: { ",[263,2553,457],{"class":277},[263,2555,797],{"class":296},[263,2557,2558,2561,2564],{"class":265,"line":524},[263,2559,2560],{"class":296},"      query: { cardId: ",[263,2562,2563],{"class":273},"501",[263,2565,1841],{"class":296},[263,2567,2568],{"class":265,"line":530},[263,2569,2570],{"class":296},"    });\n",[263,2572,2573,2576,2579],{"class":265,"line":544},[263,2574,2575],{"class":296},"  } ",[263,2577,2578],{"class":353},"finally",[263,2580,1151],{"class":296},[263,2582,2583,2586,2588,2591],{"class":265,"line":553},[263,2584,2585],{"class":296},"    pending.value ",[263,2587,561],{"class":353},[263,2589,2590],{"class":273}," false",[263,2592,567],{"class":296},[263,2594,2595],{"class":265,"line":570},[263,2596,2597],{"class":296},"  }\n",[263,2599,2600],{"class":265,"line":575},[263,2601,516],{"class":296},[263,2603,2604,2606,2608],{"class":265,"line":584},[263,2605,894],{"class":296},[263,2607,674],{"class":673},[263,2609,680],{"class":296},[263,2611,2612],{"class":265,"line":601},[263,2613,307],{"emptyLinePlaceholder":306},[263,2615,2616,2618,2620],{"class":265,"line":618},[263,2617,670],{"class":296},[263,2619,251],{"class":673},[263,2621,680],{"class":296},[263,2623,2624,2626,2628,2631,2633,2636,2638,2640,2643,2646,2648],{"class":265,"line":629},[263,2625,918],{"class":296},[263,2627,987],{"class":673},[263,2629,2630],{"class":269}," :disabled",[263,2632,561],{"class":296},[263,2634,2635],{"class":277},"\"pending\"",[263,2637,998],{"class":269},[263,2639,561],{"class":296},[263,2641,2642],{"class":277},"\"markRead()\"",[263,2644,2645],{"class":296},">Mark read\u003C\u002F",[263,2647,987],{"class":673},[263,2649,680],{"class":296},[263,2651,2652,2654,2656],{"class":265,"line":654},[263,2653,894],{"class":296},[263,2655,251],{"class":673},[263,2657,680],{"class":296},[251,2659,2660],{"v-slot:react":253},[255,2661,2663],{"className":1024,"code":2662,"language":1026,"meta":253,"style":253},"import { useState } from \"react\";\n\nexport function Example({ apiKey }) {\n  const [pending, setPending] = useState(false);\n\n  async function markRead() {\n    setPending(true);\n\n    const response = await fetch(\n      \"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?cardId=501\",\n      { method: \"PATCH\", headers: { \"X-API-Key\": apiKey } },\n    );\n\n    setPending(false);\n    return response.json();\n  }\n\n  return (\n    \u003Cbutton disabled={pending} onClick={markRead}>\n      Mark read\n    \u003C\u002Fbutton>\n  );\n}\n",[32,2664,2665,2678,2682,2696,2722,2726,2737,2749,2753,2767,2774,2787,2792,2796,2806,2816,2820,2824,2830,2852,2857,2866,2870],{"__ignoreMap":253},[263,2666,2667,2669,2672,2674,2676],{"class":265,"line":266},[263,2668,1033],{"class":353},[263,2670,2671],{"class":296}," { useState } ",[263,2673,1039],{"class":353},[263,2675,1042],{"class":277},[263,2677,567],{"class":296},[263,2679,2680],{"class":265,"line":287},[263,2681,307],{"emptyLinePlaceholder":306},[263,2683,2684,2686,2688,2690,2692,2694],{"class":265,"line":303},[263,2685,1053],{"class":353},[263,2687,357],{"class":353},[263,2689,1058],{"class":269},[263,2691,1061],{"class":296},[263,2693,1064],{"class":366},[263,2695,1067],{"class":296},[263,2697,2698,2700,2702,2705,2707,2710,2712,2714,2716,2718,2720],{"class":265,"line":310},[263,2699,374],{"class":353},[263,2701,835],{"class":296},[263,2703,2704],{"class":273},"pending",[263,2706,178],{"class":296},[263,2708,2709],{"class":273},"setPending",[263,2711,1083],{"class":296},[263,2713,561],{"class":353},[263,2715,1088],{"class":269},[263,2717,363],{"class":296},[263,2719,223],{"class":273},[263,2721,394],{"class":296},[263,2723,2724],{"class":265,"line":317},[263,2725,307],{"emptyLinePlaceholder":306},[263,2727,2728,2731,2733,2735],{"class":265,"line":331},[263,2729,2730],{"class":353},"  async",[263,2732,357],{"class":353},[263,2734,2502],{"class":269},[263,2736,2505],{"class":296},[263,2738,2739,2742,2744,2747],{"class":265,"line":463},[263,2740,2741],{"class":269},"    setPending",[263,2743,363],{"class":296},[263,2745,2746],{"class":273},"true",[263,2748,394],{"class":296},[263,2750,2751],{"class":265,"line":499},[263,2752,307],{"emptyLinePlaceholder":306},[263,2754,2755,2757,2759,2761,2763,2765],{"class":265,"line":513},[263,2756,2003],{"class":353},[263,2758,443],{"class":273},[263,2760,380],{"class":353},[263,2762,448],{"class":353},[263,2764,451],{"class":269},[263,2766,1133],{"class":296},[263,2768,2769,2772],{"class":265,"line":519},[263,2770,2771],{"class":277},"      \"https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?cardId=501\"",[263,2773,1673],{"class":296},[263,2775,2776,2779,2781,2783,2785],{"class":265,"line":524},[263,2777,2778],{"class":296},"      { method: ",[263,2780,2382],{"class":277},[263,2782,2385],{"class":296},[263,2784,457],{"class":277},[263,2786,1683],{"class":296},[263,2788,2789],{"class":265,"line":530},[263,2790,2791],{"class":296},"    );\n",[263,2793,2794],{"class":265,"line":544},[263,2795,307],{"emptyLinePlaceholder":306},[263,2797,2798,2800,2802,2804],{"class":265,"line":553},[263,2799,2741],{"class":269},[263,2801,363],{"class":296},[263,2803,223],{"class":273},[263,2805,394],{"class":296},[263,2807,2808,2810,2812,2814],{"class":265,"line":570},[263,2809,2145],{"class":353},[263,2811,490],{"class":296},[263,2813,507],{"class":269},[263,2815,510],{"class":296},[263,2817,2818],{"class":265,"line":575},[263,2819,2597],{"class":296},[263,2821,2822],{"class":265,"line":584},[263,2823,307],{"emptyLinePlaceholder":306},[263,2825,2826,2828],{"class":265,"line":601},[263,2827,502],{"class":353},[263,2829,1364],{"class":296},[263,2831,2832,2834,2836,2839,2841,2844,2847,2849],{"class":265,"line":618},[263,2833,943],{"class":296},[263,2835,987],{"class":673},[263,2837,2838],{"class":269}," disabled",[263,2840,561],{"class":353},[263,2842,2843],{"class":296},"{pending} ",[263,2845,2846],{"class":269},"onClick",[263,2848,561],{"class":353},[263,2850,2851],{"class":296},"{markRead}>\n",[263,2853,2854],{"class":265,"line":629},[263,2855,2856],{"class":296},"      Mark read\n",[263,2858,2859,2862,2864],{"class":265,"line":654},[263,2860,2861],{"class":296},"    \u003C\u002F",[263,2863,987],{"class":673},[263,2865,680],{"class":296},[263,2867,2868],{"class":265,"line":891},[263,2869,1325],{"class":296},[263,2871,2872],{"class":265,"line":901},[263,2873,516],{"class":296},[251,2875,2876],{"v-slot:php":253},[255,2877,2879],{"className":1511,"code":2878,"language":1513,"meta":253,"style":253},"\u003C?php\n\n$ch = curl_init('https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?cardId=501');\n\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n    'X-API-Key: ' . $apiKey,\n]);\n\n$response = json_decode(curl_exec($ch), true);\ncurl_close($ch);\n",[32,2880,2881,2885,2889,2894,2898,2903,2907,2911,2915,2919,2923,2927],{"__ignoreMap":253},[263,2882,2883],{"class":265,"line":266},[263,2884,1520],{},[263,2886,2887],{"class":265,"line":287},[263,2888,307],{"emptyLinePlaceholder":306},[263,2890,2891],{"class":265,"line":303},[263,2892,2893],{},"$ch = curl_init('https:\u002F\u002Fboards.example.com\u002Fapi\u002Fdata\u002Fnotifications?cardId=501');\n",[263,2895,2896],{"class":265,"line":310},[263,2897,307],{"emptyLinePlaceholder":306},[263,2899,2900],{"class":265,"line":317},[263,2901,2902],{},"curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');\n",[263,2904,2905],{"class":265,"line":331},[263,2906,1538],{},[263,2908,2909],{"class":265,"line":463},[263,2910,1543],{},[263,2912,2913],{"class":265,"line":499},[263,2914,1548],{},[263,2916,2917],{"class":265,"line":513},[263,2918,1553],{},[263,2920,2921],{"class":265,"line":519},[263,2922,307],{"emptyLinePlaceholder":306},[263,2924,2925],{"class":265,"line":524},[263,2926,1562],{},[263,2928,2929],{"class":265,"line":530},[263,2930,1567],{},[2932,2933,2934],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":253,"searchDepth":287,"depth":287,"links":2936},[2937,2942],{"id":23,"depth":287,"text":24,"children":2938},[2939,2940,2941],{"id":46,"depth":303,"text":47},{"id":147,"depth":303,"text":148},{"id":1584,"depth":303,"text":1585},{"id":2250,"depth":287,"text":2251,"children":2943},[2944],{"id":2257,"depth":303,"text":47},"md",{},"\u002Fapi\u002Fnotifications",{"title":5,"description":16},"api\u002F12.notifications","9bbVFv0DAw3eFBYInmwuSqvYUn09by5bZvXkFDg7CU0",[2952],{"title":2953,"path":2954,"stem":2955,"children":2956},"Docs","\u002Fdocs","docs",[2957,2960,2964,2968,2972,2976,2980,2984,2988,2992,2996,3000,3004],{"title":2958,"path":2954,"stem":2959},"Getting started","docs\u002Findex",{"title":2961,"path":2962,"stem":2963},"Boards","\u002Fdocs\u002Fboards","docs\u002F02.boards",{"title":2965,"path":2966,"stem":2967},"Areas","\u002Fdocs\u002Fareas","docs\u002F03.areas",{"title":2969,"path":2970,"stem":2971},"Cards","\u002Fdocs\u002Fcards","docs\u002F04.cards",{"title":2973,"path":2974,"stem":2975},"Comments","\u002Fdocs\u002Fcomments","docs\u002F05.comments",{"title":2977,"path":2978,"stem":2979},"Users","\u002Fdocs\u002Fusers","docs\u002F06.users",{"title":2981,"path":2982,"stem":2983},"Disable Signup","\u002Fdocs\u002Fdisable-signup","docs\u002F07.disable-signup",{"title":2985,"path":2986,"stem":2987},"Single Sign-On","\u002Fdocs\u002Fsingle-sign-on","docs\u002F08.single-sign-on",{"title":2989,"path":2990,"stem":2991},"Adjust Colors","\u002Fdocs\u002Fadjust-colors","docs\u002F09.adjust-colors",{"title":2993,"path":2994,"stem":2995},"MCP Server","\u002Fdocs\u002Fmcp-server","docs\u002F10.mcp-server",{"title":2997,"path":2998,"stem":2999},"Migration","\u002Fdocs\u002Fmigration","docs\u002F11.migration",{"title":3001,"path":3002,"stem":3003},"Health Check","\u002Fdocs\u002Fhealth-check","docs\u002F12.health-check",{"title":3005,"path":3006,"stem":3007},"Contributing","\u002Fdocs\u002Fcontributing","docs\u002F13.contributing",[3009],{"title":3010,"path":3011,"stem":3012,"children":3013},"Api","\u002Fapi","api",[3014,3017,3020,3024,3027,3031,3034,3038,3042,3046,3050,3054],{"title":3015,"path":3011,"stem":3016},"Authentication","api\u002Findex",{"title":2961,"path":3018,"stem":3019},"\u002Fapi\u002Fboards","api\u002F02.boards",{"title":3021,"path":3022,"stem":3023},"Board","\u002Fapi\u002Fboard","api\u002F03.board",{"title":2965,"path":3025,"stem":3026},"\u002Fapi\u002Fareas","api\u002F04.areas",{"title":3028,"path":3029,"stem":3030},"Area","\u002Fapi\u002Farea","api\u002F05.area",{"title":2969,"path":3032,"stem":3033},"\u002Fapi\u002Fcards","api\u002F06.cards",{"title":3035,"path":3036,"stem":3037},"Card","\u002Fapi\u002Fcard","api\u002F07.card",{"title":3039,"path":3040,"stem":3041},"Move a card","\u002Fapi\u002Fcard-move","api\u002F08.card-move",{"title":3043,"path":3044,"stem":3045},"Order a card","\u002Fapi\u002Fcard-order","api\u002F09.card-order",{"title":3047,"path":3048,"stem":3049},"Comment","\u002Fapi\u002Fcomment","api\u002F10.comment",{"title":3051,"path":3052,"stem":3053},"Invite","\u002Fapi\u002Finvite","api\u002F11.invite",{"title":5,"path":2947,"stem":2949},1788364932409]